mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-11 14:19:38 +00:00
Initial settings tab
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
import { exists as _exists, mkdir as _mkdir, readFile as _readFile, writeFile as _writeFile } from 'fs'
|
||||
import { exists as _exists, mkdir as _mkdir, readFile as _readFile } from 'fs'
|
||||
import { dataPath, tempPath, themesPath, settingsPath } from '../shared/Paths'
|
||||
import { promisify } from 'util'
|
||||
import { IPCInvokeHandler } from '../shared/IPCHandler'
|
||||
import { defaultSettings, Settings } from '../shared/Settings'
|
||||
import SaveSettingsHandler from './SaveSettingsHandler.ipc'
|
||||
|
||||
const exists = promisify(_exists)
|
||||
const mkdir = promisify(_mkdir)
|
||||
const readFile = promisify(_readFile)
|
||||
const writeFile = promisify(_writeFile)
|
||||
|
||||
export default class InitSettingsHandler implements IPCInvokeHandler<'init-settings'> {
|
||||
event: 'init-settings' = 'init-settings'
|
||||
@@ -38,8 +38,7 @@ export default class InitSettingsHandler implements IPCInvokeHandler<'init-setti
|
||||
if (await exists(settingsPath)) {
|
||||
return JSON.parse(await readFile(settingsPath, 'utf8'))
|
||||
} else {
|
||||
const newSettings = JSON.stringify(defaultSettings, undefined, 2)
|
||||
await writeFile(settingsPath, newSettings, 'utf8')
|
||||
await SaveSettingsHandler.saveSettings(defaultSettings)
|
||||
return defaultSettings
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
import { IPCEmitHandler } from '../shared/IPCHandler'
|
||||
import { shell } from 'electron'
|
||||
|
||||
export default class OpenFolderHandler implements IPCEmitHandler<'open-folder'> {
|
||||
event: 'open-folder' = 'open-folder'
|
||||
|
||||
async handler(filepath: string) {
|
||||
shell.showItemInFolder(filepath)
|
||||
}
|
||||
}
|
||||
20
src/electron/ipc/SaveSettingsHandler.ipc.ts
Normal file
20
src/electron/ipc/SaveSettingsHandler.ipc.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { writeFile as _writeFile } from 'fs'
|
||||
import { IPCEmitHandler } from '../shared/IPCHandler'
|
||||
import { Settings } from '../shared/Settings'
|
||||
import { promisify } from 'util'
|
||||
import { settingsPath } from '../shared/Paths'
|
||||
|
||||
const writeFile = promisify(_writeFile)
|
||||
|
||||
export default class SaveSettingsHandler implements IPCEmitHandler<'update-settings'> {
|
||||
event: 'update-settings' = 'update-settings'
|
||||
|
||||
handler(settings: Settings) {
|
||||
SaveSettingsHandler.saveSettings(settings)
|
||||
}
|
||||
|
||||
static async saveSettings(settings: Settings) {
|
||||
const settingsJSON = JSON.stringify(settings, undefined, 2)
|
||||
await writeFile(settingsPath, settingsJSON, 'utf8')
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import { DownloadHandler } from '../ipc/download/DownloadHandler'
|
||||
import { Settings } from './Settings'
|
||||
import InitSettingsHandler from '../ipc/InitSettingsHandler.ipc'
|
||||
import BatchSongDetailsHandler from '../ipc/BatchSongDetailsHandler.ipc'
|
||||
import OpenFolderHandler from '../ipc/OpenFolderHandler.ipc'
|
||||
import SaveSettingsHandler from '../ipc/SaveSettingsHandler.ipc'
|
||||
|
||||
/**
|
||||
* To add a new IPC listener:
|
||||
@@ -59,14 +59,14 @@ export interface IPCInvokeHandler<E extends keyof IPCInvokeEvents> {
|
||||
export function getIPCEmitHandlers(): IPCEmitHandler<keyof IPCEmitEvents>[]{
|
||||
return [
|
||||
new DownloadHandler(),
|
||||
new OpenFolderHandler()
|
||||
new SaveSettingsHandler()
|
||||
]
|
||||
}
|
||||
|
||||
export type IPCEmitEvents = {
|
||||
'download': Download
|
||||
'download-updated': DownloadProgress
|
||||
'open-folder': string
|
||||
'update-settings': Settings
|
||||
}
|
||||
|
||||
export interface IPCEmitHandler<E extends keyof IPCEmitEvents> {
|
||||
|
||||
Reference in New Issue
Block a user