11import {
22 createEffectOn ,
3- onUrlChange ,
43 querySelectorAll ,
54 querySelectorClick ,
6- wait ,
75 waitDom ,
8- waitUrlChange ,
96} from 'helper' ;
10- import { useInit } from 'main' ;
7+ import { universalSPA } from 'main' ;
118
12- ( async ( ) => {
13- const isMangaPage = ( ) => location . pathname . includes ( '/post/' ) ;
14- await waitUrlChange ( isMangaPage ) ;
15-
16- const { store, setState, showComic, init } = await useInit ( 'kemono' , {
17- autoShow : false ,
18- defaultOption : { pageNum : 1 } ,
19- /** 加载原图 */
20- load_original_image : true ,
21- } ) ;
22-
23- // 在切换时重新获取图片
24- createEffectOn (
25- ( ) => store . options . load_original_image ,
26- ( isOriginal , prev ) => {
27- setState ( 'nowComic' , isOriginal ? 'original' : 'thumbnail' ) ;
28- if ( prev ) showComic ( ) ;
29- } ,
30- ) ;
31-
32- await waitDom ( '.post__thumbnail' ) ;
33-
34- const original = ( ) =>
35- querySelectorAll < HTMLAnchorElement > ( '.post__thumbnail a' ) . map (
36- ( e ) => e . href ,
37- ) ;
38- const thumbnail = ( ) =>
39- querySelectorAll < HTMLImageElement > ( '.post__thumbnail img' ) . map (
40- ( e ) => e . src ,
41- ) ;
42- setState ( ( state ) => {
43- state . comicMap . original = { getImgList : original , imgList : original ( ) } ;
44- state . comicMap . thumbnail = { getImgList : thumbnail , imgList : thumbnail ( ) } ;
45- state . manga . onNext = querySelectorClick ( '.post__nav-link.next' ) ;
46- state . manga . onPrev = querySelectorClick ( '.post__nav-link.prev' ) ;
47- } ) ;
48- init ( ) ;
9+ const original = ( ) =>
10+ querySelectorAll < HTMLAnchorElement > ( '.post__thumbnail a' ) . map ( ( e ) => e . href ) ;
11+ const thumbnail = ( ) =>
12+ querySelectorAll < HTMLImageElement > ( '.post__thumbnail img' ) . map ( ( e ) => e . src ) ;
4913
14+ const handlePwa = ( ) => {
5015 // 加上跳转至 pwa 的链接
5116 const zipExtension = new Set ( [ 'zip' , 'rar' , '7z' , 'cbz' , 'cbr' , 'cb7' ] ) ;
5217 for ( const e of querySelectorAll < HTMLAnchorElement > ( '.post__attachment a' ) ) {
@@ -58,26 +23,37 @@ import { useInit } from 'main';
5823 a . style . opacity = '.6' ;
5924 e . parentNode ! . insertBefore ( a , e . nextElementSibling ) ;
6025 }
26+ } ;
6127
62- onUrlChange ( async ( lastUrl ) => {
63- if ( ! lastUrl ) return ;
64-
65- if ( ! isMangaPage ( ) )
66- return setState ( ( state ) => {
67- state . fab . show = false ;
68- state . manga . show = false ;
69- } ) ;
70-
71- setState ( ( state ) => {
72- state . fab . show = undefined ;
73- state . manga . show = false ;
74- } ) ;
28+ universalSPA ( 'kemono' , {
29+ options : {
30+ autoShow : false ,
31+ defaultOption : { pageNum : 1 } ,
32+ /** 加载原图 */
33+ load_original_image : true ,
34+ } ,
35+ isMangaPage : async ( ) => {
36+ if ( ! location . pathname . includes ( '/post/' ) ) return false ;
37+ await waitDom ( '.post__thumbnail' ) ;
38+ handlePwa ( ) ;
39+ return true ;
40+ } ,
41+
42+ work : async ( { store, setState, showComic } ) => {
43+ // 在切换时重新获取图片
44+ createEffectOn (
45+ ( ) => store . options . load_original_image ,
46+ ( isOriginal , prev ) => {
47+ setState ( 'nowComic' , isOriginal ? 'original' : 'thumbnail' ) ;
48+ if ( prev ) showComic ( ) ;
49+ } ,
50+ ) ;
7551
76- await wait ( ( ) => thumbnail ( ) [ 0 ] !== store . comicMap . thumbnail . imgList ?. [ 0 ] ) ;
7752 setState ( ( state ) => {
78- state . comicMap . original . imgList = original ( ) ;
79- state . comicMap . thumbnail . imgList = thumbnail ( ) ;
53+ state . comicMap . original = { getImgList : original } ;
54+ state . comicMap . thumbnail = { getImgList : thumbnail } ;
55+ state . manga . onNext = querySelectorClick ( '.post__nav-link.next' ) ;
56+ state . manga . onPrev = querySelectorClick ( '.post__nav-link.prev' ) ;
8057 } ) ;
81- if ( store . options . autoShow ) await showComic ( ) ;
82- } ) ;
83- } ) ( ) ;
58+ } ,
59+ } ) ;
0 commit comments