Files
llink/js/src/stores/playback-suspender-store.ts
T

19 lines
601 B
TypeScript

import { create } from "zustand";
/**
* Overlays that should pause stream playback (e.g. attachment lightbox) call
* `suspend()` on mount and `release()` on unmount. Stream playback is suspended
* whenever `suspendCount > 0`.
*/
interface PlaybackSuspenderState {
suspendCount: number;
suspend: () => void;
release: () => void;
}
export const usePlaybackSuspenderStore = create<PlaybackSuspenderState>((set) => ({
suspendCount: 0,
suspend: () => set((s) => ({ suspendCount: s.suspendCount + 1 })),
release: () => set((s) => ({ suspendCount: Math.max(0, s.suspendCount - 1) })),
}));