Skip to content

Commit 30d0987

Browse files
committed
feat: check only v3 & handle github rate limit
1 parent 18e44e1 commit 30d0987

File tree

1 file changed

+45
-13
lines changed

1 file changed

+45
-13
lines changed

src/main/services/update-check.ts

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,54 @@ export const checkForUpdate = async () => {
88
if (isDev) return
99

1010
try {
11-
const res = await axios.get(`${repository}/releases/latest`)
12-
13-
if (res) {
14-
const latest = res.request.socket._httpMessage.path
15-
.split('/')
16-
.pop()
17-
.substring(1)
18-
if (latest !== version) {
19-
BrowserWindow.getFocusedWindow()?.webContents.send(
20-
'main:update-available'
11+
const res = await axios.get(
12+
`${repository.replace('github.com', 'api.github.com/repos')}/releases`
13+
)
14+
15+
if (res && res.data) {
16+
// Проверяем оставшиеся запросы в лимите
17+
const rateLimitRemaining = res.headers['x-ratelimit-remaining']
18+
if (rateLimitRemaining && parseInt(rateLimitRemaining) < 5) {
19+
console.warn(
20+
'GitHub API rate limit близок к исчерпанию:',
21+
rateLimitRemaining
2122
)
22-
return latest
23+
}
24+
25+
const v3Releases = res.data.filter((release: any) => {
26+
const tagName = release.tag_name.replace('v', '')
27+
return tagName.startsWith('3.')
28+
})
29+
30+
if (v3Releases.length > 0) {
31+
const latestV3Release = v3Releases[0]
32+
const latestVersion = latestV3Release.tag_name.replace('v', '')
33+
34+
if (latestVersion !== version) {
35+
BrowserWindow.getFocusedWindow()?.webContents.send(
36+
'main:update-available'
37+
)
38+
return latestVersion
39+
}
2340
}
2441
}
25-
} catch (err) {
26-
console.error(err)
42+
} catch (err: any) {
43+
// Обработка лимита GitHub API
44+
if (err.response?.status === 403 || err.response?.status === 429) {
45+
const resetTime = err.response.headers['x-ratelimit-reset']
46+
if (resetTime) {
47+
const resetDate = new Date(parseInt(resetTime) * 1000)
48+
console.warn(
49+
'GitHub API rate limit exceeded. Reset at:',
50+
resetDate.toISOString()
51+
)
52+
} else {
53+
console.warn('GitHub API rate limit exceeded')
54+
}
55+
return
56+
}
57+
58+
console.error('Error checking for updates:', err.message || err)
2759
}
2860
}
2961

0 commit comments

Comments
 (0)