@@ -2,133 +2,104 @@ import './renderer/preload'
2
2
import { ipcRenderer } from 'electron'
3
3
import DB from './common/db'
4
4
import { batchDownload , batchStop , getBatchErrorList , setDownloaderProxy } from './renderer/back/batch-download'
5
- import mainWindowId from './renderer/back/main-window-id'
5
+ // import mainWindowId from './renderer/back/main-window-id'
6
6
import readMaster from './renderer/back/on-master-read'
7
7
8
8
let manifest : DB | null = null
9
9
let master : DB | null = null
10
10
11
- ipcRenderer . on ( 'openManifestDatabase' , async ( event , callbackChannel : string , path : string ) => {
12
- if ( manifest ) {
13
- event . sender . sendTo ( mainWindowId , callbackChannel , null )
14
- return
11
+ ipcRenderer . on ( 'port' , e => {
12
+ const mainWindowPort = e . ports [ 0 ]
13
+
14
+ function defineRemoteFunction ( name : string , fn : ( ...args : any [ ] ) => any ) : void {
15
+ mainWindowPort . addEventListener ( 'message' , ( event ) => {
16
+ if ( event . data . type === name ) {
17
+ Promise . resolve ( fn ( ...event . data . payload ) ) . then ( ret => {
18
+ mainWindowPort . postMessage ( {
19
+ id : event . data . id ,
20
+ err : null ,
21
+ data : ret
22
+ } )
23
+ } ) . catch ( err => {
24
+ mainWindowPort . postMessage ( {
25
+ id : event . data . id ,
26
+ err : err . message ,
27
+ data : undefined
28
+ } )
29
+ } )
30
+ }
31
+ } )
15
32
}
16
- try {
33
+
34
+ defineRemoteFunction ( 'openManifestDatabase' , async ( path : string ) => {
35
+ if ( manifest ) {
36
+ return
37
+ }
17
38
manifest = await DB . open ( path )
18
- event . sender . sendTo ( mainWindowId , callbackChannel , null )
19
- } catch ( err : any ) {
20
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message )
21
- }
22
- } )
39
+ } )
23
40
24
- ipcRenderer . on ( 'openMasterDatabase' , async ( event , callbackChannel : string , path : string ) => {
25
- if ( master ) {
26
- event . sender . sendTo ( mainWindowId , callbackChannel , null )
27
- return
28
- }
29
- try {
41
+ defineRemoteFunction ( 'openMasterDatabase' , async ( path : string ) => {
42
+ if ( master ) {
43
+ return
44
+ }
30
45
master = await DB . open ( path )
31
- event . sender . sendTo ( mainWindowId , callbackChannel , null )
32
- } catch ( err : any ) {
33
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message )
34
- }
35
- } )
46
+ } )
36
47
37
- ipcRenderer . on ( 'getMasterHash' , async ( event , callbackChannel : string ) => {
38
- try {
48
+ defineRemoteFunction ( 'getMasterHash' , async ( ) => {
39
49
const masterHash = ( await manifest ! . find ( 'manifests' , [ 'name' , 'hash' ] , { name : 'master.mdb' } ) ) [ 0 ] . hash as string
40
- event . sender . sendTo ( mainWindowId , callbackChannel , null , masterHash )
41
- } catch ( err : any ) {
42
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
43
- }
44
- } )
50
+ return masterHash
51
+ } )
45
52
46
- ipcRenderer . on ( 'readMasterData' , async ( event , callbackChannel : string , masterFile : string ) => {
47
- try {
53
+ defineRemoteFunction ( 'readMasterData' , async ( masterFile : string ) => {
48
54
master = await DB . open ( masterFile )
49
55
const masterData = await readMaster ( master , manifest ! )
50
56
await master . close ( )
51
57
master = null
52
- event . sender . sendTo ( mainWindowId , callbackChannel , null , masterData )
53
- } catch ( err : any ) {
54
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
55
- }
56
- } )
58
+ return masterData
59
+ } )
57
60
58
- ipcRenderer . on ( 'getCardHash' , async ( event , callbackChannel : string , id : string | number ) => {
59
- try {
61
+ defineRemoteFunction ( 'getCardHash' , async ( id : string | number ) => {
60
62
const res = await manifest ! . find ( 'manifests' , [ 'hash' ] , { name : `card_bg_${ id } .unity3d` } )
61
- event . sender . sendTo ( mainWindowId , callbackChannel , null , res [ 0 ] . hash )
62
- } catch ( err : any ) {
63
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
64
- }
65
- } )
63
+ return res [ 0 ] . hash
64
+ } )
66
65
67
- ipcRenderer . on ( 'getIconHash' , async ( event , callbackChannel : string , id : string | number ) => {
68
- try {
66
+ defineRemoteFunction ( 'getIconHash' , async ( id : string | number ) => {
69
67
const res = await manifest ! . findOne ( 'manifests' , [ 'hash' ] , { name : `card_${ id } _m.unity3d` } )
70
- event . sender . sendTo ( mainWindowId , callbackChannel , null , res . hash )
71
- } catch ( err : any ) {
72
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
73
- }
74
- } )
68
+ return res . hash
69
+ } )
75
70
76
- ipcRenderer . on ( 'getEmblemHash' , async ( event , callbackChannel : string , id : string | number ) => {
77
- try {
71
+ defineRemoteFunction ( 'getEmblemHash' , async ( id : string | number ) => {
78
72
const res = await manifest ! . findOne ( 'manifests' , [ 'hash' ] , { name : `emblem_${ id } _l.unity3d` } )
79
- event . sender . sendTo ( mainWindowId , callbackChannel , null , res . hash )
80
- } catch ( err : any ) {
81
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
82
- }
83
- } )
73
+ return res . hash
74
+ } )
84
75
85
- ipcRenderer . on ( 'searchResources' , async ( event , callbackChannel : string , queryString : string ) => {
86
- try {
76
+ defineRemoteFunction ( 'searchResources' , async ( queryString : string ) => {
87
77
const res = await manifest ! . find < { name : string , hash : string } > ( 'manifests' , [ 'name' , 'hash' , 'size' ] , { name : { $like : `%${ queryString . trim ( ) } %` } } )
88
- event . sender . sendTo ( mainWindowId , callbackChannel , null , res )
89
- } catch ( err : any ) {
90
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
91
- }
92
- } )
78
+ return res
79
+ } )
93
80
94
- let batchDownloading = false
81
+ let batchDownloading = false
95
82
96
- ipcRenderer . on ( 'startBatchDownload' , async ( event , callbackChannel : string ) => {
97
- try {
83
+ defineRemoteFunction ( 'startBatchDownload' , async ( ) => {
98
84
batchDownloading = true
99
- await batchDownload ( manifest ! )
100
- event . sender . sendTo ( mainWindowId , callbackChannel , null , batchDownloading )
101
- } catch ( err : any ) {
102
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
103
- }
104
- } )
85
+ await batchDownload ( mainWindowPort , manifest ! )
86
+ return batchDownloading
87
+ } )
105
88
106
- ipcRenderer . on ( 'stopBatchDownload' , async ( event , callbackChannel : string ) => {
107
- try {
89
+ defineRemoteFunction ( 'stopBatchDownload' , async ( ) => {
108
90
await batchStop ( )
109
91
batchDownloading = false
110
- event . sender . sendTo ( mainWindowId , callbackChannel , null , batchDownloading )
111
- } catch ( err : any ) {
112
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , '' )
113
- }
114
- } )
92
+ return batchDownloading
93
+ } )
115
94
116
- ipcRenderer . on ( 'getBatchErrorList' , ( event , callbackChannel : string ) => {
117
- try {
95
+ defineRemoteFunction ( 'getBatchErrorList' , ( ) => {
118
96
const list = getBatchErrorList ( )
119
- event . sender . sendTo ( mainWindowId , callbackChannel , null , list )
120
- } catch ( err : any ) {
121
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message , null )
122
- }
123
- } )
97
+ return list
98
+ } )
124
99
125
- ipcRenderer . on ( 'setDownloaderProxy' , ( event , callbackChannel : string , proxy : string ) => {
126
- try {
100
+ defineRemoteFunction ( 'setDownloaderProxy' , ( proxy : string ) => {
127
101
setDownloaderProxy ( proxy )
128
- event . sender . sendTo ( mainWindowId , callbackChannel , null )
129
- } catch ( err : any ) {
130
- event . sender . sendTo ( mainWindowId , callbackChannel , err . message )
131
- }
102
+ } )
132
103
} )
133
104
134
105
window . addEventListener ( 'beforeunload' , ( ) => {
0 commit comments