use real sounds from kbsim
This commit is contained in:
@@ -1,9 +1,30 @@
|
||||
import type { Project } from './types';
|
||||
import type { LegacySwitchType, Marker, Project, SwitchType } from './types';
|
||||
import { app, setActiveSwitch, setMarkers, setSelectedIds } from './store.svelte';
|
||||
|
||||
const LEGACY_SWITCH_MAP: Record<LegacySwitchType, SwitchType> = {
|
||||
'cherry-mx-blue': 'mxblue',
|
||||
'cherry-mx-red': 'mxblack',
|
||||
'cherry-mx-brown': 'mxbrown',
|
||||
};
|
||||
|
||||
function migrateSwitch(value: string): SwitchType {
|
||||
if (value in LEGACY_SWITCH_MAP) {
|
||||
return LEGACY_SWITCH_MAP[value as LegacySwitchType];
|
||||
}
|
||||
return value as SwitchType;
|
||||
}
|
||||
|
||||
function migrateMarker(marker: Marker): Marker {
|
||||
return {
|
||||
...marker,
|
||||
code: marker.code,
|
||||
releaseTime: marker.releaseTime,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildProject(): Project {
|
||||
return {
|
||||
version: 1,
|
||||
version: 2,
|
||||
switch: app.activeSwitch,
|
||||
markers: app.markers.map((m) => ({ ...m })),
|
||||
};
|
||||
@@ -20,12 +41,12 @@ export function downloadProject(filename = 'project.json') {
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
export function loadProject(data: Project) {
|
||||
if (data.version !== 1) {
|
||||
export function loadProject(data: Project & { version?: number; switch?: string }) {
|
||||
if (data.version !== 1 && data.version !== 2) {
|
||||
throw new Error(`Unsupported project version: ${data.version}`);
|
||||
}
|
||||
setMarkers(data.markers.map((m) => ({ ...m })));
|
||||
setActiveSwitch(data.switch);
|
||||
setMarkers((data.markers ?? []).map(migrateMarker));
|
||||
setActiveSwitch(migrateSwitch(data.switch ?? 'mxbrown'));
|
||||
setSelectedIds(new Set());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user