diff options
Diffstat (limited to 'apps/web/src/stores/keybindings')
| -rw-r--r-- | apps/web/src/stores/keybindings/migrations/index.ts | 6 | ||||
| -rw-r--r-- | apps/web/src/stores/keybindings/migrations/v3-to-v4.ts | 25 |
2 files changed, 29 insertions, 2 deletions
diff --git a/apps/web/src/stores/keybindings/migrations/index.ts b/apps/web/src/stores/keybindings/migrations/index.ts index 1689802e..64d86ffa 100644 --- a/apps/web/src/stores/keybindings/migrations/index.ts +++ b/apps/web/src/stores/keybindings/migrations/index.ts @@ -1,4 +1,5 @@ -import { v2ToV3 } from './v2-to-v3'; +import { v2ToV3 } from "./v2-to-v3"; +import { v3ToV4 } from "./v3-to-v4"; type MigrationFn = ({ state }: { state: unknown }) => unknown; @@ -8,9 +9,10 @@ type MigrationFn = ({ state }: { state: unknown }) => unknown; */ const migrations: Record<number, MigrationFn> = { 2: v2ToV3, + 3: v3ToV4, }; -export const CURRENT_VERSION = 3; +export const CURRENT_VERSION = 4; export function runMigrations({ state, diff --git a/apps/web/src/stores/keybindings/migrations/v3-to-v4.ts b/apps/web/src/stores/keybindings/migrations/v3-to-v4.ts new file mode 100644 index 00000000..b53e082f --- /dev/null +++ b/apps/web/src/stores/keybindings/migrations/v3-to-v4.ts @@ -0,0 +1,25 @@ +import type { TActionWithOptionalArgs } from "@/lib/actions"; +import type { ShortcutKey } from "@/types/keybinding"; +import type { KeybindingConfig } from "@/types/keybinding"; + +interface V3State { + keybindings: KeybindingConfig; + isCustomized: boolean; +} + +export function v3ToV4({ state }: { state: unknown }): unknown { + const v3 = state as V3State; + + const renames: Record<string, string> = { + "paste-selected": "paste-copied", + }; + + const migrated = { ...v3.keybindings }; + for (const [key, action] of Object.entries(migrated)) { + if (action && renames[action]) { + migrated[key as ShortcutKey] = renames[action] as TActionWithOptionalArgs; + } + } + + return { ...v3, keybindings: migrated }; +} |
