Skip to content

Commit 7dfebfb

Browse files
committed
fix: use unified shortcuts variable
1 parent 69d7e3f commit 7dfebfb

File tree

4 files changed

+42
-31
lines changed

4 files changed

+42
-31
lines changed

browser/src/components/menu/keyboard/shortcuts-menu.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useTranslation } from 'react-i18next';
55
import { ShortcutProps } from '@/libs/device/keyboard.ts';
66
import { Shortcut } from './shortcut.tsx';
77
import { KeyboardShortcutCustom } from './shortcut-custom.tsx';
8+
import { getShortcuts, setShortcuts } from '@/libs/storage';
89

910
export const KeyboardShortcutsMenu = () => {
1011
const { t } = useTranslation();
@@ -30,35 +31,28 @@ export const KeyboardShortcutsMenu = () => {
3031

3132
const addShortcut = (shortcut: ShortcutProps) => {
3233
if (shortcut == null) return;
33-
34-
let shortcuts = localStorage.getItem("shortcuts");
35-
if (shortcuts === null) {
36-
shortcuts = "[]";
37-
}
38-
39-
const shortcutsObject: ShortcutProps[] = JSON.parse(shortcuts);
40-
shortcutsObject.push(shortcut);
41-
localStorage.setItem("shortcuts", JSON.stringify(shortcutsObject));
42-
setStoredShortcuts(shortcutsObject);
34+
const shortcuts = getShortcuts();
35+
shortcuts.push(shortcut);
36+
setStoredShortcuts(shortcuts);
37+
setShortcuts(shortcuts);
4338
}
4439

4540
const removeShortcut = (indexToRemove: number) => {
4641
const newShortcuts = storedShortcuts.filter(
4742
(_, index) => index !== indexToRemove
4843
);
49-
localStorage.setItem("shortcuts", JSON.stringify(newShortcuts));
5044
setStoredShortcuts(newShortcuts);
45+
setShortcuts(newShortcuts);
5146
}
5247

5348
useEffect(() => {
54-
const shortcuts = localStorage.getItem("shortcuts");
55-
if (shortcuts === null) {
49+
const shortcuts = getShortcuts();
50+
if (shortcuts.length === 0) {
5651
predefinedShortcuts.forEach(shortcut => {
5752
addShortcut(shortcut);
5853
})
5954
} else {
60-
const shortcutsObject: ShortcutProps[] = JSON.parse(shortcuts);
61-
setStoredShortcuts(shortcutsObject);
55+
setStoredShortcuts(shortcuts);
6256
}
6357
}, []);
6458

browser/src/libs/storage/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Resolution } from '@/types';
2+
import { ShortcutProps } from '@/libs/device/keyboard.ts';
23

34
const LANGUAGE_KEY = 'nanokvm-usb-language';
45
const VIDEO_DEVICE_ID_KEY = 'nanokvm-usb-video-device-id';
@@ -11,6 +12,7 @@ const MOUSE_MODE_KEY = 'nanokvm-usb-mouse-mode';
1112
const MOUSE_SCROLL_DIRECTION_KEY = 'nanokvm-usb-mouse-scroll-direction';
1213
const MOUSE_SCROLL_INTERVAL_KEY = 'nanokvm-usb-mouse-scroll-interval';
1314
const MOUSE_JIGGLER_MODE_KEY = 'nanokvm-usb-mouse-jiggler-mode';
15+
const SHORTCUTS_KEY = 'nanokvm-usb-shortcuts';
1416

1517
export function getLanguage() {
1618
return localStorage.getItem(LANGUAGE_KEY);
@@ -130,3 +132,13 @@ export function getMouseJigglerMode(): string {
130132
export function setMouseJigglerMode(jiggler: string): void {
131133
localStorage.setItem(MOUSE_JIGGLER_MODE_KEY, jiggler);
132134
}
135+
136+
export function getShortcuts(): ShortcutProps[] {
137+
const shortcuts = localStorage.getItem(SHORTCUTS_KEY);
138+
if (!shortcuts) return [];
139+
return window.JSON.parse(shortcuts);
140+
}
141+
142+
export function setShortcuts(shortcuts: ShortcutProps[]): void {
143+
localStorage.setItem(SHORTCUTS_KEY, window.JSON.stringify(shortcuts));
144+
}

desktop/src/renderer/src/components/menu/keyboard/shortcuts-menu.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useTranslation } from 'react-i18next';
55
import { ShortcutProps } from '@renderer/libs/device/keyboard';
66
import { Shortcut } from './shortcut';
77
import { KeyboardShortcutCustom } from './shortcut-custom';
8+
import { getShortcuts, setShortcuts } from '@renderer/libs/storage';
89

910
export const KeyboardShortcutsMenu = () => {
1011
const { t } = useTranslation();
@@ -30,35 +31,28 @@ export const KeyboardShortcutsMenu = () => {
3031

3132
const addShortcut = (shortcut: ShortcutProps) => {
3233
if (shortcut == null) return;
33-
34-
let shortcuts = localStorage.getItem("shortcuts");
35-
if (shortcuts === null) {
36-
shortcuts = "[]";
37-
}
38-
39-
const shortcutsObject: ShortcutProps[] = JSON.parse(shortcuts);
40-
shortcutsObject.push(shortcut);
41-
localStorage.setItem("shortcuts", JSON.stringify(shortcutsObject));
42-
setStoredShortcuts(shortcutsObject);
34+
const shortcuts = getShortcuts();
35+
shortcuts.push(shortcut);
36+
setStoredShortcuts(shortcuts);
37+
setShortcuts(shortcuts);
4338
}
4439

4540
const removeShortcut = (indexToRemove: number) => {
4641
const newShortcuts = storedShortcuts.filter(
4742
(_, index) => index !== indexToRemove
4843
);
49-
localStorage.setItem("shortcuts", JSON.stringify(newShortcuts));
5044
setStoredShortcuts(newShortcuts);
45+
setShortcuts(newShortcuts);
5146
}
5247

5348
useEffect(() => {
54-
const shortcuts = localStorage.getItem("shortcuts");
55-
if (shortcuts === null) {
49+
const shortcuts = getShortcuts();
50+
if (shortcuts.length === 0) {
5651
predefinedShortcuts.forEach(shortcut => {
5752
addShortcut(shortcut);
5853
})
5954
} else {
60-
const shortcutsObject: ShortcutProps[] = JSON.parse(shortcuts);
61-
setStoredShortcuts(shortcutsObject);
55+
setStoredShortcuts(shortcuts);
6256
}
6357
}, []);
6458

desktop/src/renderer/src/libs/storage/index.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Resolution } from '@renderer/types'
2-
2+
import { ShortcutProps } from '@renderer/libs/device/keyboard'
33
import { getWithExpiry, setWithExpiry } from './expiry'
44

55
const LANGUAGE_KEY = 'nanokvm-usb-language'
@@ -16,6 +16,7 @@ const SKIP_UPDATE_KEY = 'nano-kvm-check-update'
1616
const MOUSE_SCROLL_INTERVAL_KEY = 'nanokvm-usb-mouse-scroll-interval'
1717
const BAUD_RATE_KEY = 'nanokvm-usb-baud-rate'
1818
const MOUSE_JIGGLER_MODE_KEY = 'nanokvm-usb-mouse-jiggler-mode'
19+
const SHORTCUTS_KEY = 'nanokvm-usb-shortcuts';
1920

2021
export function getLanguage(): string | null {
2122
return localStorage.getItem(LANGUAGE_KEY)
@@ -183,3 +184,13 @@ export function getMouseJigglerMode(): 'enable' | 'disable' {
183184
export function setMouseJigglerMode(jiggler: 'enable' | 'disable'): void {
184185
localStorage.setItem(MOUSE_JIGGLER_MODE_KEY, jiggler)
185186
}
187+
188+
export function getShortcuts(): ShortcutProps[] {
189+
const shortcuts = localStorage.getItem(SHORTCUTS_KEY);
190+
if (!shortcuts) return [];
191+
return window.JSON.parse(shortcuts);
192+
}
193+
194+
export function setShortcuts(shortcuts: ShortcutProps[]): void {
195+
localStorage.setItem(SHORTCUTS_KEY, window.JSON.stringify(shortcuts));
196+
}

0 commit comments

Comments
 (0)