f108282f03
Signed-off-by: lhs <lhs@lhsui-Macmini.local> Signed-off-by: soolmuk <72430756+soolmuk@users.noreply.github.com> Co-authored-by: lhs <lhs@lhsui-Macmini.local>
118 lines
3.0 KiB
TypeScript
118 lines
3.0 KiB
TypeScript
export interface ExternalGoosedConfig {
|
|
enabled: boolean;
|
|
url: string;
|
|
secret: string;
|
|
certFingerprint?: string;
|
|
}
|
|
|
|
export interface KeyboardShortcuts {
|
|
focusWindow: string | null;
|
|
quickLauncher: string | null;
|
|
newChat: string | null;
|
|
newChatWindow: string | null;
|
|
openDirectory: string | null;
|
|
settings: string | null;
|
|
find: string | null;
|
|
findNext: string | null;
|
|
findPrevious: string | null;
|
|
alwaysOnTop: string | null;
|
|
toggleNavigation: string | null;
|
|
}
|
|
|
|
export type DefaultKeyboardShortcuts = {
|
|
[K in keyof KeyboardShortcuts]: string;
|
|
};
|
|
|
|
export interface SessionSharingConfig {
|
|
enabled: boolean;
|
|
baseUrl: string;
|
|
}
|
|
|
|
export type LanguageSetting = 'system' | 'en' | 'es' | 'hi' | 'ja' | 'ko' | 'ru' | 'tr' | 'zh-CN';
|
|
|
|
export interface Settings {
|
|
// Desktop app settings
|
|
showMenuBarIcon: boolean;
|
|
showDockIcon: boolean;
|
|
enableWakelock: boolean;
|
|
enableNotifications: boolean;
|
|
spellcheckEnabled: boolean;
|
|
externalGoosed: ExternalGoosedConfig;
|
|
globalShortcut?: string | null;
|
|
keyboardShortcuts: KeyboardShortcuts;
|
|
|
|
// UI preferences (migrated from localStorage)
|
|
theme: 'dark' | 'light';
|
|
useSystemTheme: boolean;
|
|
language: LanguageSetting;
|
|
responseStyle: string;
|
|
showPricing: boolean;
|
|
sessionSharing: SessionSharingConfig;
|
|
seenAnnouncementIds: string[];
|
|
}
|
|
|
|
export type SettingKey = keyof Settings;
|
|
|
|
export const defaultKeyboardShortcuts: DefaultKeyboardShortcuts = {
|
|
focusWindow: 'CommandOrControl+Alt+G',
|
|
quickLauncher: 'CommandOrControl+Alt+Shift+G',
|
|
newChat: 'CommandOrControl+T',
|
|
newChatWindow: 'CommandOrControl+N',
|
|
openDirectory: 'CommandOrControl+O',
|
|
settings: 'CommandOrControl+,',
|
|
find: 'CommandOrControl+F',
|
|
findNext: 'CommandOrControl+G',
|
|
findPrevious: 'CommandOrControl+Shift+G',
|
|
alwaysOnTop: 'CommandOrControl+Shift+T',
|
|
toggleNavigation: 'CommandOrControl+/',
|
|
};
|
|
|
|
export const defaultSettings: Settings = {
|
|
// Desktop app settings
|
|
showMenuBarIcon: true,
|
|
showDockIcon: true,
|
|
enableWakelock: false,
|
|
enableNotifications: true,
|
|
spellcheckEnabled: true,
|
|
keyboardShortcuts: defaultKeyboardShortcuts,
|
|
externalGoosed: {
|
|
enabled: false,
|
|
url: '',
|
|
secret: '',
|
|
},
|
|
|
|
// UI preferences
|
|
theme: 'light',
|
|
useSystemTheme: true,
|
|
language: 'system',
|
|
responseStyle: 'concise',
|
|
showPricing: true,
|
|
sessionSharing: {
|
|
enabled: false,
|
|
baseUrl: '',
|
|
},
|
|
seenAnnouncementIds: [],
|
|
};
|
|
|
|
export function getKeyboardShortcuts(settings: Settings): KeyboardShortcuts {
|
|
if (!settings.keyboardShortcuts && settings.globalShortcut !== undefined) {
|
|
const focusShortcut = settings.globalShortcut;
|
|
let launcherShortcut: string | null = null;
|
|
|
|
if (focusShortcut) {
|
|
if (focusShortcut.includes('Shift')) {
|
|
launcherShortcut = focusShortcut;
|
|
} else {
|
|
launcherShortcut = focusShortcut.replace(/\+([Gg])$/, '+Shift+$1');
|
|
}
|
|
}
|
|
|
|
return {
|
|
...defaultKeyboardShortcuts,
|
|
focusWindow: focusShortcut,
|
|
quickLauncher: launcherShortcut,
|
|
};
|
|
}
|
|
return { ...defaultKeyboardShortcuts, ...settings.keyboardShortcuts };
|
|
}
|