mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
Update progress thresholds across components to 85% for improved user experience
This update modifies various components, including ContinueWatchingSection, HeroSection, SeriesContent, and player components, to adjust the progress completion threshold from 95% to 85%. This change ensures that users can continue watching content that is closer to completion, enhancing engagement and usability. Additionally, related logic in the useWatchProgress hook and HomeScreen is updated to reflect this new threshold, providing a consistent experience across the application.
This commit is contained in:
parent
e14783343c
commit
ddf8d007b7
7 changed files with 19 additions and 19 deletions
|
|
@ -100,10 +100,10 @@ const ContinueWatchingSection = React.forwardRef<ContinueWatchingRef>((props, re
|
|||
const episodeId = episodeIdParts.length > 0 ? episodeIdParts.join(':') : undefined;
|
||||
const progress = allProgress[key];
|
||||
|
||||
// Skip items that are more than 95% complete (effectively finished)
|
||||
// Skip items that are more than 85% complete (effectively finished)
|
||||
const progressPercent = (progress.currentTime / progress.duration) * 100;
|
||||
|
||||
if (progressPercent >= 95) {
|
||||
if (progressPercent >= 85) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -332,7 +332,7 @@ const WatchProgressDisplay = React.memo(({
|
|||
}
|
||||
|
||||
// Enhanced display text with Trakt integration
|
||||
let displayText = progressPercent >= 95 ? 'Watched' : `${Math.round(progressPercent)}% watched`;
|
||||
let displayText = progressPercent >= 85 ? 'Watched' : `${Math.round(progressPercent)}% watched`;
|
||||
let syncStatus = '';
|
||||
|
||||
// Show Trakt sync status if user is authenticated
|
||||
|
|
@ -373,7 +373,7 @@ const WatchProgressDisplay = React.memo(({
|
|||
progressBoxScale.value = withTiming(1, { duration: 400 });
|
||||
progressBoxTranslateY.value = withTiming(0, { duration: 400 });
|
||||
|
||||
if (progressData.isWatched || (progressData.progressPercent && progressData.progressPercent >= 95)) {
|
||||
if (progressData.isWatched || (progressData.progressPercent && progressData.progressPercent >= 85)) {
|
||||
// Celebration animation sequence
|
||||
celebrationScale.value = withRepeat(
|
||||
withTiming(1.05, { duration: 200 }),
|
||||
|
|
@ -426,7 +426,7 @@ const WatchProgressDisplay = React.memo(({
|
|||
|
||||
if (!progressData) return null;
|
||||
|
||||
const isCompleted = progressData.isWatched || progressData.progressPercent >= 95;
|
||||
const isCompleted = progressData.isWatched || progressData.progressPercent >= 85;
|
||||
|
||||
return (
|
||||
<Animated.View style={[styles.watchProgressContainer, animatedStyle]}>
|
||||
|
|
@ -704,7 +704,7 @@ const HeroSection: React.FC<HeroSectionProps> = ({
|
|||
// Memoized play button text
|
||||
const playButtonText = useMemo(() => getPlayButtonText(), [getPlayButtonText]);
|
||||
|
||||
// Calculate if content is watched (>=95% progress) - check both local and Trakt progress
|
||||
// Calculate if content is watched (>=85% progress) - check both local and Trakt progress
|
||||
const isWatched = useMemo(() => {
|
||||
if (!watchProgress) return false;
|
||||
|
||||
|
|
@ -718,7 +718,7 @@ const HeroSection: React.FC<HeroSectionProps> = ({
|
|||
// Fall back to local progress
|
||||
if (watchProgress.duration === 0) return false;
|
||||
const progressPercent = (watchProgress.currentTime / watchProgress.duration) * 100;
|
||||
const localWatched = progressPercent >= 95;
|
||||
const localWatched = progressPercent >= 85;
|
||||
logger.log(`[HeroSection] Local progress: ${progressPercent.toFixed(1)}%, Watched: ${localWatched}`);
|
||||
return localWatched;
|
||||
}, [watchProgress, isTraktAuthenticated]);
|
||||
|
|
|
|||
|
|
@ -285,8 +285,8 @@ export const SeriesContent: React.FC<SeriesContentProps> = ({
|
|||
const progress = episodeProgress[episodeId];
|
||||
const progressPercent = progress ? (progress.currentTime / progress.duration) * 100 : 0;
|
||||
|
||||
// Don't show progress bar if episode is complete (>= 95%)
|
||||
const showProgress = progress && progressPercent < 95;
|
||||
// Don't show progress bar if episode is complete (>= 85%)
|
||||
const showProgress = progress && progressPercent < 85;
|
||||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
|
|
@ -318,7 +318,7 @@ export const SeriesContent: React.FC<SeriesContentProps> = ({
|
|||
/>
|
||||
</View>
|
||||
)}
|
||||
{progressPercent >= 95 && (
|
||||
{progressPercent >= 85 && (
|
||||
<View style={[styles.completedBadge, { backgroundColor: currentTheme.colors.primary }]}>
|
||||
<MaterialIcons name="check" size={12} color={currentTheme.colors.white} />
|
||||
</View>
|
||||
|
|
@ -395,8 +395,8 @@ export const SeriesContent: React.FC<SeriesContentProps> = ({
|
|||
const progress = episodeProgress[episodeId];
|
||||
const progressPercent = progress ? (progress.currentTime / progress.duration) * 100 : 0;
|
||||
|
||||
// Don't show progress bar if episode is complete (>= 95%)
|
||||
const showProgress = progress && progressPercent < 95;
|
||||
// Don't show progress bar if episode is complete (>= 85%)
|
||||
const showProgress = progress && progressPercent < 85;
|
||||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
|
|
@ -517,7 +517,7 @@ export const SeriesContent: React.FC<SeriesContentProps> = ({
|
|||
)}
|
||||
|
||||
{/* Completed Badge */}
|
||||
{progressPercent >= 95 && (
|
||||
{progressPercent >= 85 && (
|
||||
<View style={[styles.completedBadgeHorizontal, {
|
||||
backgroundColor: currentTheme.colors.primary,
|
||||
}]}>
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
const progressPercent = (savedProgress.currentTime / savedProgress.duration) * 100;
|
||||
logger.log(`[AndroidVideoPlayer] Progress: ${progressPercent.toFixed(1)}% (${savedProgress.currentTime}/${savedProgress.duration})`);
|
||||
|
||||
if (progressPercent < 95) {
|
||||
if (progressPercent < 85) {
|
||||
setResumePosition(savedProgress.currentTime);
|
||||
logger.log(`[AndroidVideoPlayer] Set resume position to: ${savedProgress.currentTime}`);
|
||||
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ const VideoPlayer: React.FC = () => {
|
|||
const progressPercent = (savedProgress.currentTime / savedProgress.duration) * 100;
|
||||
logger.log(`[VideoPlayer] Progress: ${progressPercent.toFixed(1)}% (${savedProgress.currentTime}/${savedProgress.duration})`);
|
||||
|
||||
if (progressPercent < 95) {
|
||||
if (progressPercent < 85) {
|
||||
setResumePosition(savedProgress.currentTime);
|
||||
logger.log(`[VideoPlayer] Set resume position to: ${savedProgress.currentTime}`);
|
||||
|
||||
|
|
|
|||
|
|
@ -156,9 +156,9 @@ export const useWatchProgress = (
|
|||
return 'Play';
|
||||
}
|
||||
|
||||
// Consider episode complete if progress is >= 95%
|
||||
// Consider episode complete if progress is >= 85%
|
||||
const progressPercent = (watchProgress.currentTime / watchProgress.duration) * 100;
|
||||
if (progressPercent >= 95) {
|
||||
if (progressPercent >= 85) {
|
||||
return 'Play';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -666,11 +666,11 @@ const HomeScreen = () => {
|
|||
console.log('[HomeScreen] All watch progress in storage:', Object.keys(allProgress).length, 'items');
|
||||
console.log('[HomeScreen] Watch progress items:', allProgress);
|
||||
|
||||
// Check if any items are being filtered out due to >95% progress
|
||||
// Check if any items are being filtered out due to >85% progress
|
||||
let filteredCount = 0;
|
||||
for (const [key, progress] of Object.entries(allProgress)) {
|
||||
const progressPercent = (progress.currentTime / progress.duration) * 100;
|
||||
if (progressPercent >= 95) {
|
||||
if (progressPercent >= 85) {
|
||||
filteredCount++;
|
||||
console.log(`[HomeScreen] Filtered out ${key}: ${progressPercent.toFixed(1)}% complete`);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue