@@ -97,52 +97,80 @@ import {
97
97
/******************************************************************************/
98
98
99
99
{
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
+ } ;
118
125
119
126
const SAVE_DELAY_IN_MINUTES = 3.6 ;
120
127
const QUICK_SAVE_DELAY_IN_SECONDS = 23 ;
121
128
129
+ const stopTimers = ( ) => {
130
+ vAPI . alarms . clear ( 'saveLocalSettings' ) ;
131
+ quickSaveTimer . off ( ) ;
132
+ saveTimer . off ( ) ;
133
+ } ;
134
+
122
135
const saveTimer = vAPI . defer . create ( ( ) => {
123
136
µb . saveLocalSettings ( ) ;
124
137
} ) ;
125
138
126
139
const quickSaveTimer = vAPI . defer . create ( ( ) => {
140
+ if ( vAPI . sessionStorage . unavailable !== true ) {
141
+ vAPI . sessionStorage . set ( { requestStats : requestStats } ) ;
142
+ }
143
+ if ( requestStatsDisabled ) { return ; }
127
144
saveTimer . on ( { min : SAVE_DELAY_IN_MINUTES } ) ;
128
- if ( vAPI . sessionStorage . unavailable ) { return ; }
129
- vAPI . sessionStorage . set ( { requestStats : µb . requestStats } ) ;
130
145
vAPI . alarms . createIfNotPresent ( 'saveLocalSettings' , {
131
146
delayInMinutes : SAVE_DELAY_IN_MINUTES + 0.5
132
147
} ) ;
133
148
} ) ;
134
149
135
150
µb . incrementRequestStats = ( blocked , allowed ) => {
136
- µb . requestStats . blockedCount += blocked ;
137
- µb . requestStats . allowedCount += allowed ;
151
+ requestStats . blockedCount += blocked ;
152
+ requestStats . allowedCount += allowed ;
138
153
quickSaveTimer . on ( { sec : QUICK_SAVE_DELAY_IN_SECONDS } ) ;
139
154
} ;
140
155
141
156
µb . saveLocalSettings = ( ) => {
142
- vAPI . alarms . clear ( 'saveLocalSettings' ) ;
143
- quickSaveTimer . off ( ) ; saveTimer . off ( ) ;
157
+ stopTimers ( ) ;
158
+ if ( requestStatsDisabled ) { return ; }
144
159
return vAPI . storage . set ( { requestStats : µb . requestStats } ) ;
145
160
} ;
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
+ } ) ;
146
174
}
147
175
148
176
/******************************************************************************/
0 commit comments