diff --git a/src/components/player/KSPlayerWithTransition.tsx b/src/components/player/KSPlayerWithTransition.tsx
deleted file mode 100644
index d568b0e7..00000000
--- a/src/components/player/KSPlayerWithTransition.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import React, { useEffect, useRef } from 'react';
-import { Animated, Easing, BackHandler } from 'react-native';
-import { useNavigation } from '@react-navigation/native';
-import KSPlayerCore from './KSPlayerCore';
-
-const KSPlayerWithTransition: React.FC = () => {
- const fadeAnim = useRef(new Animated.Value(0)).current;
- const scaleAnim = useRef(new Animated.Value(1.15)).current;
- const translateYAnim = useRef(new Animated.Value(0)).current;
- const blurRadiusAnim = useRef(new Animated.Value(20)).current;
- const rotateAnim = useRef(new Animated.Value(0.5)).current;
- const isExiting = useRef(false);
- const navigation = useNavigation();
-
- useEffect(() => {
- // Cinematic entrance animation with multiple stages
- // Stage 1: Quick fade in and scale down (zoom out effect)
- Animated.sequence([
- Animated.parallel([
- // Ultra-fast initial fade
- Animated.timing(fadeAnim, {
- toValue: 1,
- duration: 200,
- easing: Easing.out(Easing.quad),
- useNativeDriver: true,
- }),
- // Zoom out from 1.15x to create depth
- Animated.timing(scaleAnim, {
- toValue: 1,
- duration: 800,
- easing: Easing.bezier(0.25, 0.1, 0.25, 1), // Custom bezier for smooth deceleration
- useNativeDriver: true,
- }),
- // Subtle rotation for dynamic feel
- Animated.timing(rotateAnim, {
- toValue: 0,
- duration: 800,
- easing: Easing.out(Easing.cubic),
- useNativeDriver: true,
- }),
- ]),
- ]).start();
-
- // Handle back button press with exit animation
- const backHandler = BackHandler.addEventListener('hardwareBackPress', () => {
- if (!isExiting.current) {
- isExiting.current = true;
-
- // Start exit animation
- Animated.parallel([
- // Fade out
- Animated.timing(fadeAnim, {
- toValue: 0,
- duration: 300,
- easing: Easing.in(Easing.cubic),
- useNativeDriver: true,
- }),
- // Scale down slightly
- Animated.timing(scaleAnim, {
- toValue: 0.95,
- duration: 300,
- easing: Easing.in(Easing.cubic),
- useNativeDriver: true,
- }),
- // Slide down slightly
- Animated.timing(translateYAnim, {
- toValue: 15,
- duration: 300,
- easing: Easing.in(Easing.cubic),
- useNativeDriver: true,
- }),
- ]).start(() => {
- // Navigate back after animation completes
- navigation.goBack();
- });
-
- return true; // Prevent default back behavior
- }
- return false;
- });
-
- return () => {
- backHandler.remove();
- };
- }, [navigation]);
-
- // Interpolate rotation (0.5 deg to 0 deg for subtle dynamic effect)
- const rotation = rotateAnim.interpolate({
- inputRange: [0, 1],
- outputRange: ['0deg', '0.5deg'],
- });
-
- return (
-
-
-
- );
-};
-
-export default KSPlayerWithTransition;
diff --git a/src/navigation/AppNavigator.tsx b/src/navigation/AppNavigator.tsx
index ffe0c721..365504a0 100644
--- a/src/navigation/AppNavigator.tsx
+++ b/src/navigation/AppNavigator.tsx
@@ -39,7 +39,6 @@ import SettingsScreen from '../screens/SettingsScreen';
import DownloadsScreen from '../screens/DownloadsScreen';
import MetadataScreen from '../screens/MetadataScreen';
import KSPlayerCore from '../components/player/KSPlayerCore';
-import KSPlayerWithTransition from '../components/player/KSPlayerWithTransition';
import AndroidVideoPlayer from '../components/player/AndroidVideoPlayer';
import CatalogScreen from '../screens/CatalogScreen';
import AddonsScreen from '../screens/AddonsScreen';
@@ -1189,10 +1188,10 @@ const InnerNavigator = ({ initialRouteName }: { initialRouteName?: keyof RootSta
/>
{
}, [type, id, currentEpisode?.season_number, currentEpisode?.episode_number]);
const navigateToPlayer = useCallback(async (stream: Stream, options?: { forceVlc?: boolean; headers?: Record }) => {
+ // Add 50ms delay before navigating to player
+ await new Promise(resolve => setTimeout(resolve, 50));
+
// Prepare available streams for the change source feature
const streamsToPass = (type === 'series' || (type === 'other' && selectedEpisode)) ? episodeStreams : groupedStreams;