Skip to content

Commit c577724

Browse files
committed
fix: migrating to uuids
1 parent 761dd26 commit c577724

3 files changed

Lines changed: 34 additions & 2 deletions

File tree

fission/src/systems/preferences/PreferencesSystem.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import DefaultInputs from "../input/DefaultInputs"
2+
import * as UUID from "uuid"
13
import {
24
defaultFieldPreferences,
35
defaultGraphicsPreferences,
@@ -184,7 +186,32 @@ class PreferencesSystem {
184186

185187
unmigratedKeys.forEach(key => {
186188
const userPreferences = saved[USER_PREFERENCE_KEY] as Record<UserPreference, unknown>
187-
userPreferences[key] = saved[key]
189+
190+
switch (key) {
191+
case "InputSchemes": {
192+
// migrate to uuids
193+
const defaultSchemes = DefaultInputs.defaultInputCopies
194+
userPreferences[key] = saved[key].map(scheme => {
195+
if (scheme.schemeId) return scheme
196+
197+
if (scheme.customized) {
198+
scheme.schemeId = UUID.v4()
199+
return scheme
200+
}
201+
202+
const matchingDefaultScheme =
203+
defaultSchemes.find(s => s.descriptiveName === scheme.descriptiveName) ??
204+
defaultSchemes.find(s => s.schemeName === scheme.schemeName)
205+
206+
scheme.schemeId = matchingDefaultScheme?.schemeId ?? UUID.v4()
207+
208+
return scheme
209+
})
210+
break
211+
}
212+
default:
213+
userPreferences[key] = saved[key]
214+
}
188215

189216
delete saved[key]
190217
})

fission/src/test/InputSystem.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ describe("Input Scheme Manager Checks", () => {
8282

8383
const rebound = InputSystem.brainIndexSchemeMap.get(brainIndex)!
8484
expect(rebound).not.toBe(edited)
85-
expect(rebound.schemeName).toBe(DefaultInputs.ernie().schemeName)
85+
expect(rebound.schemeId).toBe(DefaultInputs.ernie().schemeId)
8686
})
8787
})
8888

fission/src/ui/panels/configuring/assembly-config/interfaces/inputs/ConfigureSchemeInterface.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Divider, Stack } from "@mui/material"
22
import type React from "react"
3+
import * as UUID from "uuid"
34
import { useCallback, useEffect, useReducer, useRef, useState } from "react"
45
import Checkbox from "@/components/Checkbox.tsx"
56
import EventSystem from "@/systems/EventSystem.ts"
@@ -82,6 +83,8 @@ const ConfigureSchemeInterface: React.FC<ConfigSchemeProps> = ({ selectedScheme,
8283
selectedScheme.usesTouchControls = false
8384
}
8485
selectedScheme.usesGamepad = val
86+
87+
if (!selectedScheme.customized) selectedScheme.schemeId = UUID.v4()
8588
selectedScheme.customized = true
8689
}}
8790
tooltip="Supported controllers: Xbox one, Xbox 360."
@@ -112,6 +115,7 @@ const ConfigureSchemeInterface: React.FC<ConfigSchemeProps> = ({ selectedScheme,
112115
useGamepad={useGamepad}
113116
useTouchControls={useTouchControls}
114117
onInputChanged={() => {
118+
if (!selectedScheme.customized) selectedScheme.schemeId = UUID.v4()
115119
selectedScheme.customized = true
116120
}}
117121
/>
@@ -124,6 +128,7 @@ const ConfigureSchemeInterface: React.FC<ConfigSchemeProps> = ({ selectedScheme,
124128
.filter(val => !isNaN(val))
125129
const newJointIndex = Math.max(0, ...existingJointIndexes) + 1
126130
selectedScheme.inputs.push(AxisInput.unbound(`joint ${newJointIndex}`))
131+
if (!selectedScheme.customized) selectedScheme.schemeId = UUID.v4()
127132
selectedScheme.customized = true
128133
update()
129134
}}

0 commit comments

Comments
 (0)