feat: implement background update download without blocking user login
- Change update check and download to async execution, allowing immediate app entry for User users - Updates run in background, showing update prompt when download completes - Optimize login flow experience, eliminating blocking time caused by update downloads - Add release notes for version 1.5.1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
7
docs/releases/1.5.1.md
Normal file
7
docs/releases/1.5.1.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 1.5.1
|
||||||
|
|
||||||
|
## 体验优化
|
||||||
|
|
||||||
|
- User 用户登录后立即进入应用,更新检查和下载在后台运行。
|
||||||
|
- 下载完成后自动显示更新提示,整个过程对用户透明。
|
||||||
|
- 优化登录流程体验,消除更新下载导致的阻塞时间。
|
||||||
@@ -124,7 +124,12 @@ export class UpdateService {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.checkForUpdates()
|
// 启动异步更新检查,不阻塞登录流程
|
||||||
|
void this.checkForUpdates().catch((error) => {
|
||||||
|
log.warn('Async update check failed', {
|
||||||
|
error: error instanceof Error ? error.message : String(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
this.startPolling()
|
this.startPolling()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,16 +154,16 @@ export class UpdateService {
|
|||||||
this.publishStatus(nextStatus)
|
this.publishStatus(nextStatus)
|
||||||
|
|
||||||
if (nextStatus.phase === 'available' && nextStatus.recommendedRelease) {
|
if (nextStatus.phase === 'available' && nextStatus.recommendedRelease) {
|
||||||
try {
|
// 异步下载,不阻塞更新检查流程
|
||||||
await this.downloadRelease(nextStatus.recommendedRelease)
|
void this.downloadRelease(nextStatus.recommendedRelease).catch((error) => {
|
||||||
} catch (error) {
|
|
||||||
const message = error instanceof Error ? error.message : '下载更新失败'
|
const message = error instanceof Error ? error.message : '下载更新失败'
|
||||||
|
log.warn('Async update download failed', { error: message })
|
||||||
this.publishStatus({
|
this.publishStatus({
|
||||||
phase: 'error',
|
phase: 'error',
|
||||||
error: message,
|
error: message,
|
||||||
message
|
message
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
} else if (currentUserType === 'Admin') {
|
} else if (currentUserType === 'Admin') {
|
||||||
this.publishStatus(this.catalogService.resolveAdminStatus(this.status, this.catalog))
|
this.publishStatus(this.catalogService.resolveAdminStatus(this.status, this.catalog))
|
||||||
|
|||||||
Reference in New Issue
Block a user