Skip to content

Commit 5c83606

Browse files
feat: prewarm recording picker window/display thumbnails (#1125)
1 parent 57e7b7c commit 5c83606

File tree

1 file changed

+27
-10
lines changed
  • apps/desktop/src/routes/(window-chrome)/new-main

1 file changed

+27
-10
lines changed

apps/desktop/src/routes/(window-chrome)/new-main/index.tsx

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,26 +318,45 @@ function Page() {
318318

319319
const displayTargets = useQuery(() => ({
320320
...listDisplaysWithThumbnails,
321-
enabled: hasOpenedDisplayMenu(),
322321
refetchInterval: false,
323322
}));
324323

325324
const windowTargets = useQuery(() => ({
326325
...listWindowsWithThumbnails,
327-
enabled: hasOpenedWindowMenu(),
328326
refetchInterval: false,
329327
}));
330328

329+
const screens = useQuery(() => listScreens);
330+
const windows = useQuery(() => listWindows);
331+
331332
const hasDisplayTargetsData = () => displayTargets.status === "success";
332333
const hasWindowTargetsData = () => windowTargets.status === "success";
333334

334-
const displayTargetsData = createMemo(() =>
335-
hasDisplayTargetsData() ? displayTargets.data : undefined,
336-
);
335+
const existingDisplayIds = createMemo(() => {
336+
const currentScreens = screens.data;
337+
if (!currentScreens) return undefined;
338+
return new Set(currentScreens.map((screen) => screen.id));
339+
});
337340

338-
const windowTargetsData = createMemo(() =>
339-
hasWindowTargetsData() ? windowTargets.data : undefined,
340-
);
341+
const displayTargetsData = createMemo(() => {
342+
if (!hasDisplayTargetsData()) return undefined;
343+
const ids = existingDisplayIds();
344+
if (!ids) return displayTargets.data;
345+
return displayTargets.data?.filter((target) => ids.has(target.id));
346+
});
347+
348+
const existingWindowIds = createMemo(() => {
349+
const currentWindows = windows.data;
350+
if (!currentWindows) return undefined;
351+
return new Set(currentWindows.map((win) => win.id));
352+
});
353+
354+
const windowTargetsData = createMemo(() => {
355+
if (!hasWindowTargetsData()) return undefined;
356+
const ids = existingWindowIds();
357+
if (!ids) return windowTargets.data;
358+
return windowTargets.data?.filter((target) => ids.has(target.id));
359+
});
341360

342361
const displayMenuLoading = () =>
343362
!hasDisplayTargetsData() &&
@@ -430,8 +449,6 @@ function Page() {
430449
else commands.closeTargetSelectOverlays();
431450
});
432451

433-
const screens = useQuery(() => listScreens);
434-
const windows = useQuery(() => listWindows);
435452
const cameras = useQuery(() => listVideoDevices);
436453
const mics = useQuery(() => listAudioDevices);
437454

0 commit comments

Comments
 (0)