Skip to content

Commit 0fd0ae3

Browse files
committed
Graceful migration from old prefs to new
1 parent f1707a7 commit 0fd0ae3

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

fission/src/systems/preferences/PreferencesSystem.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ class PreferencesSystem {
102102
return defaultPrefs
103103
}
104104

105-
return allRoboPrefs[miraName]
105+
const defaultPrefs = defaultRobotPreferences()
106+
const mergedPrefs = { ...defaultPrefs, ...allRoboPrefs[miraName] }
107+
allRoboPrefs[miraName] = mergedPrefs
108+
109+
return mergedPrefs
106110
}
107111

108112
/** Sets the RobotPreferences object for the robot of a specific mira name */
@@ -148,7 +152,11 @@ class PreferencesSystem {
148152
return defaultPrefs
149153
}
150154

151-
return allFieldPrefs[miraName]
155+
const defaultPrefs = defaultFieldPreferences()
156+
const mergedPrefs = { ...defaultPrefs, ...allFieldPrefs[miraName] }
157+
allFieldPrefs[miraName] = mergedPrefs
158+
159+
return mergedPrefs
152160
}
153161

154162
/** @returns Preferences for every field that was found in local storage. */
@@ -170,7 +178,12 @@ class PreferencesSystem {
170178
public static getMotorPreferences(miraName: string): MotorPreferences {
171179
const allMotorPrefs = this.getAllMotorPreferences()
172180

173-
allMotorPrefs[miraName] ??= defaultMotorPreferences(miraName)
181+
if (allMotorPrefs[miraName] == undefined) {
182+
allMotorPrefs[miraName] = defaultMotorPreferences(miraName)
183+
} else {
184+
const defaultPrefs = defaultMotorPreferences(miraName)
185+
allMotorPrefs[miraName] = { ...defaultPrefs, ...allMotorPrefs[miraName] }
186+
}
174187

175188
return allMotorPrefs[miraName]
176189
}
@@ -194,6 +207,10 @@ class PreferencesSystem {
194207
if (graphicsPrefs == undefined) {
195208
graphicsPrefs = defaultGraphicsPreferences()
196209
this._preferences[GRAPHICS_PREFERENCE_KEY] = graphicsPrefs
210+
} else {
211+
const defaultPrefs = defaultGraphicsPreferences()
212+
graphicsPrefs = { ...defaultPrefs, ...graphicsPrefs }
213+
this._preferences[GRAPHICS_PREFERENCE_KEY] = graphicsPrefs
197214
}
198215

199216
return graphicsPrefs

0 commit comments

Comments
 (0)