From 1a7078a7a22e215bc225432688cd4f681dc65ae2 Mon Sep 17 00:00:00 2001
From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
Date: Wed, 15 Jul 2026 11:42:59 -0500
Subject: [PATCH] fix crash in multi-camera export dialog when a camera group
has an invalid or default icon
---
web/src/components/icons/IconPicker.tsx | 6 +++++-
web/src/components/overlay/ExportDialog.tsx | 7 ++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/web/src/components/icons/IconPicker.tsx b/web/src/components/icons/IconPicker.tsx
index a4775ae21b..73f64527c3 100644
--- a/web/src/components/icons/IconPicker.tsx
+++ b/web/src/components/icons/IconPicker.tsx
@@ -153,11 +153,15 @@ export default function IconPicker({
}
type IconRendererProps = {
- icon: IconType;
+ icon: IconType | undefined;
size?: number;
className?: string;
};
export function IconRenderer({ icon, size, className }: IconRendererProps) {
+ if (!icon) {
+ return null;
+ }
+
return <>{React.createElement(icon, { size, className })}>;
}
diff --git a/web/src/components/overlay/ExportDialog.tsx b/web/src/components/overlay/ExportDialog.tsx
index d4f5b14a7b..0b0cb84c13 100644
--- a/web/src/components/overlay/ExportDialog.tsx
+++ b/web/src/components/overlay/ExportDialog.tsx
@@ -65,6 +65,7 @@ import { Textarea } from "../ui/textarea";
import { useNavigate } from "react-router-dom";
import { useIsAdmin } from "@/hooks/use-is-admin";
import { isReplayCamera } from "@/utils/cameraUtil";
+import { isValidIconName } from "@/utils/iconUtil";
const EXPORT_OPTIONS = [
"1",
@@ -1066,7 +1067,11 @@ export function ExportContent({
}
>
{group.name}