fix: prevent stream exit during overlays
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { usePlaybackSuspenderStore } from "@/stores/playback-suspender-store";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { createPortal } from "react-dom";
|
import { createPortal } from "react-dom";
|
||||||
|
|
||||||
@@ -24,6 +25,14 @@ export function KeybindingsOverlay({
|
|||||||
groups,
|
groups,
|
||||||
title = "Keyboard Shortcuts",
|
title = "Keyboard Shortcuts",
|
||||||
}: KeybindingsOverlayProps) {
|
}: KeybindingsOverlayProps) {
|
||||||
|
// Suspend stream playback
|
||||||
|
useEffect(() => {
|
||||||
|
if (!open) return;
|
||||||
|
const { suspend, release } = usePlaybackSuspenderStore.getState();
|
||||||
|
suspend();
|
||||||
|
return release;
|
||||||
|
}, [open]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!open) return;
|
if (!open) return;
|
||||||
const handler = (e: KeyboardEvent) => {
|
const handler = (e: KeyboardEvent) => {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { updateParticleProperties } from "@/lib/firestore-particles";
|
import { updateParticleProperties } from "@/lib/firestore-particles";
|
||||||
import { particlePath, toFirestoreDocPath } from "@/lib/particle-path";
|
import { particlePath, toFirestoreDocPath } from "@/lib/particle-path";
|
||||||
import type { Particle } from "@/api/types";
|
import type { Particle } from "@/api/types";
|
||||||
|
import { usePlaybackSuspenderStore } from "@/stores/playback-suspender-store";
|
||||||
|
|
||||||
interface RenameStreamOverlayProps {
|
interface RenameStreamOverlayProps {
|
||||||
networkId: string;
|
networkId: string;
|
||||||
@@ -17,6 +18,13 @@ export function RenameStreamOverlay({
|
|||||||
streamParticle,
|
streamParticle,
|
||||||
onClose,
|
onClose,
|
||||||
}: RenameStreamOverlayProps) {
|
}: RenameStreamOverlayProps) {
|
||||||
|
// Suspend stream playback
|
||||||
|
useEffect(() => {
|
||||||
|
const { suspend, release } = usePlaybackSuspenderStore.getState();
|
||||||
|
suspend();
|
||||||
|
return release;
|
||||||
|
}, []);
|
||||||
|
|
||||||
const [name, setName] = useState(streamParticle.properties.name);
|
const [name, setName] = useState(streamParticle.properties.name);
|
||||||
const [saving, setSaving] = useState(false);
|
const [saving, setSaving] = useState(false);
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { particlePath, toFirestoreDocPath } from "@/lib/particle-path";
|
|||||||
import { useNetwork } from "@/hooks/use-networks";
|
import { useNetwork } from "@/hooks/use-networks";
|
||||||
import { cn, getInitials } from "@/lib/utils";
|
import { cn, getInitials } from "@/lib/utils";
|
||||||
import type { Particle } from "@/api/types";
|
import type { Particle } from "@/api/types";
|
||||||
|
import { usePlaybackSuspenderStore } from "@/stores/playback-suspender-store";
|
||||||
|
|
||||||
interface StreamMembersOverlayProps {
|
interface StreamMembersOverlayProps {
|
||||||
networkId: string;
|
networkId: string;
|
||||||
@@ -27,6 +28,13 @@ export function StreamMembersOverlay({
|
|||||||
isCreator,
|
isCreator,
|
||||||
onClose,
|
onClose,
|
||||||
}: StreamMembersOverlayProps) {
|
}: StreamMembersOverlayProps) {
|
||||||
|
// Suspend stream playback
|
||||||
|
useEffect(() => {
|
||||||
|
const { suspend, release } = usePlaybackSuspenderStore.getState();
|
||||||
|
suspend();
|
||||||
|
return release;
|
||||||
|
}, []);
|
||||||
|
|
||||||
const network = useNetwork(networkId);
|
const network = useNetwork(networkId);
|
||||||
const humans = network?.humans ?? [];
|
const humans = network?.humans ?? [];
|
||||||
const creatorId = streamParticle.created_by_human_id;
|
const creatorId = streamParticle.created_by_human_id;
|
||||||
|
|||||||
Reference in New Issue
Block a user