diff options
author | Hailey <me@haileyok.com> | 2024-09-06 15:01:05 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-06 15:01:05 -0700 |
commit | 7e4f8cabd3971bdf19647d122e3267ab6d1991e8 (patch) | |
tree | 412ab40714dde2e8d5b53a9fe931648053bb81fe /src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx | |
parent | 00ce95893d9f661a378db002f25def281e433d8b (diff) | |
download | voidsky-7e4f8cabd3971bdf19647d122e3267ab6d1991e8.tar.zst |
[Video] Handle push/pop on Android for autoplay (#5194)
Diffstat (limited to 'src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx')
-rw-r--r-- | src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx b/src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx index da8c7a98c..95fa0bb0e 100644 --- a/src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx +++ b/src/view/com/util/post-embeds/ActiveVideoNativeContext.tsx @@ -1,7 +1,7 @@ import React from 'react' import {useVideoPlayer, VideoPlayer} from 'expo-video' -import {isNative} from '#/platform/detection' +import {isAndroid, isNative} from '#/platform/detection' const Context = React.createContext<{ activeSource: string @@ -26,7 +26,18 @@ export function Provider({children}: {children: React.ReactNode}) { }) const setActiveSourceOuter = (src: string | null, viewId: string | null) => { - setActiveSource(src ? src : '') + // HACK + // expo-video doesn't like it when you try and move a `player` to another `VideoView`. Instead, we need to actually + // unregister that player to let the new screen register it. This is only a problem on Android, so we only need to + // apply it there. + if (src === activeSource && isAndroid) { + setActiveSource('') + setTimeout(() => { + setActiveSource(src ? src : '') + }, 100) + } else { + setActiveSource(src ? src : '') + } setActiveViewId(viewId ? viewId : '') } |