Initial settings tab

This commit is contained in:
Geomitron
2020-02-13 22:33:14 -05:00
parent c6b549340b
commit 49cba89a11
14 changed files with 204 additions and 47 deletions

View File

@@ -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) {

View File

@@ -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)
}
}

View 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')
}
}

View File

@@ -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> {