refactor: move `tts` to right setting atom
Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
parent
14e37da0ce
commit
120cf43bcd
|
|
@ -18,10 +18,12 @@ const createDefaultSettings = (): GeneralSettings => ({
|
|||
hoverMarkUnread: true,
|
||||
renderMarkUnread: false,
|
||||
// UX
|
||||
// autoHideFeedColumn: true,
|
||||
|
||||
groupByDate: true,
|
||||
// Secure
|
||||
jumpOutLinkWarn: true,
|
||||
// TTS
|
||||
voice: "en-US-AndrewMultilingualNeural",
|
||||
})
|
||||
|
||||
export const {
|
||||
|
|
@ -44,4 +46,5 @@ export const generalServerSyncWhiteListKeys: (keyof GeneralSettings)[] = [
|
|||
"dataPersist",
|
||||
"sendAnonymousData",
|
||||
"language",
|
||||
"voice",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ export const createDefaultSettings = (): UISettings => ({
|
|||
|
||||
opaqueSidebar: false,
|
||||
sidebarShowUnreadCount: true,
|
||||
hideExtraBadge: false,
|
||||
|
||||
// Global UI
|
||||
uiTextSize: 16,
|
||||
|
|
@ -37,9 +38,6 @@ export const createDefaultSettings = (): UISettings => ({
|
|||
pictureViewMasonry: true,
|
||||
pictureViewFilterNoImage: false,
|
||||
wideMode: false,
|
||||
|
||||
// TTS
|
||||
voice: "en-US-AndrewMultilingualNeural",
|
||||
})
|
||||
|
||||
export const {
|
||||
|
|
@ -57,7 +55,6 @@ export const uiServerSyncWhiteListKeys: (keyof UISettings)[] = [
|
|||
"uiFontFamily",
|
||||
"readerFontFamily",
|
||||
"opaqueSidebar",
|
||||
"voice",
|
||||
]
|
||||
|
||||
const isZenModeAtom = atom((get) => {
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ import { defaultResources } from "~/@types/default-resource"
|
|||
import { langLoadingLockMapAtom } from "~/atoms/lang"
|
||||
import {
|
||||
setGeneralSetting,
|
||||
useGeneralSettingKey,
|
||||
useGeneralSettingSelector,
|
||||
useGeneralSettingValue,
|
||||
} from "~/atoms/settings/general"
|
||||
import { createDefaultSettings, setUISetting, useUISettingSelector } from "~/atoms/settings/ui"
|
||||
import { useModalStack } from "~/components/ui/modal/stacked/hooks"
|
||||
import { useProxyValue, useSetProxy } from "~/hooks/biz/useProxySetting"
|
||||
import { fallbackLanguage } from "~/i18n"
|
||||
|
|
@ -190,16 +190,17 @@ export const VoiceSelector = () => {
|
|||
persist: true,
|
||||
},
|
||||
})
|
||||
const voice = useUISettingSelector((state) => state.voice)
|
||||
|
||||
const voice = useGeneralSettingKey("voice")
|
||||
|
||||
return (
|
||||
<div className="-mt-1 mb-3 flex items-center justify-between">
|
||||
<span className="shrink-0 text-sm font-medium">{t("general.voices")}</span>
|
||||
<Select
|
||||
defaultValue={createDefaultSettings().voice}
|
||||
defaultValue={voice}
|
||||
value={voice}
|
||||
onValueChange={(value) => {
|
||||
setUISetting("voice", value)
|
||||
setGeneralSetting("voice", value)
|
||||
}}
|
||||
>
|
||||
<SelectTrigger size="sm" className="w-48">
|
||||
|
|
|
|||
|
|
@ -44,12 +44,6 @@ const useUISettingSync = () => {
|
|||
}
|
||||
return
|
||||
}, [setting.showDockBadge])
|
||||
|
||||
useEffect(() => {
|
||||
if (setting.voice) {
|
||||
tipcClient?.setVoice(setting.voice)
|
||||
}
|
||||
}, [setting.voice])
|
||||
}
|
||||
|
||||
const useUXSettingSync = () => {
|
||||
|
|
@ -78,9 +72,19 @@ const useLanguageSync = () => {
|
|||
}
|
||||
}, [language])
|
||||
}
|
||||
const useGeneralSettingSync = () => {
|
||||
const voice = useGeneralSettingKey("voice")
|
||||
useEffect(() => {
|
||||
if (voice) {
|
||||
tipcClient?.setVoice(voice)
|
||||
}
|
||||
}, [voice])
|
||||
}
|
||||
|
||||
export const SettingSync = () => {
|
||||
useUISettingSync()
|
||||
useUXSettingSync()
|
||||
useLanguageSync()
|
||||
useGeneralSettingSync()
|
||||
return null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ export interface GeneralSettings {
|
|||
renderMarkUnread: boolean
|
||||
groupByDate: boolean
|
||||
jumpOutLinkWarn: boolean
|
||||
// TTS
|
||||
voice: string
|
||||
}
|
||||
|
||||
export interface UISettings {
|
||||
|
|
@ -16,6 +18,7 @@ export interface UISettings {
|
|||
feedColWidth: number
|
||||
opaqueSidebar: boolean
|
||||
sidebarShowUnreadCount: boolean
|
||||
hideExtraBadge: boolean
|
||||
uiTextSize: number
|
||||
showDockBadge: boolean
|
||||
modalOverlay: boolean
|
||||
|
|
@ -35,9 +38,6 @@ export interface UISettings {
|
|||
pictureViewMasonry: boolean
|
||||
pictureViewFilterNoImage: boolean
|
||||
wideMode: boolean
|
||||
|
||||
// tts
|
||||
voice: string
|
||||
}
|
||||
|
||||
export interface IntegrationSettings {
|
||||
|
|
|
|||
Loading…
Reference in New Issue