Skip to content

Commit fb2c42d

Browse files
committed
Convert useVoiceData() to TS, remove leftover enabledVoices stuff
1 parent 6952364 commit fb2c42d

2 files changed

Lines changed: 21 additions & 28 deletions

File tree

src/common/read-aloud/components/use-voice-data.js renamed to src/common/read-aloud/components/use-voice-data.ts

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
import { useEffect, useMemo, useState } from 'react';
22
import { BrowserReadAloudProvider } from '../browser/provider';
3+
import { BrowserReadAloudVoice } from '../browser/voice';
4+
import { ErrorState } from '../controller';
35
import { RemoteReadAloudProvider, RemoteVoicesError } from '../remote/provider';
4-
import { resolveLanguage } from '../lang';
5-
import { getSupportedLanguages } from '../voice';
6+
import { RemoteInterface } from '../remote';
7+
import { RemoteReadAloudVoice } from '../remote/voice';
8+
import { ReadAloudVoice, getSupportedLanguages } from '../voice';
69

710
/**
811
* Hook that loads all voices and manages language state.
912
*/
10-
export function useVoiceData({ lang, remoteInterface, persistedEnabledVoices }) {
11-
let [allBrowserVoices, setAllBrowserVoices] = useState(null);
12-
let [allRemoteVoices, setAllRemoteVoices] = useState(null);
13-
let [browserVoicesError, setBrowserVoicesError] = useState(null);
14-
let [remoteVoicesError, setRemoteVoicesError] = useState(null);
13+
export function useVoiceData({ lang, remoteInterface }: {
14+
lang: string;
15+
remoteInterface?: RemoteInterface;
16+
}) {
17+
let [allBrowserVoices, setAllBrowserVoices] = useState<BrowserReadAloudVoice[] | null>(null);
18+
let [allRemoteVoices, setAllRemoteVoices] = useState<RemoteReadAloudVoice[] | null>(null);
19+
let [browserVoicesError, setBrowserVoicesError] = useState<ErrorState | null>(null);
20+
let [remoteVoicesError, setRemoteVoicesError] = useState<ErrorState | null>(null);
1521
let [selectedLang, setSelectedLang] = useState(lang);
1622

1723
// Fetch browser voices
@@ -35,15 +41,17 @@ export function useVoiceData({ lang, remoteInterface, persistedEnabledVoices })
3541
}
3642
}
3743
fetchVoices();
38-
return () => cancelled = true;
44+
return () => {
45+
cancelled = true;
46+
};
3947
}, []);
4048

4149
// Fetch remote voices
4250
useEffect(() => {
4351
if (!remoteInterface) return undefined;
4452
let cancelled = false;
4553
async function fetchVoices() {
46-
let remoteProvider = new RemoteReadAloudProvider(remoteInterface);
54+
let remoteProvider = new RemoteReadAloudProvider(remoteInterface!);
4755
try {
4856
let voices = await remoteProvider.getVoices();
4957
if (!cancelled) {
@@ -60,12 +68,14 @@ export function useVoiceData({ lang, remoteInterface, persistedEnabledVoices })
6068
}
6169
}
6270
fetchVoices();
63-
return () => cancelled = true;
71+
return () => {
72+
cancelled = true;
73+
};
6474
}, [remoteInterface]);
6575

6676
let loaded = allBrowserVoices !== null && (allRemoteVoices !== null || !remoteInterface);
6777

68-
let allVoices = useMemo(
78+
let allVoices: ReadAloudVoice[] = useMemo(
6979
() => [...(allRemoteVoices || []), ...(allBrowserVoices || [])],
7080
[allRemoteVoices, allBrowserVoices]
7181
);
@@ -75,13 +85,6 @@ export function useVoiceData({ lang, remoteInterface, persistedEnabledVoices })
7585
[allVoices]
7686
);
7787

78-
let enabledVoices = useMemo(() => {
79-
if (!persistedEnabledVoices) return null;
80-
let resolvedLang = resolveLanguage(selectedLang, [...persistedEnabledVoices.keys()]);
81-
if (!resolvedLang) return null;
82-
return persistedEnabledVoices.get(resolvedLang) ?? null;
83-
}, [persistedEnabledVoices, selectedLang]);
84-
8588
return {
8689
allBrowserVoices,
8790
allRemoteVoices,
@@ -92,7 +95,6 @@ export function useVoiceData({ lang, remoteInterface, persistedEnabledVoices })
9295
selectedLang,
9396
availableLanguages,
9497
effectiveLang: selectedLang,
95-
enabledVoices,
9698
handleLangChange: setSelectedLang,
9799
};
98100
}

src/index.read-aloud-first-run.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ window.createReadAloudFirstRun = (options) => {
2222

2323
let popupRef = createRef();
2424
let root = createRoot(document.getElementById('read-aloud-first-run'));
25-
let enabledVoices = new Map(Object.entries(options.readAloudEnabledVoices || {}));
2625

2726
function render() {
2827
root.render(
@@ -33,7 +32,6 @@ window.createReadAloudFirstRun = (options) => {
3332
lang={options.lang}
3433
remoteInterface={options.remoteInterface}
3534
loggedIn={options.loggedIn}
36-
persistedEnabledVoices={enabledVoices}
3735
onOpenVoicesPopup={options.onOpenVoicesPopup}
3836
onPurchaseCredits={options.onPurchaseCredits}
3937
onLogIn={options.onLogIn}
@@ -51,12 +49,5 @@ window.createReadAloudFirstRun = (options) => {
5149
return pendingResult;
5250
};
5351

54-
// Exposed so the parent can push updated enabled voices
55-
// (e.g. after the Manage Voices dialog closes)
56-
window.updateEnabledVoices = (data) => {
57-
enabledVoices = new Map(Object.entries(data || {}));
58-
render();
59-
};
60-
6152
flushSync(() => render());
6253
};

0 commit comments

Comments
 (0)