mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-15 17:12:59 -04:00
wuh
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Multi Roomba Rover" />
|
||||
<title>Multi Roomba Rover</title>
|
||||
<script type="module" crossorigin src="/assets/index-D7nzoVy2.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-BnSgZj98.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-B1UrCI1T.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -5,16 +5,17 @@ export function useRoomCameraSnapshots(sourceList = []) {
|
||||
const socket = useSocket();
|
||||
const [feeds, setFeeds] = useState({});
|
||||
const objectUrls = useRef(new Map());
|
||||
const entriesKey = useMemo(() => sourceList.map((e) => (typeof e === 'string' ? e : e.id)).join('|'), [sourceList]);
|
||||
const ids = useMemo(() => sourceList.map((e) => (typeof e === 'string' ? e : e.id)), [sourceList]);
|
||||
const idsKey = useMemo(() => ids.join('|'), [ids]);
|
||||
|
||||
useEffect(() => {
|
||||
objectUrls.current.forEach((url) => URL.revokeObjectURL(url));
|
||||
objectUrls.current.clear();
|
||||
setFeeds({});
|
||||
}, [entriesKey]);
|
||||
}, [idsKey]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!sourceList.length || !socket) {
|
||||
if (!ids.length || !socket) {
|
||||
return undefined;
|
||||
}
|
||||
let cancelled = false;
|
||||
@@ -58,17 +59,17 @@ export function useRoomCameraSnapshots(sourceList = []) {
|
||||
socket.on('roomCamera:frame', handleFrame);
|
||||
socket.on('roomCamera:status', handleStatus);
|
||||
|
||||
socket.emit('roomCamera:subscribe', { ids: sourceList.map((e) => (typeof e === 'string' ? e : e.id)) });
|
||||
socket.emit('roomCamera:subscribe', { ids });
|
||||
|
||||
return () => {
|
||||
cancelled = true;
|
||||
socket.emit('roomCamera:unsubscribe', { ids: sourceList.map((e) => (typeof e === 'string' ? e : e.id)) });
|
||||
socket.emit('roomCamera:unsubscribe', { ids });
|
||||
socket.off('roomCamera:frame', handleFrame);
|
||||
socket.off('roomCamera:status', handleStatus);
|
||||
objectUrls.current.forEach((url) => URL.revokeObjectURL(url));
|
||||
objectUrls.current.clear();
|
||||
};
|
||||
}, [socket, sourceList, entriesKey]);
|
||||
}, [socket, idsKey, ids]);
|
||||
|
||||
return feeds;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user