feat: persistence selected mode
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { KGProject } from '../KGProject';
|
||||
import { upgradeToV1 } from './upgradeToV1';
|
||||
import { upgradeToV2 } from './upgradeToV2';
|
||||
|
||||
/**
|
||||
* Upgrade the given project to the latest structure version, one version at a time.
|
||||
@@ -23,6 +24,10 @@ export function upgradeProjectToLatest(project: KGProject): KGProject {
|
||||
workingProject = upgradeToV1(workingProject);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
workingProject = upgradeToV2(workingProject);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// If an upgrader is missing, throw to prevent loading incompatible structures
|
||||
throw new Error(`No upgrader found for project structure version ${nextVersion}`);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { KGProject } from '../KGProject';
|
||||
|
||||
/**
|
||||
* Upgrade a project from structure version 1 to 2.
|
||||
* Adds the selectedMode field with default value "ionian".
|
||||
*/
|
||||
export function upgradeToV2(project: KGProject): KGProject {
|
||||
try {
|
||||
// Set default selectedMode to "ionian" if not already set
|
||||
const currentMode = project.getSelectedMode?.();
|
||||
if (!currentMode) {
|
||||
project.setSelectedMode("ionian");
|
||||
}
|
||||
} finally {
|
||||
// Always set the project structure version to 2 to mark migration complete
|
||||
project.setProjectStructureVersion(2);
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
Reference in New Issue
Block a user