Files
cstb-next/src/app/(main)/preference/general/page.tsx
2025-11-08 23:57:26 +08:00

102 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client"
import { useEffect } from "react"
import { useAppStore } from "@/store/app"
import { Switch, Chip } from "@heroui/react"
import { UpdateChecker } from "@/components/cstb/UpdateChecker"
import { getVersion } from "@tauri-apps/api/app"
export default function Page() {
const app = useAppStore()
// 初始化版本号(如果还没有设置)
useEffect(() => {
if (typeof window !== "undefined" && (!app.state.version || app.state.version === "0.0.1")) {
void getVersion().then((version) => {
app.setVersion(version)
})
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
// 从环境变量或配置中获取更新服务器地址
const customEndpoint = process.env.NEXT_PUBLIC_UPDATE_ENDPOINT || ""
return (
<section className="flex flex-col gap-4 overflow-hidden">
<div className="flex flex-col items-start gap-4 pt-2 pb-1">
<div className="space-y-2">
<div className="flex items-center gap-2">
<p className="text-sm">{app.state.version}</p>
{app.state.hasUpdate && app.state.latestVersion && (
<Chip size="sm" color="success" variant="flat">
{app.state.latestVersion}
</Chip>
)}
</div>
{/* <p className="text-sm">是否有更新:{app.state.hasUpdate ? "有" : "无"}</p> */}
{/* <p className="text-sm">是否使用镜像源:{app.state.useMirror ? "是" : "否"}</p> */}
</div>
<div className="w-full pt-4 border-t border-zinc-200 dark:border-zinc-800">
<h3 className="mb-3 text-sm font-semibold"></h3>
<div className="mb-3 space-y-3">
{/* <Switch
isSelected={app.state.useMirror}
size="sm"
onChange={(e) => app.setUseMirror(e.target.checked)}
>
使用镜像源
</Switch> */}
{/* <p className="text-xs text-zinc-500">
{app.state.useMirror
? "使用自建更新服务检查更新"
: "使用 GitHub Release 检查更新"}
</p> */}
<Switch
isSelected={app.state.includePrerelease}
size="sm"
onChange={(e) => app.setIncludePrerelease(e.target.checked)}
>
</Switch>
<p className="text-xs text-zinc-500">
{app.state.includePrerelease
? "检查更新时会包含预发布版本beta、alpha等"
: "仅检查正式版本"}
</p>
</div>
<UpdateChecker
customEndpoint={customEndpoint || undefined}
includePrerelease={app.state.includePrerelease}
/>
</div>
<div className="flex flex-col w-full pt-4 space-y-3 border-t border-zinc-200 dark:border-zinc-800">
<h3 className="mb-3 text-sm font-semibold"></h3>
<Switch
isSelected={app.state.autoStart}
size="sm"
onChange={(e) => app.setAutoStart(e.target.checked)}
>
</Switch>
<Switch
isSelected={app.state.startHidden}
size="sm"
onChange={(e) => app.setStartHidden(e.target.checked)}
>
</Switch>
<Switch
isSelected={app.state.hiddenOnClose}
size="sm"
onChange={(e) => app.setHiddenOnClose(e.target.checked)}
>
</Switch>
</div>
</div>
</section>
)
}