19 lines
601 B
TypeScript
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) })),
|
|
}));
|