1
- import { websites } from './websites'
1
+ import { websites , hooks } from './websites'
2
2
import {
3
3
isExtension ,
4
- sendMessage
4
+ sendMessage ,
5
+ getLocal ,
6
+ setWebsite
5
7
} from './utils'
6
8
import downloadZip from './download'
7
9
import { downloadMarkdown } from './markdown'
8
10
import { getLocalOptions } from './options'
9
11
10
- const extract = async ( options , customOptions , hook ) => {
12
+ const extract = async ( options , customOptions = { } , hook = { } ) => {
11
13
const localOptions = await getLocalOptions ( )
12
14
const data = await downloadMarkdown ( options , Object . assign ( customOptions , {
13
15
localOptions
@@ -25,15 +27,29 @@ const extract = async (options, customOptions, hook) => {
25
27
26
28
if ( isExtension ) {
27
29
chrome . runtime . onMessage . addListener ( async ( message , sender , sendResponse ) => {
30
+ const localWebsites = await getLocal ( 'websites' )
28
31
if ( message instanceof Object ) {
29
32
if ( message . type === 'download' ) {
30
33
if ( typeof websites [ message . website ] === 'function' ) {
31
34
await websites [ message . website ] ( extract )
35
+ } else {
36
+ const localWebsite = localWebsites [ message . website ]
37
+ if ( localWebsite instanceof Object ) {
38
+ await extract (
39
+ localWebsite ,
40
+ localWebsite . customOptions instanceof Object ? localWebsite . customOptions : { } ,
41
+ Object . assign ( { } ,
42
+ hooks [ message . website ] instanceof Object ? hooks [ message . website ] : { } ,
43
+ localWebsite . hooks instanceof Object ? localWebsite . hooks : { }
44
+ )
45
+ )
46
+ }
32
47
}
33
48
}
34
49
}
35
50
sendResponse ( '' )
36
51
} )
52
+ window . setWebsite = setWebsite
37
53
}
38
54
39
55
export default downloadMarkdown
0 commit comments