From 40126d5b82051a436e944adc9ee1ee425ca4cf65 Mon Sep 17 00:00:00 2001 From: stratuma Date: Wed, 15 May 2024 14:05:49 +0200 Subject: [PATCH] added widevine key selector --- components/Settings/Widevine.vue | 107 +++++++++++++++++++++++++++++-- src/electron/background.ts | 33 ++++++++++ src/electron/preload.ts | 2 + 3 files changed, 136 insertions(+), 6 deletions(-) diff --git a/components/Settings/Widevine.vue b/components/Settings/Widevine.vue index b9b4da4..bbe6302 100644 --- a/components/Settings/Widevine.vue +++ b/components/Settings/Widevine.vue @@ -1,13 +1,108 @@ - \ No newline at end of file + diff --git a/src/electron/background.ts b/src/electron/background.ts index 326e771..7995eb9 100644 --- a/src/electron/background.ts +++ b/src/electron/background.ts @@ -133,6 +133,26 @@ ipcMain.handle('dialog:openDirectory', async () => { } }) +ipcMain.handle('dialog:openFile', async (events, type: string) => { + if (!type) return + + const window = BrowserWindow.getFocusedWindow() + + if (!window) { + return + } + + const { canceled, filePaths } = await dialog.showOpenDialog(window, { + properties: ['openFile'] + }) + if (canceled) { + return await settings.get(type) + } else { + await settings.set(type, filePaths[0]) + return filePaths[0] + } +}) + ipcMain.handle('dialog:defaultDirectory', async () => { const savedPath = await settings.get('downloadPath') @@ -147,6 +167,19 @@ ipcMain.handle('dialog:defaultDirectory', async () => { return savedPath }) +ipcMain.handle('dialog:defaultFile', async (events, type: string) => { + + if (!type) return + + const savedPath = await settings.get(type) + + if (!savedPath) { + return '' + } + + return savedPath +}) + app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() diff --git a/src/electron/preload.ts b/src/electron/preload.ts index 650c07d..3b40017 100644 --- a/src/electron/preload.ts +++ b/src/electron/preload.ts @@ -2,7 +2,9 @@ import { contextBridge, ipcRenderer } from 'electron' contextBridge.exposeInMainWorld('myAPI', { selectFolder: () => ipcRenderer.invoke('dialog:openDirectory'), + selectFile: (type: string) => ipcRenderer.invoke('dialog:openFile', type), getFolder: () => ipcRenderer.invoke('dialog:defaultDirectory'), + getFile: (type: string) => ipcRenderer.invoke('dialog:defaultFile', type), openWindow: (opt: { title: string; url: string; width: number; height: number; backgroundColor: string }) => ipcRenderer.invoke('window:openNewWindow', opt), getUpdateStatus: () => ipcRenderer.invoke('updater:getUpdateStatus'), startUpdateDownload: () => ipcRenderer.invoke('updater:download'),