98 lines
2.1 KiB
TypeScript
98 lines
2.1 KiB
TypeScript
import { Storage } from "@plasmohq/storage"
|
|
|
|
const storage = new Storage()
|
|
|
|
const DEFAULT_TTS_PROVIDER = "browser"
|
|
|
|
const AVAILABLE_TTS_PROVIDERS = ["browser"] as const
|
|
|
|
export const getTTSProvider = async (): Promise<
|
|
(typeof AVAILABLE_TTS_PROVIDERS)[number]
|
|
> => {
|
|
const ttsProvider = await storage.get("ttsProvider")
|
|
if (!ttsProvider || ttsProvider.length === 0) {
|
|
return DEFAULT_TTS_PROVIDER
|
|
}
|
|
return ttsProvider as (typeof AVAILABLE_TTS_PROVIDERS)[number]
|
|
}
|
|
|
|
export const setTTSProvider = async (ttsProvider: string) => {
|
|
await storage.set("ttsProvider", ttsProvider)
|
|
}
|
|
|
|
export const getBrowserTTSVoices = async () => {
|
|
const tts = await chrome.tts.getVoices()
|
|
return tts
|
|
}
|
|
|
|
export const getVoice = async () => {
|
|
const voice = await storage.get("voice")
|
|
return voice
|
|
}
|
|
|
|
export const setVoice = async (voice: string) => {
|
|
await storage.set("voice", voice)
|
|
}
|
|
|
|
export const isTTSEnabled = async () => {
|
|
const data = await storage.get("isTTSEnabled")
|
|
if(!data || data.length === 0) {
|
|
return true
|
|
}
|
|
return data === "true"
|
|
}
|
|
|
|
export const setTTSEnabled = async (isTTSEnabled: boolean) => {
|
|
await storage.set("isTTSEnabled", isTTSEnabled.toString())
|
|
}
|
|
|
|
export const isSSMLEnabled = async () => {
|
|
const data = await storage.get("isSSMLEnabled")
|
|
if(!data || data.length === 0) {
|
|
return true
|
|
}
|
|
return data === "true"
|
|
}
|
|
|
|
export const setSSMLEnabled = async (isSSMLEnabled: boolean) => {
|
|
await storage.set("isSSMLEnabled", isSSMLEnabled.toString())
|
|
}
|
|
|
|
export const getTTSSettings = async () => {
|
|
const [ttsEnabled, ttsProvider, browserTTSVoices, voice, ssmlEnabled] =
|
|
await Promise.all([
|
|
isTTSEnabled(),
|
|
getTTSProvider(),
|
|
getBrowserTTSVoices(),
|
|
getVoice(),
|
|
isSSMLEnabled()
|
|
])
|
|
|
|
return {
|
|
ttsEnabled,
|
|
ttsProvider,
|
|
browserTTSVoices,
|
|
voice,
|
|
ssmlEnabled
|
|
}
|
|
}
|
|
|
|
export const setTTSSettings = async ({
|
|
ttsEnabled,
|
|
ttsProvider,
|
|
voice,
|
|
ssmlEnabled
|
|
}: {
|
|
ttsEnabled: boolean
|
|
ttsProvider: string
|
|
voice: string
|
|
ssmlEnabled: boolean
|
|
}) => {
|
|
await Promise.all([
|
|
setTTSEnabled(ttsEnabled),
|
|
setTTSProvider(ttsProvider),
|
|
setVoice(voice),
|
|
setSSMLEnabled(ssmlEnabled)
|
|
])
|
|
}
|