add a way to skip rest calibration tutorial (#1186)

Co-authored-by: lucas lelievre <loucass003@gmail.com>
This commit is contained in:
Uriel
2024-10-09 16:19:06 +02:00
committed by GitHub
parent 1a88eba476
commit 449c6f80dc
3 changed files with 22 additions and 1 deletions

View File

@@ -702,6 +702,7 @@ onboarding-calibration_tutorial-status-waiting = Waiting for you
onboarding-calibration_tutorial-status-calibrating = Calibrating
onboarding-calibration_tutorial-status-success = Nice!
onboarding-calibration_tutorial-status-error = The tracker was moved
onboarding-calibration_tutorial-skip = Skip tutorial
## Tracker assignment tutorial
onboarding-assignment_tutorial = How to prepare a Slime Tracker before putting it on

View File

@@ -12,6 +12,7 @@ import { useTrackers } from '@/hooks/tracker';
import { useRestCalibrationTrackers } from '@/hooks/imu-logic';
import { averageVector, Vector3FromVec3fT } from '@/maths/vector3';
import { Vector3 } from 'three';
import { useTimeout } from '@/hooks/timeout';
export enum CalibrationStatus {
SUCCESS,
@@ -29,10 +30,12 @@ export function CalibrationTutorialPage() {
const [calibrationStatus, setCalibrationStatus] = useState(
CalibrationStatus.WAITING
);
const [skipButton, setSkipButton] = useState(false);
const { timer, isCounting, startCountdown, abortCountdown } = useCountdown({
duration: IMU_CALIBRATION_TIME,
onCountdownEnd: () => setCalibrationStatus(CalibrationStatus.SUCCESS),
});
useTimeout(() => setSkipButton(true), 10000);
const { useConnectedIMUTrackers } = useTrackers();
const connectedIMUTrackers = useConnectedIMUTrackers();
const restCalibrationTrackers =
@@ -192,6 +195,13 @@ export function CalibrationTutorialPage() {
{l10n.getString('onboarding-continue')}
</Button>
</div>
<Button
variant="secondary"
to="/onboarding/assign-tutorial"
className={classNames('xs:ml-auto', !skipButton && 'hidden')}
>
{l10n.getString('onboarding-calibration_tutorial-skip')}
</Button>
</div>
</div>
<div className="mobile:hidden flex self-center w-[32rem] mobile:absolute">

View File

@@ -1,11 +1,21 @@
import { useMemo } from 'react';
import { FlatDeviceTracker } from './app';
const IGNORED_BOARDS = new Set(['Sony Mocopi', 'Haritora']);
export function useIsRestCalibrationTrackers(
connectedTrackers: FlatDeviceTracker[]
): boolean {
const imuExists = useMemo(
() => connectedTrackers.some((tracker) => tracker.tracker.info?.isImu),
() =>
connectedTrackers.some(
(tracker) =>
tracker.tracker.info?.isImu &&
!(
tracker.device?.hardwareInfo?.boardType &&
IGNORED_BOARDS.has(tracker.device?.hardwareInfo?.boardType as string)
)
),
[connectedTrackers]
);