flowgit/electron/ipc/settings.ipc.ts

34 lines
1.0 KiB
TypeScript

import { ipcMain } from 'electron'
import { IPC } from '../../shared/constants'
import { getSettings, getSetting, setSetting } from '../settings/settings-store'
import { setGitPath } from '../git/detector'
import { createLogger } from '../logger'
import type { AppSettings } from '../../shared/types/ipc.types'
const logger = createLogger('ipc:settings')
export function registerSettingsIpc(): void {
ipcMain.handle(IPC.SETTINGS_GET, () => {
return getSettings()
})
ipcMain.handle(IPC.SETTINGS_SET, (_, key: keyof AppSettings, value: unknown) => {
try {
// Type guard — validate the key exists
const current = getSettings()
if (!(key in current)) throw new Error(`Unknown setting: ${key}`)
setSetting(key, value as AppSettings[typeof key])
// Side effects for specific settings
if (key === 'gitPath') {
setGitPath(value as string | null)
}
return { success: true }
} catch (e: any) {
return { success: false, error: e.message }
}
})
}