mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import React from 'react'
2
3const Context = React.createContext<{
4 // native
5 muted: boolean
6 setMuted: React.Dispatch<React.SetStateAction<boolean>>
7 // web
8 volume: number
9 setVolume: React.Dispatch<React.SetStateAction<number>>
10} | null>(null)
11
12export function Provider({children}: {children: React.ReactNode}) {
13 const [muted, setMuted] = React.useState(true)
14 const [volume, setVolume] = React.useState(1)
15
16 const value = React.useMemo(
17 () => ({
18 muted,
19 setMuted,
20 volume,
21 setVolume,
22 }),
23 [muted, setMuted, volume, setVolume],
24 )
25
26 return <Context.Provider value={value}>{children}</Context.Provider>
27}
28
29export function useVideoVolumeState() {
30 const context = React.useContext(Context)
31 if (!context) {
32 throw new Error(
33 'useVideoVolumeState must be used within a VideoVolumeProvider',
34 )
35 }
36 return [context.volume, context.setVolume] as const
37}
38
39export function useVideoMuteState() {
40 const context = React.useContext(Context)
41 if (!context) {
42 throw new Error(
43 'useVideoMuteState must be used within a VideoVolumeProvider',
44 )
45 }
46 return [context.muted, context.setMuted] as const
47}