diff --git a/gui/src/components/onboarding/BodyAssignment.tsx b/gui/src/components/onboarding/BodyAssignment.tsx index ceb77b17fc..b264d815f7 100644 --- a/gui/src/components/onboarding/BodyAssignment.tsx +++ b/gui/src/components/onboarding/BodyAssignment.tsx @@ -105,7 +105,7 @@ export function BodyAssignment({ onlyAssigned = false, dotSize, }: { - assignMode: AssignMode; + assignMode: AssignMode | null; mirror: boolean; onlyAssigned?: boolean; rolesWithErrors?: Partial>; @@ -148,8 +148,7 @@ export function BodyAssignment({ const hasBodyPart = useCallback( (part: BodyPart) => COMMONS.includes(part) || - assignMode === AssignMode.All || - ASSIGNMENT_MODES[assignMode].includes(part), + (assignMode && ASSIGNMENT_MODES[assignMode].includes(part)), [assignMode] ); diff --git a/gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx b/gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx index 314b292259..6834af5dec 100644 --- a/gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx +++ b/gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx @@ -1,6 +1,6 @@ import { Radio } from '@/components/commons/Radio'; import { Typography } from '@/components/commons/Typography'; -import { AssignMode, defaultConfig, useConfig } from '@/hooks/config'; +import { AssignMode, useConfig } from '@/hooks/config'; import { ASSIGNMENT_MODES } from '@/components/onboarding/BodyAssignment'; import { useLocalization } from '@fluent/react'; import { useForm } from 'react-hook-form'; @@ -61,11 +61,20 @@ export function TrackerAssignOptions({ const connectedIMUTrackers = useAtomValue(connectedIMUTrackersAtom); const { config, setConfig } = useConfig(); - const { control, watch, setValue } = useForm<{ + + const getPreferredSet = () => { + return ( + (Object.entries(ASSIGN_MODE_OPTIONS).find( + ([_, count]) => count >= connectedIMUTrackers.length + )?.[0] as AssignMode) ?? AssignMode.All + ); + }; + + const { control, watch } = useForm<{ assignMode: AssignMode; }>({ defaultValues: { - assignMode: config?.assignMode ?? defaultConfig.assignMode, + assignMode: config?.assignMode || getPreferredSet(), }, }); const { assignMode } = watch(); @@ -74,19 +83,6 @@ export function TrackerAssignOptions({ setConfig({ assignMode }); }, [assignMode]); - useEffect(() => { - if (connectedIMUTrackers.length <= ASSIGN_MODE_OPTIONS[assignMode]) return; - - const selectedAssignMode = - (Object.entries(ASSIGN_MODE_OPTIONS).find( - ([_, count]) => count >= connectedIMUTrackers.length - )?.[0] as AssignMode) ?? AssignMode.All; - - if (assignMode !== selectedAssignMode) { - setValue('assignMode', selectedAssignMode); - } - }, [connectedIMUTrackers, assignMode]); - if (variant == 'dropdown') return ( diff --git a/gui/src/hooks/config.ts b/gui/src/hooks/config.ts index e1f64b4e7c..68b921d691 100644 --- a/gui/src/hooks/config.ts +++ b/gui/src/hooks/config.ts @@ -41,7 +41,7 @@ export interface Config { fonts: string[]; useTray: boolean | null; mirrorView: boolean; - assignMode: AssignMode; + assignMode: AssignMode | null; discordPresence: boolean; errorTracking: boolean | null; decorations: boolean; @@ -72,7 +72,7 @@ export const defaultConfig: Config = { fonts: ['poppins'], useTray: null, mirrorView: true, - assignMode: AssignMode.Core, + assignMode: null, discordPresence: false, errorTracking: null, decorations: false,