diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-08-13 22:00:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-13 14:00:03 -0700 |
commit | 630ebf523d2e70db295ef1dc1705ea38c05104af (patch) | |
tree | 977c73c2843e94241101e43c4e11da8ec7457c29 | |
parent | 57be2ea15b5bea019abf95a590640d688b7a8633 (diff) | |
download | voidsky-630ebf523d2e70db295ef1dc1705ea38c05104af.tar.zst |
[Video] Try/catch video play/pause (#4930)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
-rw-r--r-- | src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx | 16 | ||||
-rw-r--r-- | src/view/com/util/post-embeds/VideoPlayerContext.tsx | 12 |
2 files changed, 21 insertions, 7 deletions
diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx index 5cbe01872..11fff4796 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerNative.tsx @@ -8,6 +8,7 @@ import {useIsFocused} from '@react-navigation/native' import {HITSLOP_30} from '#/lib/constants' import {useAppState} from '#/lib/hooks/useAppState' +import {logger} from '#/logger' import {useVideoPlayer} from '#/view/com/util/post-embeds/VideoPlayerContext' import {android, atoms as a, useTheme} from '#/alf' import {Mute_Stroke2_Corner0_Rounded as MuteIcon} from '#/components/icons/Mute' @@ -25,10 +26,17 @@ export function VideoEmbedInnerNative() { const isAppFocused = useAppState() useEffect(() => { - if (isAppFocused === 'active' && isScreenFocused && !player.playing) { - player.play() - } else if (player.playing) { - player.pause() + try { + if (isAppFocused === 'active' && isScreenFocused && !player.playing) { + player.play() + } else if (player.playing) { + player.pause() + } + } catch (err) { + logger.error( + 'Failed to play/pause while backgrounding/switching screens', + {safeMessage: err}, + ) } }, [isAppFocused, player, isScreenFocused]) diff --git a/src/view/com/util/post-embeds/VideoPlayerContext.tsx b/src/view/com/util/post-embeds/VideoPlayerContext.tsx index 8f2d11f6b..20ebb6d2f 100644 --- a/src/view/com/util/post-embeds/VideoPlayerContext.tsx +++ b/src/view/com/util/post-embeds/VideoPlayerContext.tsx @@ -2,6 +2,8 @@ import React, {useContext} from 'react' import type {VideoPlayer} from 'expo-video' import {useVideoPlayer as useExpoVideoPlayer} from 'expo-video' +import {logger} from '#/logger' + const VideoPlayerContext = React.createContext<VideoPlayer | null>(null) export function VideoPlayerProvider({ @@ -13,9 +15,13 @@ export function VideoPlayerProvider({ }) { // eslint-disable-next-line @typescript-eslint/no-shadow const player = useExpoVideoPlayer(source, player => { - player.loop = true - player.muted = true - player.play() + try { + player.loop = true + player.muted = true + player.play() + } catch (err) { + logger.error('Failed to init video player', {safeMessage: err}) + } }) return ( |