[fix] pre and cdn swith
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user