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'),