11/* eslint-disable no-new */
2- const { ipcRenderer } = require ( 'electron' )
3- const { v4 : uuidv4 } = require ( 'uuid' )
4- const gql = require ( 'graphql-tag' )
2+ const { momentTime, meta, gql, uuidv4, get, query, invoke, send, on : rawOn } = window . app
53
6- const moment = require ( 'moment' )
7-
8- const meta = require ( './package.json' )
4+ const ipc = new EventTarget ( )
5+ const on = ( name , callback ) => {
6+ rawOn ( name )
7+ ipc . addEventListener ( name , ( { detail } ) => callback ( undefined , ...detail ) )
8+ }
9+ window . addEventListener ( 'electron-ipc' , ( { detail : { name, args } } ) => ipc . dispatchEvent ( new CustomEvent ( name , { detail : args } ) ) )
910
1011const Vue = window . Vue
1112
12- moment . locale ( 'zh-cn' )
13-
1413const updates = [
1514 [ '1.0.1' , '- 修复macOS一些兼容性问题' ] ,
1615 [ '1.1.0' , '- 显示日志' ] ,
@@ -55,15 +54,6 @@ const updates = [
5554 [ '1.12.0' , '- 展示直播间监听状态,设置直播间监听数上限' ]
5655] . map ( ( [ version , message ] ) => [ version , message . split ( '\n' ) ] ) . reverse ( )
5756
58- const get = key => ipcRenderer . invoke ( 'state' , key )
59- const query = async ( document , variableValues ) => {
60- const result = await ipcRenderer . invoke ( 'query' , document , variableValues )
61- if ( ! result ) {
62- throw new Error ( 'query failed' )
63- }
64- return result
65- }
66-
6757new Vue ( {
6858 el : '#main' ,
6959 data : {
@@ -111,14 +101,14 @@ new Vue({
111101 watch : {
112102 interval ( value ) {
113103 if ( value ) {
114- ipcRenderer . invoke ( 'updateInterval' , Number ( value ) )
104+ invoke ( 'updateInterval' , Number ( value ) )
115105 }
116106 } ,
117107 nickname ( value ) {
118- ipcRenderer . invoke ( 'updateNickname' , value )
108+ invoke ( 'updateNickname' , value )
119109 } ,
120110 wsLimit ( limit ) {
121- ipcRenderer . invoke ( 'updateWebSocketLimit' , limit )
111+ invoke ( 'updateWebSocketLimit' , limit )
122112 } ,
123113 'state.log' ( log ) {
124114 this . logs . unshift ( log )
@@ -156,19 +146,19 @@ new Vue({
156146 this . danmakuWait = false
157147 } , 1000 )
158148
159- ipcRenderer . send ( 'danmaku' , this . danmaku )
149+ send ( 'danmaku' , this . danmaku )
160150
161151 this . danmaku = ''
162152 }
163153 } ,
164154 close ( ) {
165155 if ( this . uuid ) {
166- ipcRenderer . invoke ( 'updateUUID' , this . uuid )
156+ invoke ( 'updateUUID' , this . uuid )
167157 }
168- ipcRenderer . invoke ( 'close' )
158+ invoke ( 'close' )
169159 } ,
170160 restart ( ) {
171- ipcRenderer . invoke ( 'restart' )
161+ invoke ( 'restart' )
172162 } ,
173163 randomUUID ( ) {
174164 this . uuid = uuidv4 ( )
@@ -229,8 +219,8 @@ new Vue({
229219 const blank = Array ( 300 ) . fill ( - 100 ) . map ( ( bottom , i ) => ( { bottom, i } ) )
230220 const showing = this . displayDanmaku . danmakuPack . filter ( ( _ , i ) => this . displayDanmaku . showingPack [ i ] )
231221 showing . flat ( ) . forEach ( ( { name, text, timestamp, bottom, i } ) => {
232- const momentTime = moment ( timestamp )
233- blank [ i ] = { name, text, absoluteTime : momentTime . local ( ) . format ( ) , relativeTime : this . now - timestamp > 1000 * 60 * 60 ? momentTime . calendar ( ) : momentTime . fromNow ( ) , bottom, i }
222+ const { absoluteTime , calendar , fromNow } = momentTime ( timestamp )
223+ blank [ i ] = { name, text, absoluteTime, relativeTime : this . now - timestamp > 1000 * 60 * 60 ? calendar : fromNow , bottom, i }
234224 } )
235225 return blank
236226 } ,
@@ -244,7 +234,7 @@ new Vue({
244234 logs . shift ( )
245235 this . logs = logs
246236
247- ipcRenderer . on ( 'stateUpdate' , ( _events , key , value ) => {
237+ on ( 'stateUpdate' , ( _events , key , value ) => {
248238 this . state [ key ] = value
249239 } )
250240
@@ -254,7 +244,7 @@ new Vue({
254244
255245 const interval = ( ) => {
256246 ( async ( ) => {
257- this . uptime = await ipcRenderer . invoke ( 'uptime' )
247+ this . uptime = await invoke ( 'uptime' )
258248 } ) ( )
259249 this . now = Date . now ( )
260250 return interval
@@ -277,6 +267,6 @@ new Vue({
277267 async mounted ( ) {
278268 document . getElementById ( 'main' ) . style . display = 'block'
279269 await this . $nextTick ( )
280- ipcRenderer . invoke ( 'ready' )
270+ invoke ( 'ready' )
281271 }
282272} )
0 commit comments