Skip to content

Commit d7503e4

Browse files
committed
refactor: updater cleanup
1 parent aa74e00 commit d7503e4

File tree

1 file changed

+25
-18
lines changed
  • packages/electron-chrome-web-store/src/browser

1 file changed

+25
-18
lines changed

packages/electron-chrome-web-store/src/browser/updater.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,14 @@ const getOmahaArch = (): string => {
9898
}
9999
}
100100

101-
async function requestExtensionUpdates(extensions: Electron.Extension[]) {
101+
function filterWebStoreExtension(extension: Electron.Extension) {
102+
const manifest = extension.manifest as chrome.runtime.Manifest
103+
if (!manifest) return false
104+
// TODO: implement extension.isFromStore() to check creation flags
105+
return manifest.key && manifest.update_url && ALLOWED_UPDATE_URLS.has(manifest.update_url)
106+
}
107+
108+
async function fetchAvailableUpdates(extensions: Electron.Extension[]) {
102109
const extensionIds = extensions.map((extension) => extension.id)
103110
const extensionMap: Record<string, Electron.Extension> = extensions.reduce(
104111
(map, ext) => ({
@@ -227,10 +234,13 @@ async function updateExtension(session: Electron.Session, update: ExtensionUpdat
227234
// TODO: remove old extension
228235
}
229236

230-
async function checkForUpdates(session: Electron.Session, extensions: Electron.Extension[]) {
237+
async function checkForUpdates(session: Electron.Session) {
238+
// Only check for extensions from the store
239+
const extensions = session.getAllExtensions().filter(filterWebStoreExtension)
240+
231241
d('checking for updates: %s', extensions.map((ext) => `${ext.id}@${ext.version}`).join(','))
232242

233-
const updates = await requestExtensionUpdates(extensions)
243+
const updates = await fetchAvailableUpdates(extensions)
234244
if (!updates || updates.length === 0) {
235245
d('no updates found')
236246
return
@@ -255,20 +265,7 @@ async function maybeCheckForUpdates(session: Electron.Session) {
255265
}
256266
lastUpdateCheck = Date.now()
257267

258-
// Only check for extensions from the store
259-
const extensions = session.getAllExtensions().filter((ext) => {
260-
const manifest = ext.manifest as chrome.runtime.Manifest
261-
if (!manifest) return false
262-
// TODO: implement extension.isFromStore() to check creation flags
263-
return manifest.key && manifest.update_url && ALLOWED_UPDATE_URLS.has(manifest.update_url)
264-
})
265-
266-
if (extensions.length === 0) {
267-
d('no extensions installed')
268-
return
269-
}
270-
271-
await checkForUpdates(session, extensions)
268+
await checkForUpdates(session)
272269
}
273270

274271
export async function initUpdater(state: WebStoreState) {
@@ -279,10 +276,20 @@ export async function initUpdater(state: WebStoreState) {
279276
app.on('did-become-active', check)
280277
break
281278
case 'win32':
279+
case 'linux':
282280
app.on('browser-window-focus', check)
283281
break
284282
}
285283

286-
setInterval(check, UPDATE_CHECK_INTERVAL)
284+
const updateIntervalId = setInterval(check, UPDATE_CHECK_INTERVAL)
287285
check()
286+
287+
app.on('before-quit', (event) => {
288+
queueMicrotask(() => {
289+
if (!event.defaultPrevented) {
290+
d('stopping update checks')
291+
clearInterval(updateIntervalId)
292+
}
293+
})
294+
})
288295
}

0 commit comments

Comments
 (0)