about summary refs log tree commit diff
path: root/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-09-13 14:07:13 -0700
committerGitHub <noreply@github.com>2024-09-13 14:07:13 -0700
commit843f9925f5d0773db321e617c1bd0be6a308ef7f (patch)
tree1233962c59d92247f64e7dd299910653a76bf78a /src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx
parent791bc7afbe0efd9519740b999799e6002b0fc835 (diff)
downloadvoidsky-843f9925f5d0773db321e617c1bd0be6a308ef7f.tar.zst
[Video] Remember mute state while scrolling (#5331)
Diffstat (limited to 'src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx')
-rw-r--r--src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx
index 39ed990ab..ee71daa83 100644
--- a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx
+++ b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx
@@ -9,6 +9,7 @@ import {useLingui} from '@lingui/react'
 import {HITSLOP_30} from '#/lib/constants'
 import {clamp} from '#/lib/numbers'
 import {useAutoplayDisabled} from '#/state/preferences'
+import {useVideoVolumeState} from 'view/com/util/post-embeds/VideoVolumeContext'
 import {atoms as a, useTheme} from '#/alf'
 import {useIsWithinMessage} from '#/components/dms/MessageContext'
 import {Mute_Stroke2_Corner0_Rounded as MuteIcon} from '#/components/icons/Mute'
@@ -37,8 +38,8 @@ export const VideoEmbedInnerNative = React.forwardRef(
     const videoRef = useRef<BlueskyVideoView>(null)
     const autoplayDisabled = useAutoplayDisabled()
     const isWithinMessage = useIsWithinMessage()
+    const {muted, setMuted} = useVideoVolumeState()
 
-    const [isMuted, setIsMuted] = React.useState(true)
     const [isPlaying, setIsPlaying] = React.useState(false)
     const [timeRemaining, setTimeRemaining] = React.useState(0)
     const [error, setError] = React.useState<string>()
@@ -66,7 +67,7 @@ export const VideoEmbedInnerNative = React.forwardRef(
         <BlueskyVideoView
           url={embed.playlist}
           autoplay={!autoplayDisabled && !isWithinMessage}
-          beginMuted={true}
+          beginMuted={autoplayDisabled ? false : muted}
           style={[a.rounded_sm]}
           onActiveChange={e => {
             setIsActive(e.nativeEvent.isActive)
@@ -75,7 +76,7 @@ export const VideoEmbedInnerNative = React.forwardRef(
             setIsLoading(e.nativeEvent.isLoading)
           }}
           onMutedChange={e => {
-            setIsMuted(e.nativeEvent.isMuted)
+            setMuted(e.nativeEvent.isMuted)
           }}
           onStatusChange={e => {
             setStatus(e.nativeEvent.status)
@@ -103,7 +104,6 @@ export const VideoEmbedInnerNative = React.forwardRef(
           togglePlayback={() => {
             videoRef.current?.togglePlayback()
           }}
-          isMuted={isMuted}
           isPlaying={isPlaying}
           timeRemaining={timeRemaining}
         />
@@ -119,17 +119,16 @@ function VideoControls({
   togglePlayback,
   timeRemaining,
   isPlaying,
-  isMuted,
 }: {
   enterFullscreen: () => void
   toggleMuted: () => void
   togglePlayback: () => void
   timeRemaining: number
   isPlaying: boolean
-  isMuted: boolean
 }) {
   const {_} = useLingui()
   const t = useTheme()
+  const {muted} = useVideoVolumeState()
 
   // show countdown when:
   // 1. timeRemaining is a number - was seeing NaNs
@@ -161,10 +160,10 @@ function VideoControls({
 
       <ControlButton
         onPress={toggleMuted}
-        label={isMuted ? _(msg`Unmute`) : _(msg`Mute`)}
+        label={muted ? _(msg`Unmute`) : _(msg`Mute`)}
         accessibilityHint={_(msg`Tap to toggle sound`)}
         style={{right: 6}}>
-        {isMuted ? (
+        {muted ? (
           <MuteIcon width={13} fill={t.palette.white} />
         ) : (
           <UnmuteIcon width={13} fill={t.palette.white} />