Skip to content

Commit

Permalink
fix trackerName logic for error status (#715)
Browse files Browse the repository at this point in the history
  • Loading branch information
ImUrX committed Jun 15, 2023
1 parent 28b37b7 commit ce3731f
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 10 deletions.
5 changes: 3 additions & 2 deletions gui/src/components/WidgetsComponent.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Localized } from '@fluent/react';
import { Localized, useLocalization } from '@fluent/react';
import { BVHButton } from './BVHButton';
import { ClearDriftCompensationButton } from './ClearDriftCompensationButton';
import { TrackingPauseButton } from './TrackingPauseButton';
Expand All @@ -25,6 +25,7 @@ export function WidgetsComponent() {
useState(false);
const { trackers } = useAppContext();
const { statuses } = useStatusContext();
const { l10n } = useLocalization();
const unprioritizedStatuses = useMemo(
() => Object.values(statuses).filter((status) => !status.prioritized),
[statuses]
Expand Down Expand Up @@ -56,7 +57,7 @@ export function WidgetsComponent() {
{unprioritizedStatuses.map((status) => (
<Localized
id={`status_system-${StatusData[status.dataType]}`}
vars={parseStatusToLocale(status, trackers)}
vars={parseStatusToLocale(status, trackers, l10n)}
key={status.id}
>
<TipBox whitespace={false} hideIcon={true}>
Expand Down
11 changes: 9 additions & 2 deletions gui/src/components/home/Home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
import { useMemo } from 'react';
import { WarningBox } from '../commons/TipBox';
import { HeadsetIcon } from '../commons/icon/HeadsetIcon';
import classNames from 'classnames';

const DONT_REPEAT_STATUSES = [StatusData.StatusTrackerReset];

Expand Down Expand Up @@ -48,14 +49,20 @@ export function Home() {
<HeadsetIcon></HeadsetIcon>
</NavLink>
<div className="h-full overflow-y-auto">
<div className="px-2 pt-4 gap-3 w-full grid md:grid-cols-2 mobile:grid-cols-1">
<div
className={classNames(
'px-2 pt-4 gap-3 w-full grid md:grid-cols-2 mobile:grid-cols-1',
filteredStatuses.filter(([, status]) => status.prioritized)
.length === 0 && 'hidden'
)}
>
{filteredStatuses
.filter(([, status]) => status.prioritized)
.map(([, status]) => (
<Localized
key={status.id}
id={`status_system-${StatusData[status.dataType]}`}
vars={parseStatusToLocale(status, trackers)}
vars={parseStatusToLocale(status, trackers, l10n)}
>
<WarningBox whitespace={false}>
{`Warning, you should fix ${StatusData[status.dataType]}`}
Expand Down
32 changes: 26 additions & 6 deletions gui/src/hooks/status-system.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { createContext, useEffect, useReducer, useContext } from 'react';
import {
BodyPart,
RpcMessage,
StatusData,
StatusMessageT,
Expand All @@ -15,6 +16,7 @@ import {
import { useWebsocketAPI } from './websocket-api';
import { FluentVariable } from '@fluent/bundle';
import { FlatDeviceTracker } from './app';
import { ReactLocalization } from '@fluent/react';

type StatusSystemStateAction =
| StatusSystemStateFixedAction
Expand Down Expand Up @@ -114,7 +116,8 @@ export function useStatusContext() {

export function parseStatusToLocale(
status: StatusMessageT,
trackers: FlatDeviceTracker[] | null
trackers: FlatDeviceTracker[] | null,
l10n: ReactLocalization
): Record<string, FluentVariable> {
switch (status.dataType) {
case StatusData.NONE:
Expand All @@ -140,11 +143,21 @@ export function parseStatusToLocale(
tracker?.trackerId?.trackerNum == data.trackerId.trackerNum &&
tracker?.trackerId?.deviceId?.id == data.trackerId.deviceId.id
);
if (typeof tracker?.tracker.info?.customName !== 'string') return {};

return {
trackerName: tracker.tracker.info?.customName,
};
if (!tracker)
return {
trackerName: 'unknown',
};
const name = tracker.tracker.info?.customName
? tracker.tracker.info?.customName
: tracker.tracker.info?.bodyPart
? l10n.getString('body_part-' + BodyPart[tracker.tracker.info?.bodyPart])
: tracker.tracker.info?.displayName || 'unknown';
if (typeof name !== 'string') {
return {
trackerName: new TextDecoder().decode(name),
};
}
return { trackerName: name };
}
}
}
Expand All @@ -166,6 +179,13 @@ export function trackerStatusRelated(
data.trackerId?.deviceId?.id === tracker.trackerId?.deviceId?.id
);
}
case StatusData.StatusTrackerError: {
const data = status.data as StatusTrackerErrorT;
return (
data.trackerId?.trackerNum == tracker.trackerId?.trackerNum &&
data.trackerId?.deviceId?.id === tracker.trackerId?.deviceId?.id
);
}
default:
return false;
}
Expand Down

0 comments on commit ce3731f

Please sign in to comment.