diff --git a/manifest.json b/manifest.json index 49d459c..c0ef1e9 100644 --- a/manifest.json +++ b/manifest.json @@ -1,10 +1,10 @@ { "manifest_version": 4, "type": "extension", - "name": "LLOneBot v3.18.2", + "name": "LLOneBot v3.18.3", "slug": "LLOneBot", "description": "LiteLoaderQQNT的OneBotApi,不支持商店在线更新", - "version": "3.18.2", + "version": "3.18.3", "icon": "./icon.jpg", "authors": [ { diff --git a/src/main/main.ts b/src/main/main.ts index a83ca1e..ebc1ee2 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -49,11 +49,13 @@ import {checkFfmpeg} from "../common/utils/video"; let running = false; +let mainWindow: BrowserWindow | null = null; // 加载插件时触发 function onLoad() { log("llonebot main onLoad"); ipcMain.handle(CHANNEL_CHECK_VERSION, async (event, arg) => { + return checkNewVersion(); }); ipcMain.handle(CHANNEL_UPDATE, async (event, arg) => { @@ -105,8 +107,26 @@ function onLoad() { const config = getConfigUtil().getConfig() return config; }) - ipcMain.on(CHANNEL_SET_CONFIG, (event, config: Config) => { - setConfig(config).then(); + ipcMain.on(CHANNEL_SET_CONFIG, (event, ask:boolean, config: Config) => { + if (!ask){ + setConfig(config).then(); + return + } + dialog.showMessageBox(mainWindow, { + type: 'question', + buttons: ['确认', '取消'], + defaultId: 0, // 默认选中的按钮,0 代表第一个按钮,即 "确认" + title: '确认保存', + message: '是否保存?', + detail: 'LLOneBot配置已更改,是否保存?' + }).then(result => { + if (result.response === 0) { + setConfig(config).then(); + } else { + } + }).catch(err => { + log("保存设置询问弹窗错误", err); + }); }) ipcMain.on(CHANNEL_LOG, (event, arg) => { @@ -402,6 +422,7 @@ function onBrowserWindowCreated(window: BrowserWindow) { if (selfInfo.uid) { return } + mainWindow = window; log("window create", window.webContents.getURL().toString()) try { hookNTQQApiCall(window); @@ -417,6 +438,7 @@ try { console.log(e.toString()) } + // 这两个函数都是可选的 export { onBrowserWindowCreated diff --git a/src/preload.ts b/src/preload.ts index bc3134e..bfd8cac 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -24,8 +24,8 @@ const llonebot = { updateLLOneBot:async (): Promise => { return ipcRenderer.invoke(CHANNEL_UPDATE); }, - setConfig: (config: Config) => { - ipcRenderer.send(CHANNEL_SET_CONFIG, config); + setConfig: (ask: boolean, config: Config) => { + ipcRenderer.send(CHANNEL_SET_CONFIG, ask, config); }, getConfig: async (): Promise => { return ipcRenderer.invoke(CHANNEL_GET_CONFIG); diff --git a/src/renderer/index.ts b/src/renderer/index.ts index 52b37f9..ea48e2e 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -21,7 +21,7 @@ async function onSettingWindowCreated(view: Element) { else config[key] = value; if (!['heartInterval', 'token', 'ffmpeg'].includes(key)) { - window.llonebot.setConfig(config); + window.llonebot.setConfig(false, config); } } }; @@ -324,7 +324,7 @@ async function onSettingWindowCreated(view: Element) { doc.querySelector('#config-ob11-save').addEventListener('click', () => { config.ob11 = ob11Config; - window.llonebot.setConfig(config); + window.llonebot.setConfig(false, config); // window.location.reload(); showError().then() alert('保存成功'); @@ -363,8 +363,14 @@ async function onSettingWindowCreated(view: Element) { } view.querySelector(".llonebot-update-button").addEventListener("click", update); } - }; + } window.llonebot.checkVersion().then(checkVersionFunc); + window.addEventListener('beforeunload', (event) => { + if (JSON.stringify(ob11Config) === JSON.stringify(config.ob11)) return; + config.ob11 = ob11Config; + window.llonebot.setConfig(true, config); + + }); } diff --git a/src/version.ts b/src/version.ts index bd01704..6c4c443 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = "3.18.2" \ No newline at end of file +export const version = "3.18.3" \ No newline at end of file