11
11
12
12
import { html , store } from 'hybrids' ;
13
13
import { detectFilterType } from '@cliqz/adblocker' ;
14
+ import createConverter from '../dnr-converter' ;
14
15
15
- function onConvertedRules ( host , event ) {
16
- if ( ! event . data . rules || ! event . data . errors ) {
17
- return ;
18
- }
19
-
20
- console . log ( "DNR converstion" , event . data )
21
- if ( event . data . errors . length > 0 ) {
22
- // host.conversionResult.errors.push(...event.data.errors);
23
- }
24
- }
16
+ const converter = createConverter ( ) ;
25
17
26
18
function updateCustomFilters ( host ) {
27
19
store . submit ( host . input ) ;
@@ -40,7 +32,7 @@ const CustomFiltersInput = {
40
32
} ,
41
33
async set ( _ , { text } ) {
42
34
await chrome . storage . local . set ( { 'custom-filters-input' : text } ) ;
43
- return { text, id : 1 , } ;
35
+ return { text, id : 1 } ;
44
36
} ,
45
37
} ,
46
38
} ;
@@ -50,7 +42,10 @@ export default {
50
42
errors : { set : ( _ , values = [ ] ) => values } ,
51
43
output : async ( host ) => {
52
44
const { text } = await store . resolve ( host . input ) ;
53
- const filters = text . split ( '\n' ) . map ( f => f . trim ( ) ) . filter ( Boolean ) ;
45
+ const filters = text
46
+ . split ( '\n' )
47
+ . map ( ( f ) => f . trim ( ) )
48
+ . filter ( Boolean ) ;
54
49
55
50
const output = {
56
51
networkFilters : [ ] ,
@@ -69,56 +64,23 @@ export default {
69
64
output . cosmeticFilters . push ( filter ) ;
70
65
break ;
71
66
default :
72
- output . errors . push (
73
- `Filter not supported: '${ filter } '` ,
74
- ) ;
67
+ output . errors . push ( `Filter not supported: '${ filter } '` ) ;
75
68
}
76
69
}
77
70
78
- const { convert } = await host . converter ;
79
71
for ( const networkFilter of output . networkFilters ) {
80
- convert ( networkFilter ) ;
72
+ converter . convert ( networkFilter ) ;
81
73
}
82
74
83
75
return output ;
84
76
} ,
85
- converter : {
86
- async get ( host ) {
87
- return new Promise ( resolve => {
88
- const iframe = host . querySelector ( 'iframe' ) ;
89
- const convert = ( filter ) => {
90
- iframe . contentWindow . postMessage (
91
- {
92
- action : 'convert' ,
93
- converter : 'adguard' ,
94
- filters : [ filter ] ,
95
- } ,
96
- '*' ,
97
- ) ;
98
- } ;
99
- iframe . addEventListener ( 'load' , ( ) => {
100
- resolve ( { convert } ) ;
101
- } ) ;
102
- } )
103
- } ,
104
- connect ( host ) {
105
- const onMessage = onConvertedRules . bind ( null , host ) ;
106
-
107
- window . addEventListener ( 'message' , onMessage ) ;
108
-
109
- return ( ) => {
110
- window . removeEventListener ( 'message' , onMessage ) ;
111
- } ;
112
- } ,
113
- } ,
114
77
content : ( { input, output } ) => html `
115
78
< template layout ="column gap:3 ">
116
- < iframe
117
- layout ="hidden "
118
- src ="https://ghostery.github.io/urlfilter2dnr/ "
119
- > </ iframe >
120
- ${ store . ready ( input ) && html `
121
- < textarea rows ="10 " oninput ="${ html . set ( input , 'text' ) } "> ${ input . text } </ textarea >
79
+ ${ store . ready ( input ) &&
80
+ html `
81
+ < textarea rows ="10 " oninput ="${ html . set ( input , 'text' ) } ">
82
+ ${ input . text } </ textarea
83
+ >
122
84
` }
123
85
< div layout ="row gap items:center ">
124
86
< ui-button
@@ -130,22 +92,24 @@ export default {
130
92
< button > Update</ button >
131
93
</ ui-button >
132
94
${ html . resolve (
133
- output . then ( ( { networkFilters, cosmeticFilters, errors } ) => html `
134
- < section layout ="row gap items:center ">
135
- < ul >
136
- ${ errors . map (
137
- ( error ) =>
138
- html `< li >
139
- < ui-text color ="danger-500 "> ${ error } </ ui-text >
140
- </ li > ` ,
141
- ) }
142
- </ ul >
143
- </ section >
144
- < section layout ="row gap items:center ">
145
- Network filters: ${ networkFilters . length }
146
- Cosmetic filters: ${ cosmeticFilters . length }
147
- </ section >
148
- ` )
95
+ output . then (
96
+ ( { networkFilters, cosmeticFilters, errors } ) => html `
97
+ < section layout ="row gap items:center ">
98
+ < ul >
99
+ ${ errors . map (
100
+ ( error ) =>
101
+ html `< li >
102
+ < ui-text color ="danger-500 "> ${ error } </ ui-text >
103
+ </ li > ` ,
104
+ ) }
105
+ </ ul >
106
+ </ section >
107
+ < section layout ="row gap items:center ">
108
+ Network filters: ${ networkFilters . length } Cosmetic filters:
109
+ ${ cosmeticFilters . length }
110
+ </ section >
111
+ ` ,
112
+ ) ,
149
113
) }
150
114
</ div >
151
115
</ template >
0 commit comments