@@ -97,52 +97,80 @@ import {
9797/******************************************************************************/ 
9898
9999{ 
100-     µb . loadLocalSettings  =  (  )  =>  Promise . all ( [ 
101-         vAPI . sessionStorage . get ( 'requestStats' ) , 
102-         vAPI . storage . get ( 'requestStats' ) , 
103-         vAPI . storage . get ( [  'blockedRequestCount' ,  'allowedRequestCount'  ] ) , 
104-     ] ) . then ( ( [  a ,  b ,  c  ] )  =>  { 
105-         if  (  a  instanceof  Object  &&  a . requestStats  )  {  return  a . requestStats ;  } 
106-         if  (  b  instanceof  Object  &&  b . requestStats  )  {  return  b . requestStats ;  } 
107-         if  (  c  instanceof  Object  &&  Object . keys ( c ) . length  ===  2  )  { 
108-             return  { 
109-                 blockedCount : c . blockedRequestCount , 
110-                 allowedCount : c . allowedRequestCount , 
111-             } ; 
112-         } 
113-         return  {  blockedCount : 0 ,  allowedCount : 0  } ; 
114-     } ) . then ( ( {  blockedCount,  allowedCount } )  =>  { 
115-         µb . requestStats . blockedCount  +=  blockedCount ; 
116-         µb . requestStats . allowedCount  +=  allowedCount ; 
117-     } ) ; 
100+     const  requestStats  =  µb . requestStats ; 
101+     let  requestStatsDisabled  =  false ; 
102+ 
103+     µb . loadLocalSettings  =  async  (  )  =>  { 
104+         requestStatsDisabled  =  µb . hiddenSettings . requestStatsDisabled ; 
105+         if  (  requestStatsDisabled  )  {  return ;  } 
106+         return  Promise . all ( [ 
107+             vAPI . sessionStorage . get ( 'requestStats' ) , 
108+             vAPI . storage . get ( 'requestStats' ) , 
109+             vAPI . storage . get ( [  'blockedRequestCount' ,  'allowedRequestCount'  ] ) , 
110+         ] ) . then ( ( [  a ,  b ,  c  ] )  =>  { 
111+             if  (  a  instanceof  Object  &&  a . requestStats  )  {  return  a . requestStats ;  } 
112+             if  (  b  instanceof  Object  &&  b . requestStats  )  {  return  b . requestStats ;  } 
113+             if  (  c  instanceof  Object  &&  Object . keys ( c ) . length  ===  2  )  { 
114+                 return  { 
115+                     blockedCount : c . blockedRequestCount , 
116+                     allowedCount : c . allowedRequestCount , 
117+                 } ; 
118+             } 
119+             return  {  blockedCount : 0 ,  allowedCount : 0  } ; 
120+         } ) . then ( ( {  blockedCount,  allowedCount } )  =>  { 
121+             requestStats . blockedCount  +=  blockedCount ; 
122+             requestStats . allowedCount  +=  allowedCount ; 
123+         } ) ; 
124+     } ; 
118125
119126    const  SAVE_DELAY_IN_MINUTES  =  3.6 ; 
120127    const  QUICK_SAVE_DELAY_IN_SECONDS  =  23 ; 
121128
129+     const  stopTimers  =  (  )  =>  { 
130+         vAPI . alarms . clear ( 'saveLocalSettings' ) ; 
131+         quickSaveTimer . off ( ) ; 
132+         saveTimer . off ( ) ; 
133+     } ; 
134+ 
122135    const  saveTimer  =  vAPI . defer . create ( (  )  =>  { 
123136        µb . saveLocalSettings ( ) ; 
124137    } ) ; 
125138
126139    const  quickSaveTimer  =  vAPI . defer . create ( (  )  =>  { 
140+         if  (  vAPI . sessionStorage . unavailable  !==  true  )  { 
141+             vAPI . sessionStorage . set ( {  requestStats : requestStats  } ) ; 
142+         } 
143+         if  (  requestStatsDisabled  )  {  return ;  } 
127144        saveTimer . on ( {  min : SAVE_DELAY_IN_MINUTES  } ) ; 
128-         if  (  vAPI . sessionStorage . unavailable  )  {  return ;  } 
129-         vAPI . sessionStorage . set ( {  requestStats : µb . requestStats  } ) ; 
130145        vAPI . alarms . createIfNotPresent ( 'saveLocalSettings' ,  { 
131146            delayInMinutes : SAVE_DELAY_IN_MINUTES  +  0.5 
132147        } ) ; 
133148    } ) ; 
134149
135150    µb . incrementRequestStats  =  ( blocked ,  allowed )  =>  { 
136-         µb . requestStats . blockedCount  +=  blocked ; 
137-         µb . requestStats . allowedCount  +=  allowed ; 
151+         requestStats . blockedCount  +=  blocked ; 
152+         requestStats . allowedCount  +=  allowed ; 
138153        quickSaveTimer . on ( {  sec : QUICK_SAVE_DELAY_IN_SECONDS  } ) ; 
139154    } ; 
140155
141156    µb . saveLocalSettings  =  (  )  =>  { 
142-         vAPI . alarms . clear ( 'saveLocalSettings' ) ; 
143-         quickSaveTimer . off ( ) ;   saveTimer . off ( ) ; 
157+         stopTimers ( ) ; 
158+         if   (   requestStatsDisabled   )   {   return ;   } 
144159        return  vAPI . storage . set ( {  requestStats : µb . requestStats  } ) ; 
145160    } ; 
161+ 
162+     onBroadcast ( msg  =>  { 
163+         if  (  msg . what  !==  'hiddenSettingsChanged'  )  {  return ;  } 
164+         const  newState  =  µb . hiddenSettings . requestStatsDisabled ; 
165+         if  (  requestStatsDisabled  ===  newState  )  {  return ;  } 
166+         requestStatsDisabled  =  newState ; 
167+         if  (  newState  )  { 
168+             stopTimers ( ) ; 
169+             µb . requestStats . blockedCount  =  µb . requestStats . allowedCount  =  0 ; 
170+         }  else  { 
171+             µb . loadLocalSettings ( ) ; 
172+         } 
173+     } ) ; 
146174} 
147175
148176/******************************************************************************/ 
0 commit comments