about summary refs log tree commit diff
path: root/src/view/com/util/post-embeds/VideoVolumeContext.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/util/post-embeds/VideoVolumeContext.tsx')
-rw-r--r--src/view/com/util/post-embeds/VideoVolumeContext.tsx32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/view/com/util/post-embeds/VideoVolumeContext.tsx b/src/view/com/util/post-embeds/VideoVolumeContext.tsx
new file mode 100644
index 000000000..cccb93ba8
--- /dev/null
+++ b/src/view/com/util/post-embeds/VideoVolumeContext.tsx
@@ -0,0 +1,32 @@
+import React from 'react'
+
+const Context = React.createContext(
+  {} as {
+    muted: boolean
+    setMuted: (muted: boolean) => void
+  },
+)
+
+export function Provider({children}: {children: React.ReactNode}) {
+  const [muted, setMuted] = React.useState(true)
+
+  const value = React.useMemo(
+    () => ({
+      muted,
+      setMuted,
+    }),
+    [muted, setMuted],
+  )
+
+  return <Context.Provider value={value}>{children}</Context.Provider>
+}
+
+export function useVideoVolumeState() {
+  const context = React.useContext(Context)
+  if (!context) {
+    throw new Error(
+      'useVideoVolumeState must be used within a VideoVolumeProvider',
+    )
+  }
+  return context
+}