@@ -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
274271export 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