1- window . addEventListener ( "load" , ( ) => {
2- navigator . serviceWorker . register ( "../sw.js" , {
3- scope : "/uv/" ,
4- } ) ;
1+
2+ let swReady = false ;
3+ let swReadyResolve ;
4+ const swReadyPromise = new Promise ( resolve => { swReadyResolve = resolve ; } ) ;
5+
6+ window . addEventListener ( "load" , async ( ) => {
7+ if ( ! ( "serviceWorker" in navigator ) ) {
8+ swReady = true ;
9+ swReadyResolve ( ) ;
10+ return ;
11+ }
12+
13+ try {
14+ const registration = await navigator . serviceWorker . register ( "../sw.js" , {
15+ scope : "/uv/" ,
16+ } ) ;
17+
18+ if ( registration . active ) {
19+ swReady = true ;
20+ swReadyResolve ( ) ;
21+ return ;
22+ }
23+
24+ const worker = registration . installing || registration . waiting ;
25+ if ( worker ) {
26+ worker . addEventListener ( "statechange" , function onStateChange ( ) {
27+ if ( this . state === "activated" ) {
28+ swReady = true ;
29+ swReadyResolve ( ) ;
30+ worker . removeEventListener ( "statechange" , onStateChange ) ;
31+ }
32+ } ) ;
33+ } else {
34+ swReady = true ;
35+ swReadyResolve ( ) ;
36+ }
37+ } catch ( err ) {
38+ console . error ( "[SW] registration failed:" , err ) ;
39+ swReady = true ;
40+ swReadyResolve ( ) ;
41+ }
542} ) ;
643
44+ async function waitForServiceWorker ( ) {
45+ if ( swReady ) return ;
46+ await Promise . race ( [
47+ swReadyPromise ,
48+ new Promise ( resolve => setTimeout ( resolve , 4000 ) ) ,
49+ ] ) ;
50+ }
51+
752const form = document . getElementById ( "fv" ) ;
853const input = document . getElementById ( "input" ) ;
954
@@ -39,6 +84,8 @@ async function encodeUrl(url, proxyOverride) {
3984}
4085
4186async function navigate ( value , path , proxyOverride ) {
87+ await waitForServiceWorker ( ) ;
88+
4289 let url = value . trim ( ) ;
4390 const engine = localStorage . getItem ( "engine" ) ;
4491 const searchUrl = engine ? engine : "https://search.brave.com/search?q=" ;
@@ -78,4 +125,4 @@ function useDynamic(value) {
78125
79126function isValidUrl ( val = "" ) {
80127 return / ^ h t t p ( s ? ) : \/ \/ / . test ( val ) || ( val . includes ( "." ) && val [ 0 ] !== " " ) ;
81- }
128+ }
0 commit comments