[fix] pre and cdn swith

This commit is contained in:
2025-11-09 00:07:44 +08:00
parent 5e663dc79e
commit 4b7735575a
5 changed files with 72 additions and 18 deletions

View File

@@ -64,10 +64,23 @@ export default function Page() {
? "检查更新时会包含预发布版本beta、alpha等"
: "仅检查正式版本"}
</p>
<Switch
isSelected={app.state.useCdn}
size="sm"
onChange={(e) => app.setUseCdn(e.target.checked)}
>
使 CDN
</Switch>
<p className="text-xs text-zinc-500">
{app.state.useCdn
? "加速下载,避免 GitHub 无法正常访问"
: "直接从 GitHub 下载更新文件"}
</p>
</div>
<UpdateChecker
customEndpoint={customEndpoint || undefined}
includePrerelease={app.state.includePrerelease}
useCdn={app.state.useCdn}
/>
</div>

View File

@@ -28,11 +28,13 @@ interface UpdateInfo {
interface UpdateCheckerProps {
customEndpoint?: string
includePrerelease?: boolean
useCdn?: boolean
}
export function UpdateChecker({
customEndpoint,
includePrerelease = false,
useCdn = true,
}: UpdateCheckerProps) {
const app = useAppStore()
const [checking, setChecking] = useState(false)
@@ -73,12 +75,25 @@ export function UpdateChecker({
setDownloadCompleted(false)
try {
// 如果有自定义端点使用自定义端点否则使用默认端点GitHub Release 或镜像源)
const endpoint = customEndpoint || null
// 根据是否包含测试版来选择不同的 endpoint
// 如果提供了 customEndpoint优先使用否则根据 includePrerelease 动态选择
let endpoint: string | null = null
if (customEndpoint) {
// 如果提供了 customEndpoint仍然使用它用于特殊场景
endpoint = customEndpoint
} else {
// 根据 includePrerelease 选择对应的 endpoint
if (includePrerelease) {
endpoint = "https://gh-info.okk.cool/repos/plsgo/cstb/releases/latest/pre/tauri"
} else {
endpoint = "https://gh-info.okk.cool/repos/plsgo/cstb/releases/latest/tauri"
}
}
const result = await invoke<UpdateInfo | null>("check_app_update", {
endpoint: endpoint,
includePrerelease: includePrerelease,
useCdn: useCdn,
})
if (result) {
@@ -122,8 +137,8 @@ export function UpdateChecker({
setDownloadCompleted(false)
try {
// 使用官方 updater 插件,不需要传递 downloadUrl
await invoke("download_app_update")
// 使用官方 updater 插件,传递 useCdn 参数
await invoke("download_app_update", { useCdn: useCdn })
// 下载完成,标记状态
setDownloadProgress(100)

View File

@@ -12,6 +12,7 @@ const defaultValue = {
notice: "",
useMirror: true, // 默认使用镜像源CDN 加速)
includePrerelease: false, // 默认不包含预发布版本
useCdn: true, // 默认使用 CDN 加速下载
autoStart: false,
startHidden: false,
hiddenOnClose: false,
@@ -34,6 +35,7 @@ export const useAppStore = () => {
setNotice,
setUseMirror,
setIncludePrerelease,
setUseCdn,
setAutoStart,
setStartHidden,
setHiddenOnClose,
@@ -66,6 +68,9 @@ const setUseMirror = (useMirror: boolean) => {
const setIncludePrerelease = (includePrerelease: boolean) => {
appStore.state.includePrerelease = includePrerelease
}
const setUseCdn = (useCdn: boolean) => {
appStore.state.useCdn = useCdn
}
const setAutoStart = (autoStart: boolean) => {
if (autoStart) {
@@ -99,6 +104,7 @@ const resetAppStore = () => {
setNotice(defaultValue.notice)
setUseMirror(defaultValue.useMirror)
setIncludePrerelease(defaultValue.includePrerelease)
setUseCdn(defaultValue.useCdn)
setAutoStart(defaultValue.autoStart)
void setStartHidden(defaultValue.startHidden)
setHiddenOnClose(defaultValue.hiddenOnClose)