mirror of
https://github.com/dream-pep/koring-launcher.git
synced 2026-09-12 05:45:18 +08:00
本次提交完成以下变更: 1. 实现完整的更新通道管理功能,支持慢走/跑步两种更新模式,可在设置页切换且配置持久化生效 2. 新增更新调试页面,集成检查更新、版本比对、设置测试版本等调试工具 3. 新增快速打开Chromium DevTools的按钮,方便开发调试 4. 完善自动更新后端逻辑,新增版本比对、测试版本覆盖、通道动态获取等IPC接口 5. 调整GitHub Release构建脚本,修复prerelease版本的命名与发布问题 6. 添加semver依赖与类型定义,完善全量类型声明 7. 更新自动更新文档,补充更新通道相关的设计说明 8. 微调默认配置,添加主题暗黑模式的初始配置
115 lines
4.0 KiB
TypeScript
115 lines
4.0 KiB
TypeScript
import { useEffect } from "react";
|
|
import { RootLayout } from "./layouts/RootLayout";
|
|
import { useRouteStore } from "./stores/routeStore";
|
|
import { useTheme } from "./hooks/useTheme";
|
|
import { useConfigStore } from "./stores/configStore";
|
|
import { syncThemeFromConfig } from "./stores/themeStore";
|
|
import { syncA11yFromConfig } from "./stores/a11yStore";
|
|
import { syncBackgroundFromConfig } from "./stores/backgroundStore";
|
|
import { useAuthStore } from "./stores/authStore";
|
|
import { useKoringAuthStore } from "./stores/koringAuthStore";
|
|
import type { AppConfig } from "./api/config";
|
|
import { Home } from "./pages/home";
|
|
import { Store } from "./pages/store";
|
|
import { Today } from "./pages/today";
|
|
import { PlayLink } from "./pages/play-link";
|
|
import { Setting } from "./pages/setting";
|
|
import { SettingLogin } from "./pages/setting/login";
|
|
import { Gallery } from "./pages/gallery";
|
|
import { TaskQueue } from "./pages/task-queue";
|
|
import { UpdatePage } from "./pages/update";
|
|
import { Debug } from "./pages/debug";
|
|
import { SplashDebug } from "./pages/debug/splash-debug";
|
|
import { DisplayDebug } from "./pages/debug/display-debug";
|
|
import { VersionCardDebug } from "./pages/debug/version-card-debug";
|
|
import { UpdateDebug } from "./pages/debug/update-debug";
|
|
import { TaskDebug } from "./pages/debug/task-debug";
|
|
import { CrashDebug } from "./pages/debug/crash-debug";
|
|
import { Oobe } from "./pages/oobe";
|
|
import { OobeLanguage } from "./pages/oobe/step-language";
|
|
import { OobeAgreement } from "./pages/oobe/step-agreement";
|
|
import { OobeLogin } from "./pages/oobe/step-login";
|
|
import { OobeWelcome } from "./pages/oobe/step-welcome";
|
|
import { OobeVersion } from "./pages/oobe/step-version";
|
|
import { OobeBetaTest } from "./pages/oobe/step-beta-test";
|
|
import { OobeFinish } from "./pages/oobe/step-finish";
|
|
import { OobeLegal } from "./pages/oobe/step-legal";
|
|
import { OobeAboutInfo } from "./pages/oobe/about-info";
|
|
|
|
const pageMap = {
|
|
home: Home,
|
|
store: Store,
|
|
today: Today,
|
|
"play-link": PlayLink,
|
|
setting: Setting,
|
|
"setting/login": SettingLogin,
|
|
gallery: Gallery,
|
|
"task-queue": TaskQueue,
|
|
update: UpdatePage,
|
|
oobe: Oobe,
|
|
"oobe/language": OobeLanguage,
|
|
"oobe/agreement": OobeAgreement,
|
|
"oobe/login": OobeLogin,
|
|
"oobe/welcome": OobeWelcome,
|
|
"oobe/version": OobeVersion,
|
|
"oobe/beta-test": OobeBetaTest,
|
|
"oobe/finish": OobeFinish,
|
|
"oobe/about-info": OobeAboutInfo,
|
|
"oobe/legal": OobeLegal,
|
|
debug: Debug,
|
|
"debug-splash": SplashDebug,
|
|
"debug-display": DisplayDebug,
|
|
"debug-version-card": VersionCardDebug,
|
|
"debug-update": UpdateDebug,
|
|
"debug-task": TaskDebug,
|
|
"debug-crash": CrashDebug,
|
|
} as const;
|
|
|
|
function App() {
|
|
useTheme();
|
|
const current = useRouteStore((s) => s.current);
|
|
const Page = pageMap[current];
|
|
|
|
useEffect(() => {
|
|
// Listen for preloaded config from main process
|
|
const unsub = window.electronAPI?.onConfigPreload((data) => {
|
|
const { config, isFirstLaunch } = data;
|
|
const cfg = config as AppConfig;
|
|
useConfigStore.getState().applyPreloaded(cfg, isFirstLaunch);
|
|
// 语言偏好 → <html lang>
|
|
document.documentElement.lang = (cfg as AppConfig).app?.language ?? "zh-CN";
|
|
syncThemeFromConfig();
|
|
syncA11yFromConfig();
|
|
syncBackgroundFromConfig();
|
|
useAuthStore.getState().initFromRegistry();
|
|
useKoringAuthStore.getState().initFromDisk();
|
|
// Navigate to OOBE on first launch or if oobe not completed
|
|
if (isFirstLaunch || cfg.oobe) {
|
|
useRouteStore.getState().navigate("oobe");
|
|
}
|
|
});
|
|
|
|
return () => { unsub?.(); };
|
|
}, []);
|
|
|
|
// 主进程权威配置广播 → 覆盖本地镜像并同步派生 store
|
|
useEffect(() => {
|
|
const unsub = window.electronAPI?.onConfigChanged((config) => {
|
|
useConfigStore.getState().applyChanged(config as AppConfig);
|
|
syncThemeFromConfig();
|
|
syncA11yFromConfig();
|
|
syncBackgroundFromConfig();
|
|
});
|
|
|
|
return () => { unsub?.(); };
|
|
}, []);
|
|
|
|
return (
|
|
<RootLayout>
|
|
<Page key={current} />
|
|
</RootLayout>
|
|
);
|
|
}
|
|
|
|
export default App;
|