Skip to content

Commit e4ba6c6

Browse files
committed
feat(updater): integrate China-specific feed URLs for better update experience (#177)
- Set PRODUCTION URL to China mirror (http://release.echoplayer.z2blog.com/api/releases) - Add CN_ALPHA and CN_BETA URLs for Chinese users' pre-release channels - Simplify AppUpdater logic to use PRODUCTION URL for all stable releases - Maintain GitHub URLs for non-CN users in test mode - Improve logging to distinguish China mirror usage
1 parent e75f7a8 commit e4ba6c6

2 files changed

Lines changed: 36 additions & 15 deletions

File tree

packages/shared/config/constant.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ export const GB = 1024 * MB
2424
export const defaultLanguage = 'zh-CN'
2525

2626
export enum FeedUrl {
27-
PRODUCTION = 'https://releases.echoplayer.cc',
27+
PRODUCTION = 'http://release.echoplayer.z2blog.com/api/releases',
2828
GITHUB_LATEST = 'https://github.com/mkdir700/EchoPlayer/releases/latest/download',
29-
PRERELEASE_LOWEST = 'https://github.com/mkdir700/EchoPlayer/releases/download/v0.1.0'
29+
PRERELEASE_LOWEST = 'https://github.com/mkdir700/EchoPlayer/releases/download/v0.1.0',
30+
// 中国用户特有的预发布渠道 feed URL
31+
CN_BETA = 'http://release.echoplayer.z2blog.com/api/beta/releases',
32+
CN_ALPHA = 'http://release.echoplayer.z2blog.com/api/alpha/releases'
3033
}
3134

3235
export enum UpgradeChannel {

src/main/services/AppUpdater.ts

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -175,26 +175,45 @@ export default class AppUpdater {
175175
release: GithubReleaseInfo | null = null
176176
) {
177177
logger.info('Setting feed URL - testPlan:', testPlan)
178+
179+
// 获取IP地址归属地
180+
const ipCountry = await this._getIpCountry()
181+
logger.info('Detected IP country:', ipCountry)
182+
const isChinaUser = ipCountry.toLowerCase() === 'cn'
183+
178184
if (channel === UpgradeChannel.LATEST) {
179185
this.autoUpdater.channel = UpgradeChannel.LATEST
180-
this.autoUpdater.setFeedURL(FeedUrl.GITHUB_LATEST)
181-
logger.info('Using GitHub latest releases for test plan')
186+
if (isChinaUser) {
187+
this.autoUpdater.setFeedURL(FeedUrl.PRODUCTION)
188+
logger.info('Using production releases for CN user')
189+
} else {
190+
this.autoUpdater.setFeedURL(FeedUrl.GITHUB_LATEST)
191+
logger.info('Using GitHub latest releases for test plan')
192+
}
182193
return
183194
}
184195

185196
if (testPlan && release) {
186-
const preReleaseUrl = `https://github.com/mkdir700/EchoPlayer/releases/download/${release.tag_name}`
187-
if (preReleaseUrl) {
188-
this.autoUpdater.setFeedURL(preReleaseUrl)
197+
if (isChinaUser) {
198+
// 为中国用户使用对应的预发布渠道
199+
const chineseFeedUrl = channel === UpgradeChannel.ALPHA ? FeedUrl.CN_ALPHA : FeedUrl.CN_BETA
200+
this.autoUpdater.setFeedURL(chineseFeedUrl)
189201
this.autoUpdater.channel = channel
190-
logger.info(`Using pre-release URL: ${preReleaseUrl} with channel: ${channel}`)
191-
return
192-
}
202+
logger.info(`Using Chinese pre-release URL: ${chineseFeedUrl} with channel: ${channel}`)
203+
} else {
204+
const preReleaseUrl = `https://github.com/mkdir700/EchoPlayer/releases/download/${release.tag_name}`
205+
if (preReleaseUrl) {
206+
this.autoUpdater.setFeedURL(preReleaseUrl)
207+
this.autoUpdater.channel = channel
208+
logger.info(`Using pre-release URL: ${preReleaseUrl} with channel: ${channel}`)
209+
return
210+
}
193211

194-
// if no prerelease url, use lowest prerelease version to avoid error
195-
logger.warn('No prerelease URL found, falling back to lowest prerelease version')
196-
this.autoUpdater.setFeedURL(FeedUrl.PRERELEASE_LOWEST)
197-
this.autoUpdater.channel = UpgradeChannel.LATEST
212+
// if no prerelease url, use lowest prerelease version to avoid error
213+
logger.warn('No prerelease URL found, falling back to lowest prerelease version')
214+
this.autoUpdater.setFeedURL(FeedUrl.PRERELEASE_LOWEST)
215+
this.autoUpdater.channel = UpgradeChannel.LATEST
216+
}
198217
return
199218
}
200219

@@ -203,7 +222,6 @@ export default class AppUpdater {
203222
this.autoUpdater.setFeedURL(FeedUrl.PRODUCTION)
204223
logger.info('Using production feed URL')
205224

206-
const ipCountry = await this._getIpCountry()
207225
logger.info('Detected IP country:', ipCountry)
208226
if (ipCountry.toLowerCase() !== 'cn') {
209227
this.autoUpdater.setFeedURL(FeedUrl.GITHUB_LATEST)

0 commit comments

Comments
 (0)