自定义源新增更新弹窗方法

This commit is contained in:
lyswhut
2022-02-16 18:32:55 +08:00
parent a7e3c1a0c4
commit 3534dd27dc
19 changed files with 134 additions and 26 deletions
+30 -13
View File
@@ -3,14 +3,16 @@ const needle = require('needle')
const { createCipheriv, publicEncrypt, constants, randomBytes, createHash } = require('crypto')
const USER_API_RENDERER_EVENT_NAME = require('../rendererEvent/name')
const sendMessage = (action, status, data, message) => {
ipcRenderer.send(action, { status, data, message })
const sendMessage = (action, data, status, message) => {
ipcRenderer.send(action, { data, status, message })
}
let isInitedApi = false
let isShowedUpdateAlert = false
const EVENT_NAMES = {
request: 'request',
inited: 'inited',
updateAlert: 'updateAlert',
}
const eventNames = Object.values(EVENT_NAMES)
const events = {
@@ -35,7 +37,7 @@ const supportActions = {
const handleRequest = (context, { requestKey, data }) => {
// console.log(data)
if (!events.request) return sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, 'Request event is not defined')
if (!events.request) return sendMessage(USER_API_RENDERER_EVENT_NAME.response, { requestKey }, false, 'Request event is not defined')
try {
events.request.call(context, { source: data.source, action: data.action, info: data.info }).then(response => {
let sendData = {
@@ -53,12 +55,12 @@ const handleRequest = (context, { requestKey, data }) => {
}
break
}
sendMessage(USER_API_RENDERER_EVENT_NAME.response, true, sendData)
sendMessage(USER_API_RENDERER_EVENT_NAME.response, sendData, true)
}).catch(err => {
sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, err.message)
sendMessage(USER_API_RENDERER_EVENT_NAME.response, { requestKey }, false, err.message)
})
} catch (err) {
sendMessage(USER_API_RENDERER_EVENT_NAME.response, false, { requestKey }, err.message)
sendMessage(USER_API_RENDERER_EVENT_NAME.response, { requestKey }, false, err.message)
}
}
@@ -80,7 +82,7 @@ const handleRequest = (context, { requestKey, data }) => {
*/
const handleInit = (context, info) => {
if (!info) {
sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, 'Init failed')
sendMessage(USER_API_RENDERER_EVENT_NAME.init, null, false, 'Init failed')
// sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, typeof info.message === 'string' ? info.message.substring(0, 100) : '')
return
}
@@ -88,7 +90,7 @@ const handleInit = (context, info) => {
sendMessage(USER_API_RENDERER_EVENT_NAME.openDevTools)
}
if (!info.status) {
sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, 'Init failed')
sendMessage(USER_API_RENDERER_EVENT_NAME.init, null, false, 'Init failed')
// sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, typeof info.message === 'string' ? info.message.substring(0, 100) : '')
return
}
@@ -109,16 +111,22 @@ const handleInit = (context, info) => {
}
} catch (error) {
console.log(error)
sendMessage(USER_API_RENDERER_EVENT_NAME.init, false, null, error.message)
sendMessage(USER_API_RENDERER_EVENT_NAME.init, null, false, error.message)
return
}
sendMessage(USER_API_RENDERER_EVENT_NAME.init, true, sourceInfo)
sendMessage(USER_API_RENDERER_EVENT_NAME.init, sourceInfo, true)
ipcRenderer.on(USER_API_RENDERER_EVENT_NAME.request, (event, data) => {
handleRequest(context, data)
})
}
const handleShowUpdateAlert = (message) => {
if (!message || typeof message != 'string') return
if (message.length > 1024) message = message.substring(0, 1024) + '...'
sendMessage(USER_API_RENDERER_EVENT_NAME.showUpdateAlert, message)
}
contextBridge.exposeInMainWorld('lx', {
EVENT_NAMES,
request(url, { method = 'get', timeout, headers, body, form, formData }, callback) {
@@ -165,12 +173,19 @@ contextBridge.exposeInMainWorld('lx', {
if (!eventNames.includes(eventName)) return reject(new Error('The event is not supported: ' + eventName))
switch (eventName) {
case EVENT_NAMES.inited:
if (isInitedApi) return
if (isInitedApi) return reject(new Error('Script is inited'))
isInitedApi = true
handleInit(this, data)
resolve()
break
case EVENT_NAMES.updateAlert:
if (isShowedUpdateAlert) return reject(new Error('The update alert can only be called once'))
isShowedUpdateAlert = true
handleShowUpdateAlert(data)
resolve()
break
default:
resolve(new Error('Unknown event name: ' + eventName))
reject(new Error('Unknown event name: ' + eventName))
}
})
},
@@ -180,7 +195,9 @@ contextBridge.exposeInMainWorld('lx', {
case EVENT_NAMES.request:
events.request = handler
break
default: return Promise.reject(new Error('The event is not supported: ' + eventName))
}
return Promise.resolve()
},
utils: {
crypto: {
@@ -208,7 +225,7 @@ contextBridge.exposeInMainWorld('lx', {
},
},
},
version: '1.1.0',
version: '1.2.0',
// removeEvent(eventName, handler) {
// if (!eventNames.includes(eventName)) return Promise.reject(new Error('The event is not supported: ' + eventName))
// let handlers