Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dashboard: fix alert audio #1002

Merged
merged 2 commits into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export default tseslint.config(
...tseslint.configs.recommended,
{
files: ['**/*.{js,jsx,mjs,cjs,ts,tsx}'],
plugins: { react, reactHooks },
plugins: { react, 'react-hooks': reactHooks },
settings: {
react: {
version: 'detect',
Expand All @@ -24,6 +24,7 @@ export default tseslint.config(
'@typescript-eslint/ban-types': ['error', { types: { '{}': false }, extendDefaults: true }],
'@typescript-eslint/no-loss-of-precision': 'off',
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
...reactHooks.configs.recommended.rules,
},
},
...compat.config(storybook.configs.recommended),
Expand Down
2 changes: 1 addition & 1 deletion packages/dashboard/app-config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
},
"properties": {
"alertAudioPath": {
"description": "Url to a .wav file to be played when an alert occurs on the dashboard.",
"description": "Url to a file to be played when an alert occurs on the dashboard.",
"type": "string"
},
"allowedTasks": {
Expand Down
2 changes: 1 addition & 1 deletion packages/dashboard/src/app-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ export interface RuntimeConfig {
allowedTasks: TaskResource[];

/**
* Url to a .wav file to be played when an alert occurs on the dashboard.
* Url to a file to be played when an alert occurs on the dashboard.
*/
alertAudioPath?: string;

Expand Down
9 changes: 5 additions & 4 deletions packages/dashboard/src/components/alert-manager.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -258,9 +258,10 @@ export const AlertManager = React.memo(() => {
const rmf = React.useContext(RmfAppContext);
const [openAlerts, setOpenAlerts] = React.useState<Record<string, AlertRequest>>({});
const appConfig = React.useContext(AppConfigContext);
const alertAudio: HTMLAudioElement | undefined = appConfig.alertAudioPath
? new Audio(appConfig.alertAudioPath)
: undefined;
const alertAudio: HTMLAudioElement | undefined = React.useMemo(
() => (appConfig.alertAudioPath ? new Audio(appConfig.alertAudioPath) : undefined),
[appConfig.alertAudioPath],
);

React.useEffect(() => {
if (!rmf) {
Expand Down Expand Up @@ -349,7 +350,7 @@ export const AlertManager = React.memo(() => {
sub.unsubscribe();
}
};
}, [rmf]);
}, [rmf, alertAudio]);

const removeOpenAlert = (id: string) => {
const filteredAlerts = Object.fromEntries(
Expand Down
15 changes: 11 additions & 4 deletions packages/dashboard/src/components/map-app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export const MapApp: StyledComponent<MicroAppProps & MUIStyledCommonProps<Theme>
clearInterval(interval);
debug(`cleared interval ${interval}`);
};
}, [trajManager, currentLevel, trajectoryTime, trajectoryAnimScale]);
}, [trajManager, currentLevel, trajectoryTime, trajectoryAnimScale, authenticator.token]);

React.useEffect(() => {
if (!rmf) {
Expand Down Expand Up @@ -201,7 +201,7 @@ export const MapApp: StyledComponent<MicroAppProps & MUIStyledCommonProps<Theme>
sub.unsubscribe();
}
};
}, [rmf, resourceManager]);
}, [rmf, resourceManager, appConfig.defaultMapLevel]);

const [imageUrl, setImageUrl] = React.useState<string | null>(null);
// Since the configurable zoom level is for supporting the lowest resolution
Expand Down Expand Up @@ -307,7 +307,14 @@ export const MapApp: StyledComponent<MicroAppProps & MUIStyledCommonProps<Theme>
});
setRobots(newRobots);
})();
}, [fleets, robotsStore, resourceManager, currentLevel, currentLevelOfRobots]);
}, [
fleets,
robotsStore,
resourceManager,
currentLevel,
currentLevelOfRobots,
resources.fleets,
]);

const { current: robotLocations } = React.useRef<
Record<string, [number, number, number, string]>
Expand Down Expand Up @@ -485,7 +492,7 @@ export const MapApp: StyledComponent<MicroAppProps & MUIStyledCommonProps<Theme>
sub.unsubscribe();
}
};
}, [robotLocations, sceneBoundingBox, buildingMap]);
}, [robotLocations, sceneBoundingBox, buildingMap, appConfig.defaultRobotZoom]);

React.useEffect(() => {
if (!sceneBoundingBox) {
Expand Down
2 changes: 1 addition & 1 deletion packages/dashboard/src/components/rmf-app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export function RmfApp(props: RmfAppProps): JSX.Element {
);
return undefined;
}
}, [authenticator]);
}, [authenticator, appConfig]);

return (
<UserProfileProvider authenticator={authenticator} basePath={appConfig.rmfServerUrl}>
Expand Down
4 changes: 2 additions & 2 deletions packages/dashboard/src/components/robots/robot-summary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ export const RobotSummary = React.memo(({ onClose, robot }: RobotSummaryProps) =
}
}, [taskState]);

const theme = useTheme();

const returnDialogContent = () => {
const contents = [
{
Expand Down Expand Up @@ -221,8 +223,6 @@ export const RobotSummary = React.memo(({ onClose, robot }: RobotSummaryProps) =
});
}

const theme = useTheme();

return (
<>
{contents.map((message, index) => (
Expand Down
2 changes: 1 addition & 1 deletion packages/dashboard/src/components/tasks/task-schedule.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ export const TaskSchedule = () => {
}),
);
},
[rmf, allowedTasks],
[rmf],
);

const CustomCalendarEditor = ({ scheduler, value, onChange }: CustomCalendarEditorProps) => {
Expand Down
4 changes: 2 additions & 2 deletions packages/dashboard/src/components/tasks/task-summary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ export const TaskSummary = React.memo((props: TaskSummaryProps) => {
return () => sub.unsubscribe();
}, [rmf, task]);

const theme = useTheme();

const returnDialogContent = () => {
const contents = [
{
Expand All @@ -132,8 +134,6 @@ export const TaskSummary = React.memo((props: TaskSummaryProps) => {
}
}

const theme = useTheme();

return (
<>
{contents.map((message, index) => (
Expand Down
Loading