Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: James Long <longster@gmail.com> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: 𝓛𝓲𝓽𝓽𝓵𝓮 𝓕𝓻𝓪𝓷𝓴 <little-frank@opencord.local> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: runvip <164729189+runvip@users.noreply.github.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Julian Coy <julian@ex-machina.co> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: Simon Klee <hello@simonklee.dk> Co-authored-by: Jay <air@live.ca> Co-authored-by: David Hill <1879069+iamdavidhill@users.noreply.github.com>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import Store from "electron-store"
|
|
import electron from "electron"
|
|
import { rmSync } from "node:fs"
|
|
import { join } from "node:path"
|
|
|
|
import { SETTINGS_STORE } from "./store-keys"
|
|
import { deleteStoreFileIfEmpty } from "./store-cleanup"
|
|
|
|
const cache = new Map<string, Store>()
|
|
|
|
// We cannot instantiate the electron-store at module load time because
|
|
// module import hoisting causes this to run before app.setPath("userData", ...)
|
|
// in index.ts has executed, which would result in files being written to the default directory
|
|
// (e.g. bad: %APPDATA%\@opencode-ai\desktop\opencode.settings vs good: %APPDATA%\ai.opencode.desktop.dev\opencode.settings).
|
|
export function getStore(name = SETTINGS_STORE) {
|
|
const cached = cache.get(name)
|
|
if (cached) return cached
|
|
const next = new Store({
|
|
name,
|
|
cwd: electron.app.getPath("userData"),
|
|
fileExtension: "",
|
|
accessPropertiesByDotNotation: false,
|
|
})
|
|
cache.set(name, next)
|
|
return next
|
|
}
|
|
|
|
export async function removeStoreFileIfEmpty(name: string) {
|
|
if (await deleteStoreFileIfEmpty(electron.app.getPath("userData"), name)) cache.delete(name)
|
|
}
|
|
|
|
export function removeStoreFile(name: string) {
|
|
rmSync(join(electron.app.getPath("userData"), name), { force: true })
|
|
cache.delete(name)
|
|
}
|