From 3c880199ae2ce22c412dd49a2596d0e0a70a511f Mon Sep 17 00:00:00 2001 From: landaiqing Date: Thu, 19 Jun 2025 01:05:08 +0800 Subject: [PATCH] :recycle: Refactor code --- .../voidraft/internal/models/models.ts | 78 ----- frontend/components.d.ts | 1 + frontend/src/App.vue | 5 +- .../toolbar/BlockLanguageSelector.vue | 317 ++++++++++++++++++ frontend/src/components/toolbar/Toolbar.vue | 169 +--------- frontend/src/composables/useEditorTheme.ts | 189 ----------- frontend/src/composables/useSystemTheme.ts | 35 -- frontend/src/composables/useTheme.ts | 59 ---- frontend/src/i18n/locales/en-US.ts | 5 +- frontend/src/i18n/locales/zh-CN.ts | 5 +- frontend/src/stores/configStore.ts | 17 +- frontend/src/stores/editorStore.ts | 32 +- frontend/src/stores/themeStore.ts | 36 ++ frontend/src/types/editor.d.ts | 5 - frontend/src/types/index.ts | 4 - frontend/src/types/theme.ts | 204 ----------- .../editor/extensions/autoSaveExtension.ts | 4 +- .../extensions/codeblock/decorations.ts | 8 +- .../editor/extensions/codeblock/index.ts | 9 - .../editor/extensions/codeblock/parser.ts | 4 +- .../editor/extensions/codeblock/styles.css | 224 ------------- frontend/src/views/editor/extensions/index.ts | 1 + .../views/editor/extensions/statsExtension.ts | 3 +- .../views/editor/extensions/themeExtension.ts | 53 +++ frontend/src/views/editor/theme/aura.ts | 128 ------- frontend/src/views/editor/theme/dark.ts | 237 +++++++++++++ .../src/views/editor/theme/default-dark.ts | 149 -------- frontend/src/views/editor/theme/dracula.ts | 128 ------- .../src/views/editor/theme/github-dark.ts | 128 ------- .../src/views/editor/theme/github-light.ts | 128 ------- frontend/src/views/editor/theme/light.ts | 239 +++++++++++++ .../src/views/editor/theme/material-dark.ts | 128 ------- .../src/views/editor/theme/material-light.ts | 128 ------- .../src/views/editor/theme/solarized-dark.ts | 128 ------- .../src/views/editor/theme/solarized-light.ts | 128 ------- .../src/views/editor/theme/tokyo-night-day.ts | 128 ------- .../views/editor/theme/tokyo-night-storm.ts | 128 ------- .../src/views/editor/theme/tokyo-night.ts | 128 ------- .../views/settings/pages/AppearancePage.vue | 285 +--------------- internal/models/config.go | 34 +- internal/services/config_service.go | 2 - 41 files changed, 932 insertions(+), 2889 deletions(-) create mode 100644 frontend/src/components/toolbar/BlockLanguageSelector.vue delete mode 100644 frontend/src/composables/useEditorTheme.ts delete mode 100644 frontend/src/composables/useSystemTheme.ts delete mode 100644 frontend/src/composables/useTheme.ts create mode 100644 frontend/src/stores/themeStore.ts delete mode 100644 frontend/src/types/editor.d.ts delete mode 100644 frontend/src/types/index.ts delete mode 100644 frontend/src/types/theme.ts delete mode 100644 frontend/src/views/editor/extensions/codeblock/styles.css create mode 100644 frontend/src/views/editor/extensions/themeExtension.ts delete mode 100644 frontend/src/views/editor/theme/aura.ts create mode 100644 frontend/src/views/editor/theme/dark.ts delete mode 100644 frontend/src/views/editor/theme/default-dark.ts delete mode 100644 frontend/src/views/editor/theme/dracula.ts delete mode 100644 frontend/src/views/editor/theme/github-dark.ts delete mode 100644 frontend/src/views/editor/theme/github-light.ts create mode 100644 frontend/src/views/editor/theme/light.ts delete mode 100644 frontend/src/views/editor/theme/material-dark.ts delete mode 100644 frontend/src/views/editor/theme/material-light.ts delete mode 100644 frontend/src/views/editor/theme/solarized-dark.ts delete mode 100644 frontend/src/views/editor/theme/solarized-light.ts delete mode 100644 frontend/src/views/editor/theme/tokyo-night-day.ts delete mode 100644 frontend/src/views/editor/theme/tokyo-night-storm.ts delete mode 100644 frontend/src/views/editor/theme/tokyo-night.ts diff --git a/frontend/bindings/voidraft/internal/models/models.ts b/frontend/bindings/voidraft/internal/models/models.ts index 6b1ebe5..a5950c0 100644 --- a/frontend/bindings/voidraft/internal/models/models.ts +++ b/frontend/bindings/voidraft/internal/models/models.ts @@ -109,11 +109,6 @@ export class AppearanceConfig { */ "language": LanguageType; - /** - * 编辑器主题 - */ - "theme": ThemeType; - /** * 系统界面主题 */ @@ -124,9 +119,6 @@ export class AppearanceConfig { if (!("language" in $$source)) { this["language"] = ("" as LanguageType); } - if (!("theme" in $$source)) { - this["theme"] = ("" as ThemeType); - } if (!("systemTheme" in $$source)) { this["systemTheme"] = ("" as SystemThemeType); } @@ -562,76 +554,6 @@ export enum TabType { TabTypeTab = "tab", }; -/** - * ThemeType 主题类型定义 - */ -export enum ThemeType { - /** - * The Go zero value for the underlying type of the enum. - */ - $zero = "", - - /** - * ThemeDefaultDark 默认深色主题 - */ - ThemeDefaultDark = "default-dark", - - /** - * ThemeDracula Dracula主题 - */ - ThemeDracula = "dracula", - - /** - * ThemeAura Aura主题 - */ - ThemeAura = "aura", - - /** - * ThemeGithubDark GitHub深色主题 - */ - ThemeGithubDark = "github-dark", - - /** - * ThemeGithubLight GitHub浅色主题 - */ - ThemeGithubLight = "github-light", - - /** - * ThemeMaterialDark Material深色主题 - */ - ThemeMaterialDark = "material-dark", - - /** - * ThemeMaterialLight Material浅色主题 - */ - ThemeMaterialLight = "material-light", - - /** - * ThemeSolarizedDark Solarized深色主题 - */ - ThemeSolarizedDark = "solarized-dark", - - /** - * ThemeSolarizedLight Solarized浅色主题 - */ - ThemeSolarizedLight = "solarized-light", - - /** - * ThemeTokyoNight Tokyo Night主题 - */ - ThemeTokyoNight = "tokyo-night", - - /** - * ThemeTokyoNightStorm Tokyo Night Storm主题 - */ - ThemeTokyoNightStorm = "tokyo-night-storm", - - /** - * ThemeTokyoNightDay Tokyo Night Day主题 - */ - ThemeTokyoNightDay = "tokyo-night-day", -}; - /** * UpdatesConfig 更新设置配置 */ diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 3baa618..6719df7 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -8,6 +8,7 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + BlockLanguageSelector: typeof import('./src/components/toolbar/BlockLanguageSelector.vue')['default'] LinuxTitleBar: typeof import('./src/components/titlebar/LinuxTitleBar.vue')['default'] MacOSTitleBar: typeof import('./src/components/titlebar/MacOSTitleBar.vue')['default'] MemoryMonitor: typeof import('./src/components/monitor/MemoryMonitor.vue')['default'] diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b332d48..eba1417 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -2,23 +2,20 @@ import { onMounted } from 'vue'; import { useConfigStore } from '@/stores/configStore'; import { useSystemStore } from '@/stores/systemStore'; -import { useSystemTheme } from '@/composables/useSystemTheme'; import WindowTitleBar from '@/components/titlebar/WindowTitleBar.vue'; const configStore = useConfigStore(); const systemStore = useSystemStore(); -const { setTheme } = useSystemTheme(); // 应用启动时加载配置和初始化系统信息 onMounted(async () => { // 并行初始化配置和系统信息 await Promise.all([ configStore.initConfig(), - systemStore.initializeSystemInfo() + systemStore.initializeSystemInfo(), ]); await configStore.initializeLanguage(); - setTheme(configStore.config.appearance.systemTheme); }); diff --git a/frontend/src/components/toolbar/BlockLanguageSelector.vue b/frontend/src/components/toolbar/BlockLanguageSelector.vue new file mode 100644 index 0000000..4fc2ec6 --- /dev/null +++ b/frontend/src/components/toolbar/BlockLanguageSelector.vue @@ -0,0 +1,317 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/toolbar/Toolbar.vue b/frontend/src/components/toolbar/Toolbar.vue index e49b46b..fc1ea03 100644 --- a/frontend/src/components/toolbar/Toolbar.vue +++ b/frontend/src/components/toolbar/Toolbar.vue @@ -6,33 +6,15 @@ import { useEditorStore } from '@/stores/editorStore'; import { useErrorHandler } from '@/utils/errorHandler'; import * as runtime from '@wailsio/runtime'; import { useRouter } from 'vue-router'; +import BlockLanguageSelector from './BlockLanguageSelector.vue'; const editorStore = useEditorStore(); const configStore = useConfigStore(); const { safeCall } = useErrorHandler(); -const { t, locale } = useI18n(); +const { t } = useI18n(); const router = useRouter(); -// 语言下拉菜单 -const showLanguageMenu = ref(false); -const supportedLanguages = [ - { code: 'zh-CN', name: '简体中文' }, - { code: 'en-US', name: 'English' } -]; - -const toggleLanguageMenu = () => { - showLanguageMenu.value = !showLanguageMenu.value; -}; - -const closeLanguageMenu = () => { - showLanguageMenu.value = false; -}; - -const changeLanguage = async (langCode: string) => { - await safeCall(() => configStore.setLanguage(langCode as any), 'language.changeFailed'); - closeLanguageMenu(); -}; // 设置窗口置顶 const setWindowAlwaysOnTop = async (isTop: boolean) => { @@ -95,20 +77,9 @@ watch(isLoaded, async (newLoaded) => { {{ configStore.config.editing.fontSize }}px - - - - {{ t('toolbar.tabType.' + (configStore.config.editing.tabType === 'spaces' ? 'spaces' : 'tab')) }} - - - - {{ configStore.config.editing.tabSize }} - - - + + +
{
- -
- -
-
- {{ t(`languages.${lang.code}`) }} -
-
-
+