mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
use dev path for local settings store
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
import type { TitleTheme } from '/@/shared/types/types';
|
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 Store from 'electron-store';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
const getFrame = () => {
|
const getFrame = () => {
|
||||||
const isWindows = process.platform === 'win32';
|
const isWindows = process.platform === 'win32';
|
||||||
@@ -18,10 +19,18 @@ const getFrame = () => {
|
|||||||
return 'linux';
|
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>({
|
export const store = new Store<any>({
|
||||||
beforeEachMigration: (_store, context) => {
|
beforeEachMigration: (_store, context) => {
|
||||||
console.log(`settings migrate from ${context.fromVersion} → ${context.toVersion}`);
|
console.log(`settings migrate from ${context.fromVersion} → ${context.toVersion}`);
|
||||||
},
|
},
|
||||||
|
cwd: storePath,
|
||||||
defaults: {
|
defaults: {
|
||||||
disable_auto_updates: false,
|
disable_auto_updates: false,
|
||||||
enableNeteaseTranslation: 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 }) => {
|
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 => {
|
ipcMain.handle('password-get', (_event, server: string): null | string => {
|
||||||
|
|||||||
@@ -1,24 +1,16 @@
|
|||||||
import { ipcRenderer, IpcRendererEvent, OpenDialogOptions, webFrame } from 'electron';
|
import { ipcRenderer, IpcRendererEvent, OpenDialogOptions, webFrame } from 'electron';
|
||||||
import Store from 'electron-store';
|
|
||||||
|
|
||||||
import { TitleTheme } from '/@/shared/types/types';
|
import { TitleTheme } from '/@/shared/types/types';
|
||||||
|
|
||||||
const store = new Store();
|
|
||||||
|
|
||||||
const set = (
|
const set = (
|
||||||
property: string,
|
property: string,
|
||||||
value: boolean | Record<string, unknown> | string | string[] | undefined,
|
value: boolean | Record<string, unknown> | string | string[] | undefined,
|
||||||
) => {
|
) => {
|
||||||
if (value === undefined) {
|
ipcRenderer.send('settings-set', { property, value });
|
||||||
store.delete(property);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
store.set(`${property}`, value);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const get = (property: string) => {
|
const get = async (property: string) => {
|
||||||
return store.get(`${property}`);
|
return ipcRenderer.invoke('settings-get', { property });
|
||||||
};
|
};
|
||||||
|
|
||||||
const restart = () => {
|
const restart = () => {
|
||||||
@@ -87,9 +79,13 @@ const env = {
|
|||||||
SERVER_NAME: process.env.SERVER_NAME ?? '',
|
SERVER_NAME: process.env.SERVER_NAME ?? '',
|
||||||
SERVER_TYPE,
|
SERVER_TYPE,
|
||||||
SERVER_URL: process.env.SERVER_URL ?? 'http://',
|
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 = {
|
export const localSettings = {
|
||||||
disableMediaKeys,
|
disableMediaKeys,
|
||||||
enableMediaKeys,
|
enableMediaKeys,
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ export const useSyncSettingsToMain = () => {
|
|||||||
hasRunRef.current = true;
|
hasRunRef.current = true;
|
||||||
|
|
||||||
const localSettings = window.api.localSettings;
|
const localSettings = window.api.localSettings;
|
||||||
let hasDifferences = false;
|
|
||||||
|
|
||||||
const settingsMappings: Array<{
|
const settingsMappings: Array<{
|
||||||
mainStoreKey: string;
|
mainStoreKey: string;
|
||||||
@@ -105,34 +104,40 @@ export const useSyncSettingsToMain = () => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
// Compare and sync each setting
|
// Compare and sync each setting
|
||||||
for (const mapping of settingsMappings) {
|
(async () => {
|
||||||
const mainValue = localSettings.get(mapping.mainStoreKey);
|
let hasDifferences = false;
|
||||||
const rendererValue = mapping.rendererValue;
|
|
||||||
|
|
||||||
const mainValueNormalized = mainValue === undefined ? null : mainValue;
|
for (const mapping of settingsMappings) {
|
||||||
const rendererValueNormalized = rendererValue === undefined ? null : rendererValue;
|
const mainValue = await localSettings.get(mapping.mainStoreKey);
|
||||||
|
const rendererValue = mapping.rendererValue;
|
||||||
|
|
||||||
if (
|
const mainValueNormalized = mainValue === undefined ? null : mainValue;
|
||||||
JSON.stringify(mainValueNormalized) !== JSON.stringify(rendererValueNormalized)
|
const rendererValueNormalized =
|
||||||
) {
|
rendererValue === undefined ? null : rendererValue;
|
||||||
hasDifferences = true;
|
|
||||||
logFn.warn(logMsg.system.settingsSynchronized, {
|
if (
|
||||||
meta: {
|
JSON.stringify(mainValueNormalized) !==
|
||||||
mainStoreKey: mapping.mainStoreKey,
|
JSON.stringify(rendererValueNormalized)
|
||||||
mainValue: mainValueNormalized,
|
) {
|
||||||
rendererValue: rendererValueNormalized,
|
hasDifferences = true;
|
||||||
},
|
logFn.warn(logMsg.system.settingsSynchronized, {
|
||||||
});
|
meta: {
|
||||||
localSettings.set(mapping.mainStoreKey, rendererValue);
|
mainStoreKey: mapping.mainStoreKey,
|
||||||
|
mainValue: mainValueNormalized,
|
||||||
|
rendererValue: rendererValueNormalized,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
localSettings.set(mapping.mainStoreKey, rendererValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Show restart toast if there were differences
|
// Show restart toast if there were differences
|
||||||
if (hasDifferences) {
|
if (hasDifferences) {
|
||||||
openRestartRequiredToast(
|
openRestartRequiredToast(
|
||||||
i18n.t('error.settingsSyncError', { postProcess: 'sentenceCase' }),
|
i18n.t('error.settingsSyncError', { postProcess: 'sentenceCase' }),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
})();
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user