@@ -29,6 +29,8 @@ import {
29
29
browser ,
30
30
dnr ,
31
31
runtime ,
32
+ localRead , localWrite ,
33
+ sessionRead , sessionWrite ,
32
34
} from './ext.js' ;
33
35
34
36
import {
@@ -75,72 +77,61 @@ function getCurrentVersion() {
75
77
}
76
78
77
79
async function loadRulesetConfig ( ) {
78
- const dynamicRuleMap = await getDynamicRules ( ) ;
79
- const configRule = dynamicRuleMap . get ( CURRENT_CONFIG_BASE_RULE_ID ) ;
80
- if ( configRule === undefined ) {
81
- rulesetConfig . enabledRulesets = await defaultRulesetsFromLanguage ( ) ;
82
- rulesetConfig . firstRun = true ;
80
+ let data = await sessionRead ( 'rulesetConfig' ) ;
81
+ if ( data ) {
82
+ rulesetConfig . version = data . version ;
83
+ rulesetConfig . enabledRulesets = data . enabledRulesets ;
84
+ rulesetConfig . autoReload = data . autoReload ;
83
85
return ;
84
86
}
85
- let rawConfig ;
86
- try {
87
- rawConfig = JSON . parse ( self . atob ( configRule . condition . urlFilter ) ) ;
88
- } catch ( ex ) {
89
- }
90
-
91
- // New format
92
- if ( Array . isArray ( rawConfig ) ) {
93
- rulesetConfig . version = rawConfig [ 0 ] ;
94
- rulesetConfig . enabledRulesets = rawConfig [ 1 ] ;
95
- rulesetConfig . autoReload = rawConfig [ 2 ] ;
87
+ data = await localRead ( 'rulesetConfig' ) ;
88
+ if ( data ) {
89
+ rulesetConfig . version = data . version ;
90
+ rulesetConfig . enabledRulesets = data . enabledRulesets ;
91
+ rulesetConfig . autoReload = data . autoReload ;
96
92
return ;
97
93
}
98
-
99
- // Legacy format. TODO: remove when next new format is widely in use.
100
- const match = / ^ \| \| (?: e x a m p l e | u b o l i t e ) \. i n v a l i d \/ ( [ ^ \/ ] + ) \/ (?: ( [ ^ \/ ] + ) \/ ) ? / . exec (
101
- configRule . condition . urlFilter
102
- ) ;
103
- if ( match === null ) { return ; }
104
- rulesetConfig . version = match [ 1 ] ;
105
- if ( match [ 2 ] ) {
106
- rulesetConfig . enabledRulesets =
107
- decodeURIComponent ( match [ 2 ] || '' ) . split ( ' ' ) ;
94
+ data = await loadRulesetConfig . convertLegacyStorage ( ) ;
95
+ if ( data ) {
96
+ rulesetConfig . version = data . version ;
97
+ rulesetConfig . enabledRulesets = data . enabledRulesets ;
98
+ rulesetConfig . autoReload = data . autoReload ;
99
+ return ;
108
100
}
101
+ rulesetConfig . enabledRulesets = await defaultRulesetsFromLanguage ( ) ;
102
+ rulesetConfig . firstRun = true ;
103
+ sessionWrite ( 'rulesetConfig' , rulesetConfig ) ;
104
+ localWrite ( 'rulesetConfig' , rulesetConfig ) ;
109
105
}
110
106
111
- async function saveRulesetConfig ( ) {
107
+ // TODO: To remove after next stable release is widespread (2023-06-04)
108
+ loadRulesetConfig . convertLegacyStorage = async function ( ) {
112
109
const dynamicRuleMap = await getDynamicRules ( ) ;
113
- let configRule = dynamicRuleMap . get ( CURRENT_CONFIG_BASE_RULE_ID ) ;
114
- if ( configRule === undefined ) {
115
- configRule = {
116
- id : CURRENT_CONFIG_BASE_RULE_ID ,
117
- action : {
118
- type : 'allow' ,
119
- } ,
120
- condition : {
121
- urlFilter : '' ,
122
- initiatorDomains : [
123
- 'ubolite.invalid' ,
124
- ] ,
125
- resourceTypes : [
126
- 'main_frame' ,
127
- ] ,
128
- } ,
129
- } ;
110
+ const configRule = dynamicRuleMap . get ( CURRENT_CONFIG_BASE_RULE_ID ) ;
111
+ if ( configRule === undefined ) { return ; }
112
+ let rawConfig ;
113
+ try {
114
+ rawConfig = JSON . parse ( self . atob ( configRule . condition . urlFilter ) ) ;
115
+ } catch ( ex ) {
116
+ return ;
130
117
}
131
- const rawConfig = [
132
- rulesetConfig . version ,
133
- rulesetConfig . enabledRulesets ,
134
- rulesetConfig . autoReload ,
135
- ] ;
136
- const urlFilter = self . btoa ( JSON . stringify ( rawConfig ) ) ;
137
- if ( urlFilter === configRule . condition . urlFilter ) { return ; }
138
- configRule . condition . urlFilter = urlFilter ;
139
-
140
- return dnr . updateDynamicRules ( {
141
- addRules : [ configRule ] ,
118
+ if ( rawConfig === undefined ) { return ; }
119
+ const config = {
120
+ version : rawConfig [ 0 ] ,
121
+ enabledRulesets : rawConfig [ 1 ] ,
122
+ autoReload : rawConfig [ 2 ] ,
123
+ } ;
124
+ localWrite ( 'rulesetConfig' , config ) ;
125
+ sessionWrite ( 'rulesetConfig' , config ) ;
126
+ dnr . updateDynamicRules ( {
142
127
removeRuleIds : [ CURRENT_CONFIG_BASE_RULE_ID ] ,
143
128
} ) ;
129
+ return config ;
130
+ } ;
131
+
132
+ async function saveRulesetConfig ( ) {
133
+ sessionWrite ( 'rulesetConfig' , rulesetConfig ) ;
134
+ return localWrite ( 'rulesetConfig' , rulesetConfig ) ;
144
135
}
145
136
146
137
/******************************************************************************/
@@ -185,6 +176,8 @@ function onMessage(request, sender, callback) {
185
176
css : request . css ,
186
177
origin : 'USER' ,
187
178
target : { tabId, frameIds : [ frameId ] } ,
179
+ } ) . catch ( reason => {
180
+ console . log ( reason ) ;
188
181
} ) ;
189
182
return ;
190
183
}
0 commit comments