mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-08 06:19:05 +08:00
refactor(translate): add markdown toggle preference and refactor state management
Move markdown toggle state to preferences system and remove direct database operations
This commit is contained in:
parent
9b7094ea4a
commit
c2ee3fff33
@ -399,6 +399,7 @@ export interface PreferenceSchemas {
|
|||||||
'translate.settings.auto_copy': boolean
|
'translate.settings.auto_copy': boolean
|
||||||
// indexedDB/translate
|
// indexedDB/translate
|
||||||
'translate.settings.auto_detection_method': PreferenceTypes.AutoDetectionMethod
|
'translate.settings.auto_detection_method': PreferenceTypes.AutoDetectionMethod
|
||||||
|
'translate.settings.enable_markdown': boolean
|
||||||
// redux/settings/customCss
|
// redux/settings/customCss
|
||||||
'ui.custom_css': string
|
'ui.custom_css': string
|
||||||
// redux/settings/navbarPosition
|
// redux/settings/navbarPosition
|
||||||
@ -660,6 +661,7 @@ export const DefaultPreferences: PreferenceSchemas = {
|
|||||||
'topic.tab.show_time': false,
|
'topic.tab.show_time': false,
|
||||||
'translate.settings.auto_copy': false,
|
'translate.settings.auto_copy': false,
|
||||||
'translate.settings.auto_detection_method': 'franc',
|
'translate.settings.auto_detection_method': 'franc',
|
||||||
|
'translate.settings.enable_markdown': false,
|
||||||
'ui.custom_css': '',
|
'ui.custom_css': '',
|
||||||
'ui.navbar.position': 'top',
|
'ui.navbar.position': 'top',
|
||||||
'ui.sidebar.icons.invisible': [],
|
'ui.sidebar.icons.invisible': [],
|
||||||
|
|||||||
@ -59,11 +59,16 @@ const TranslatePage: FC = () => {
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { translateModel, setTranslateModel } = useDefaultModel()
|
const { translateModel, setTranslateModel } = useDefaultModel()
|
||||||
const { prompt, getLanguageByLangcode, getLanguageLabel } = useTranslate()
|
const { prompt, getLanguageByLangcode, getLanguageLabel } = useTranslate()
|
||||||
const [autoCopy] = usePreference('translate.settings.auto_copy')
|
|
||||||
const { shikiMarkdownIt } = useCodeStyle()
|
const { shikiMarkdownIt } = useCodeStyle()
|
||||||
const { onSelectFile, selecting, clearFiles } = useFiles({ extensions: [...imageExts, ...textExts] })
|
const { onSelectFile, selecting, clearFiles } = useFiles({ extensions: [...imageExts, ...textExts] })
|
||||||
const { ocr } = useOcr()
|
const { ocr } = useOcr()
|
||||||
const { setTimeoutTimer } = useTimer()
|
const { setTimeoutTimer } = useTimer()
|
||||||
|
|
||||||
|
// Preferences
|
||||||
|
const [autoCopy] = usePreference('translate.settings.auto_copy')
|
||||||
|
const [enableMarkdown, setEnableMarkdown] = usePreference('translate.settings.enable_markdown')
|
||||||
|
|
||||||
|
// Cache
|
||||||
const [text, setText] = useCache('translate.input')
|
const [text, setText] = useCache('translate.input')
|
||||||
const [output, setOutput] = useCache('translate.output')
|
const [output, setOutput] = useCache('translate.output')
|
||||||
const [isDetecting, setIsDetecting] = useCache('translate.detecting')
|
const [isDetecting, setIsDetecting] = useCache('translate.detecting')
|
||||||
@ -77,7 +82,6 @@ const TranslatePage: FC = () => {
|
|||||||
const [copied, setCopied] = useTemporaryValue(false, 2000)
|
const [copied, setCopied] = useTemporaryValue(false, 2000)
|
||||||
const [historyDrawerVisible, setHistoryDrawerVisible] = useState(false)
|
const [historyDrawerVisible, setHistoryDrawerVisible] = useState(false)
|
||||||
const [isScrollSyncEnabled, setIsScrollSyncEnabled] = useState(false)
|
const [isScrollSyncEnabled, setIsScrollSyncEnabled] = useState(false)
|
||||||
const [enableMarkdown, setEnableMarkdown] = useState(false)
|
|
||||||
const [settingsVisible, setSettingsVisible] = useState(false)
|
const [settingsVisible, setSettingsVisible] = useState(false)
|
||||||
const [detectedLanguage, setDetectedLanguage] = useState<TranslateLanguage | null>(null)
|
const [detectedLanguage, setDetectedLanguage] = useState<TranslateLanguage | null>(null)
|
||||||
const [sourceLanguage, setSourceLanguage] = useState<TranslateLanguage | 'auto'>(_sourceLanguage)
|
const [sourceLanguage, setSourceLanguage] = useState<TranslateLanguage | 'auto'>(_sourceLanguage)
|
||||||
@ -327,9 +331,6 @@ const TranslatePage: FC = () => {
|
|||||||
|
|
||||||
const scrollSyncSetting = await db.settings.get({ id: 'translate:scroll:sync' })
|
const scrollSyncSetting = await db.settings.get({ id: 'translate:scroll:sync' })
|
||||||
setIsScrollSyncEnabled(scrollSyncSetting ? scrollSyncSetting.value : false)
|
setIsScrollSyncEnabled(scrollSyncSetting ? scrollSyncSetting.value : false)
|
||||||
|
|
||||||
const markdownSetting = await db.settings.get({ id: 'translate:markdown:enabled' })
|
|
||||||
setEnableMarkdown(markdownSetting ? markdownSetting.value : false)
|
|
||||||
})
|
})
|
||||||
}, [getLanguageByLangcode])
|
}, [getLanguageByLangcode])
|
||||||
|
|
||||||
@ -735,8 +736,6 @@ const TranslatePage: FC = () => {
|
|||||||
onClose={() => setSettingsVisible(false)}
|
onClose={() => setSettingsVisible(false)}
|
||||||
isScrollSyncEnabled={isScrollSyncEnabled}
|
isScrollSyncEnabled={isScrollSyncEnabled}
|
||||||
setIsScrollSyncEnabled={setIsScrollSyncEnabled}
|
setIsScrollSyncEnabled={setIsScrollSyncEnabled}
|
||||||
enableMarkdown={enableMarkdown}
|
|
||||||
setEnableMarkdown={setEnableMarkdown}
|
|
||||||
translateModel={translateModel}
|
translateModel={translateModel}
|
||||||
/>
|
/>
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
@ -17,13 +17,12 @@ const TranslateSettings: FC<{
|
|||||||
onClose: () => void
|
onClose: () => void
|
||||||
isScrollSyncEnabled: boolean
|
isScrollSyncEnabled: boolean
|
||||||
setIsScrollSyncEnabled: (value: boolean) => void
|
setIsScrollSyncEnabled: (value: boolean) => void
|
||||||
enableMarkdown: boolean
|
|
||||||
setEnableMarkdown: (value: boolean) => void
|
|
||||||
translateModel: Model | undefined
|
translateModel: Model | undefined
|
||||||
}> = ({ visible, onClose, isScrollSyncEnabled, setIsScrollSyncEnabled, enableMarkdown, setEnableMarkdown }) => {
|
}> = ({ visible, onClose, isScrollSyncEnabled, setIsScrollSyncEnabled }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const [autoCopy, setAutoCopy] = usePreference('translate.settings.auto_copy')
|
const [autoCopy, setAutoCopy] = usePreference('translate.settings.auto_copy')
|
||||||
const [autoDetectionMethod, setAutoDetectionMethod] = usePreference('translate.settings.auto_detection_method')
|
const [autoDetectionMethod, setAutoDetectionMethod] = usePreference('translate.settings.auto_detection_method')
|
||||||
|
const [enableMarkdown, setEnableMarkdown] = usePreference('translate.settings.enable_markdown')
|
||||||
const [bidirectional, setBidirectional] = useCache('translate.bidirectional')
|
const [bidirectional, setBidirectional] = useCache('translate.bidirectional')
|
||||||
const { enabled: isBidirectional } = bidirectional
|
const { enabled: isBidirectional } = bidirectional
|
||||||
const onMoreSetting = () => {
|
const onMoreSetting = () => {
|
||||||
@ -48,7 +47,6 @@ const TranslateSettings: FC<{
|
|||||||
isSelected={enableMarkdown}
|
isSelected={enableMarkdown}
|
||||||
onValueChange={(checked) => {
|
onValueChange={(checked) => {
|
||||||
setEnableMarkdown(checked)
|
setEnableMarkdown(checked)
|
||||||
db.settings.put({ id: 'translate:markdown:enabled', value: checked })
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user