use dev path for local settings store

This commit is contained in:
jeffvli
2026-01-18 18:53:19 -08:00
parent 15633d07f0
commit a63763bfe8
3 changed files with 53 additions and 39 deletions
+15 -2
View File
@@ -1,7 +1,8 @@
import type { TitleTheme } from '/@/shared/types/types';
import { dialog, ipcMain, nativeTheme, OpenDialogOptions, safeStorage } from 'electron';
import { app, dialog, ipcMain, nativeTheme, OpenDialogOptions, safeStorage } from 'electron';
import Store from 'electron-store';
import path from 'path';
const getFrame = () => {
const isWindows = process.platform === 'win32';
@@ -18,10 +19,18 @@ const getFrame = () => {
return 'linux';
};
const isDevelopment = process.env.NODE_ENV === 'development';
const defaultUserDataPath = app.getPath('userData');
const storePath = isDevelopment
? path.normalize(`${defaultUserDataPath}-dev`)
: path.normalize(defaultUserDataPath);
export const store = new Store<any>({
beforeEachMigration: (_store, context) => {
console.log(`settings migrate from ${context.fromVersion}${context.toVersion}`);
},
cwd: storePath,
defaults: {
disable_auto_updates: false,
enableNeteaseTranslation: false,
@@ -52,7 +61,11 @@ ipcMain.handle('settings-get', (_event, data: { property: string }) => {
});
ipcMain.on('settings-set', (__event, data: { property: string; value: any }) => {
store.set(`${data.property}`, data.value);
if (data.value === undefined) {
store.delete(data.property);
} else {
store.set(data.property, data.value);
}
});
ipcMain.handle('password-get', (_event, server: string): null | string => {
+8 -12
View File
@@ -1,24 +1,16 @@
import { ipcRenderer, IpcRendererEvent, OpenDialogOptions, webFrame } from 'electron';
import Store from 'electron-store';
import { TitleTheme } from '/@/shared/types/types';
const store = new Store();
const set = (
property: string,
value: boolean | Record<string, unknown> | string | string[] | undefined,
) => {
if (value === undefined) {
store.delete(property);
return;
}
store.set(`${property}`, value);
ipcRenderer.send('settings-set', { property, value });
};
const get = (property: string) => {
return store.get(`${property}`);
const get = async (property: string) => {
return ipcRenderer.invoke('settings-get', { property });
};
const restart = () => {
@@ -87,9 +79,13 @@ const env = {
SERVER_NAME: process.env.SERVER_NAME ?? '',
SERVER_TYPE,
SERVER_URL: process.env.SERVER_URL ?? 'http://',
START_MAXIMIZED: store.get('maximized'),
START_MAXIMIZED: undefined as boolean | undefined,
};
get('maximized').then((value) => {
env.START_MAXIMIZED = value as boolean | undefined;
});
export const localSettings = {
disableMediaKeys,
enableMediaKeys,
+30 -25
View File
@@ -42,7 +42,6 @@ export const useSyncSettingsToMain = () => {
hasRunRef.current = true;
const localSettings = window.api.localSettings;
let hasDifferences = false;
const settingsMappings: Array<{
mainStoreKey: string;
@@ -105,34 +104,40 @@ export const useSyncSettingsToMain = () => {
];
// Compare and sync each setting
for (const mapping of settingsMappings) {
const mainValue = localSettings.get(mapping.mainStoreKey);
const rendererValue = mapping.rendererValue;
(async () => {
let hasDifferences = false;
const mainValueNormalized = mainValue === undefined ? null : mainValue;
const rendererValueNormalized = rendererValue === undefined ? null : rendererValue;
for (const mapping of settingsMappings) {
const mainValue = await localSettings.get(mapping.mainStoreKey);
const rendererValue = mapping.rendererValue;
if (
JSON.stringify(mainValueNormalized) !== JSON.stringify(rendererValueNormalized)
) {
hasDifferences = true;
logFn.warn(logMsg.system.settingsSynchronized, {
meta: {
mainStoreKey: mapping.mainStoreKey,
mainValue: mainValueNormalized,
rendererValue: rendererValueNormalized,
},
});
localSettings.set(mapping.mainStoreKey, rendererValue);
const mainValueNormalized = mainValue === undefined ? null : mainValue;
const rendererValueNormalized =
rendererValue === undefined ? null : rendererValue;
if (
JSON.stringify(mainValueNormalized) !==
JSON.stringify(rendererValueNormalized)
) {
hasDifferences = true;
logFn.warn(logMsg.system.settingsSynchronized, {
meta: {
mainStoreKey: mapping.mainStoreKey,
mainValue: mainValueNormalized,
rendererValue: rendererValueNormalized,
},
});
localSettings.set(mapping.mainStoreKey, rendererValue);
}
}
}
// Show restart toast if there were differences
if (hasDifferences) {
openRestartRequiredToast(
i18n.t('error.settingsSyncError', { postProcess: 'sentenceCase' }),
);
}
// Show restart toast if there were differences
if (hasDifferences) {
openRestartRequiredToast(
i18n.t('error.settingsSyncError', { postProcess: 'sentenceCase' }),
);
}
})();
}, 5000);
return () => {