From b9abe3e7f72eec4ff4b4de864c13e7a1b737fa3c Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Sun, 1 Dec 2024 14:20:00 +0100 Subject: [PATCH] fix: stop playback on back button --- app/(auth)/player/direct-player.tsx | 14 +++++++++++++- app/(auth)/player/transcoding-player.tsx | 18 ++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/(auth)/player/direct-player.tsx b/app/(auth)/player/direct-player.tsx index 8c829b4b..0ab6343e 100644 --- a/app/(auth)/player/direct-player.tsx +++ b/app/(auth)/player/direct-player.tsx @@ -31,7 +31,7 @@ import * as Haptics from "expo-haptics"; import { useFocusEffect, useGlobalSearchParams } from "expo-router"; import { useAtomValue } from "jotai"; import React, { useCallback, useMemo, useRef, useState } from "react"; -import { Alert, View } from "react-native"; +import { Alert, BackHandler, View } from "react-native"; import { useSharedValue } from "react-native-reanimated"; export default function page() { @@ -338,10 +338,22 @@ export default function page() { : 0; }, [item]); + const backAction = () => { + videoRef.current?.stop(); + return false; + }; + useFocusEffect( React.useCallback(() => { + const onBackPress = () => { + return backAction(); + }; + + BackHandler.addEventListener("hardwareBackPress", onBackPress); + return async () => { videoRef.current?.stop(); + BackHandler.removeEventListener("hardwareBackPress", onBackPress); }; }, []) ); diff --git a/app/(auth)/player/transcoding-player.tsx b/app/(auth)/player/transcoding-player.tsx index 88810452..d3a9cf73 100644 --- a/app/(auth)/player/transcoding-player.tsx +++ b/app/(auth)/player/transcoding-player.tsx @@ -30,7 +30,7 @@ import React, { useRef, useState, } from "react"; -import { View } from "react-native"; +import { BackHandler, View } from "react-native"; import { useSharedValue } from "react-native-reanimated"; import Video, { OnProgressData, @@ -369,13 +369,23 @@ const Player = () => { })); }; + const backAction = () => { + videoRef.current?.pause(); + return false; + }; + useFocusEffect( - useCallback(() => { + React.useCallback(() => { + const onBackPress = () => { + return backAction(); + }; + + BackHandler.addEventListener("hardwareBackPress", onBackPress); play(); - return () => { + return async () => { videoRef.current?.pause(); - stop(); + BackHandler.removeEventListener("hardwareBackPress", onBackPress); }; }, []) );