Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PlayerFactory {
- static createPlayer(provider: VoiceProvider) {
- switch (provider) {
- case "local":
- return new LocalVoicePlayer();
- case "gemini":
- return new GeminiVoicePlayer();
- case "sherpa":
- return new SherpaVoicePlayer();
- default:
- throw new Error(`Unknown provider: ${provider}`);
- }
- }
- static createShortPlayer(provider: VoiceProvider) {
- switch (provider) {
- case "local":
- return new ShortLocalVoicePlayer();
- case "gemini":
- return new ShortGeminiVoicePlayer();
- case "sherpa":
- return new ShortSherpaVoicePlayer();
- default:
- throw new Error(`Unknown provider: ${provider}`);
- }
- }
- }
- function useVoicePlayers() {
- const voiceProvider = useAppStore.use.voiceProvider();
- const { setPlayer, setShortPlayer } = useAppActions();
- useEffect(() => {
- const player = PlayerFactory.createPlayer(voiceProvider);
- const shortPlayer = PlayerFactory.createShortPlayer(voiceProvider);
- setPlayer(player);
- setShortPlayer(shortPlayer);
- // Cleanup
- return () => {
- player.cleanup?.();
- shortPlayer.cleanup?.();
- };
- }, [voiceProvider, setPlayer, setShortPlayer]);
- }
Advertisement
Add Comment
Please, Sign In to add comment