From f7dc41a927f1681421f3221d35435acc8b9d4ba2 Mon Sep 17 00:00:00 2001 From: Molunerfinn Date: Mon, 24 Dec 2018 16:05:30 +0800 Subject: [PATCH] Partly finished: plugin system --- src/main/index.js | 1 + src/main/utils/getPicBeds.js | 1 + src/main/utils/picgoCoreIPC.js | 9 ++++- src/renderer/layouts/SettingPage.vue | 26 +++++++----- src/renderer/pages/Gallery.vue | 11 +++--- src/renderer/pages/MiniPage.vue | 14 +++---- src/renderer/pages/PicGoSetting.vue | 15 ++++--- src/renderer/pages/Plugin.vue | 57 ++++++++++++++++++++++++--- src/renderer/pages/Upload.vue | 14 +++---- src/renderer/pages/picbeds/Others.vue | 31 +++++++++------ src/renderer/router/index.js | 2 +- 11 files changed, 122 insertions(+), 59 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index 836ea32d..f5d91cfa 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -522,6 +522,7 @@ app.on('ready', () => { if (process.platform === 'darwin' || process.platform === 'win32') { createTray() } + db.read().set('needReload', false).write() updateChecker() globalShortcut.register(db.read().get('settings.shortKey.upload').value(), () => { diff --git a/src/main/utils/getPicBeds.js b/src/main/utils/getPicBeds.js index 2bd3fc19..1f36be47 100644 --- a/src/main/utils/getPicBeds.js +++ b/src/main/utils/getPicBeds.js @@ -18,6 +18,7 @@ const getPicBeds = (app) => { visible: visible ? visible.visible : true } }) + picgo.cmd.program.removeAllListeners() return picBeds } diff --git a/src/main/utils/picgoCoreIPC.js b/src/main/utils/picgoCoreIPC.js index eec99ddd..6d2ac9d5 100644 --- a/src/main/utils/picgoCoreIPC.js +++ b/src/main/utils/picgoCoreIPC.js @@ -114,9 +114,14 @@ const handlePluginUpdate = (ipcMain, CONFIG_PATH) => { const handleGetPicBedConfig = (ipcMain, CONFIG_PATH) => { ipcMain.on('getPicBedConfig', (event, type) => { const picgo = new PicGo(CONFIG_PATH) - const config = handleConfigWithFunction(picgo.helper.uploader.get(type).config(picgo)) const name = picgo.helper.uploader.get(type).name || type - event.sender.send('getPicBedConfig', config, name) + if (picgo.helper.uploader.get(type).config) { + const config = handleConfigWithFunction(picgo.helper.uploader.get(type).config(picgo)) + event.sender.send('getPicBedConfig', config, name) + } else { + event.sender.send('getPicBedConfig', [], name) + } + picgo.cmd.program.removeAllListeners() }) } diff --git a/src/renderer/layouts/SettingPage.vue b/src/renderer/layouts/SettingPage.vue index 63ae98f9..82616fd6 100644 --- a/src/renderer/layouts/SettingPage.vue +++ b/src/renderer/layouts/SettingPage.vue @@ -56,7 +56,9 @@ - + + + { - this.picBed = picBeds - }) + this.$electron.ipcRenderer.send('getPicBeds') + this.$electron.ipcRenderer.on('getPicBeds', this.getPicBeds) }, methods: { handleSelect (index) { @@ -195,7 +195,7 @@ export default { } else { this.$router.push({ name: 'others', - query: { + params: { type: picBed } }) @@ -266,8 +266,8 @@ export default { openMiniWindow () { this.$electron.ipcRenderer.send('openMiniWindow') }, - getPicBeds () { - this.$electron.ipcRenderer.send('getPicBeds') + getPicBeds (event, picBeds) { + this.picBed = picBeds } }, beforeRouteEnter: (to, from, next) => { @@ -276,11 +276,19 @@ export default { }) }, beforeDestroy () { - this.$electron.ipcRenderer.removeAllListeners('getPicBeds') + this.$electron.ipcRenderer.removeListener('getPicBeds', this.getPicBeds) } } \ No newline at end of file diff --git a/src/renderer/pages/Upload.vue b/src/renderer/pages/Upload.vue index a4455497..329d4928 100644 --- a/src/renderer/pages/Upload.vue +++ b/src/renderer/pages/Upload.vue @@ -84,11 +84,8 @@ export default { this.$electron.ipcRenderer.on('syncPicBed', () => { this.getDefaultPicBed() }) - this.getPicBeds() - this.$electron.ipcRenderer.on('getPicBeds', (event, picBeds) => { - this.picBed = picBeds - this.getDefaultPicBed() - }) + this.$electron.ipcRenderer.send('getPicBeds') + this.$electron.ipcRenderer.on('getPicBeds', this.getPicBeds) }, watch: { progress (val) { @@ -106,7 +103,7 @@ export default { beforeDestroy () { this.$electron.ipcRenderer.removeAllListeners('uploadProgress') this.$electron.ipcRenderer.removeAllListeners('syncPicBed') - this.$electron.ipcRenderer.removeAllListeners('getPicBeds') + this.$electron.ipcRenderer.removeListener('getPicBeds', this.getPicBeds) }, methods: { onDrop (e) { @@ -149,8 +146,9 @@ export default { } }) }, - getPicBeds () { - this.$electron.ipcRenderer.send('getPicBeds') + getPicBeds (event, picBeds) { + this.picBed = picBeds + this.getDefaultPicBed() } } } diff --git a/src/renderer/pages/picbeds/Others.vue b/src/renderer/pages/picbeds/Others.vue index 32f48720..f6b861ee 100644 --- a/src/renderer/pages/picbeds/Others.vue +++ b/src/renderer/pages/picbeds/Others.vue @@ -6,6 +6,7 @@ {{ picBedName }}设置 - +
+
暂无配置项
+ 设为默认图床 +
@@ -38,15 +42,10 @@ export default { picBedName: '' } }, - beforeRouteEnter (to, from, next) { - next(vm => { - vm.type = to.query.type - vm.$electron.ipcRenderer.send('getPicBedConfig', to.query.type) - vm.$electron.ipcRenderer.on('getPicBedConfig', (event, config, name) => { - vm.config = config - vm.picBedName = name - }) - }) + created () { + this.type = this.$route.params.type + this.$electron.ipcRenderer.send('getPicBedConfig', this.$route.params.type) + this.$electron.ipcRenderer.on('getPicBedConfig', this.getPicBeds) }, methods: { async handleConfirm () { @@ -71,10 +70,14 @@ export default { successNotification.onclick = () => { return true } + }, + getPicBeds (event, config, name) { + this.config = config + this.picBedName = name } }, beforeDestroy () { - this.$electron.ipcRenderer.removeAllListeners('getPicBedConfig') + this.$electron.ipcRenderer.removeListener('getPicBedConfig', this.getPicBeds) } } @@ -97,4 +100,10 @@ export default { color #eee &.is-active color #409EFF + .notice + color #eee + text-align center + margin-bottom 10px + .single + text-align center \ No newline at end of file diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js index 4b283557..9a951e23 100644 --- a/src/renderer/router/index.js +++ b/src/renderer/router/index.js @@ -71,7 +71,7 @@ export default new Router({ name: 'imgur' }, { - path: 'others', + path: 'others/:type', component: require('@/pages/picbeds/Others').default, name: 'others' },