4.1 KiB
Local Player Auto-Close Issue Fix
🐛 Issue Description
The local video player launcher dialog was automatically closing itself after 2 seconds when launched from the cluster folder view, making it impossible to bookmark or rate videos that require external players.
🔍 Root Cause Analysis
The Problem
The LocalPlayerLauncher component has auto-close logic that checks for interactive features:
const hasInteractiveFeatures = showBookmarks || showRatings;
if (!hasInteractiveFeatures) {
setTimeout(() => {
onClose();
}, 2000);
}
Why It Was Triggered
The cluster page was calling UnifiedVideoPlayer without the required props:
Before (Broken):
<UnifiedVideoPlayer
video={selectedVideo}
isOpen={isPlayerOpen}
onClose={() => {
setIsPlayerOpen(false);
setSelectedVideo(null);
}}
// ❌ Missing showBookmarks, showRatings, and handlers
/>
UnifiedVideoPlayer Defaults:
showBookmarks = false, // ❌ Defaults to false
showRatings = false, // ❌ Defaults to false
This caused hasInteractiveFeatures to be false, triggering the auto-close timer.
✅ Solution Applied
Updated the cluster page to properly pass bookmark and rating props:
After (Fixed):
<UnifiedVideoPlayer
video={selectedVideo}
isOpen={isPlayerOpen}
onClose={() => {
setIsPlayerOpen(false);
setSelectedVideo(null);
}}
showBookmarks={true} // ✅ Enable bookmarks
showRatings={true} // ✅ Enable ratings
onBookmark={handleBookmark} // ✅ Bookmark handler
onUnbookmark={handleUnbookmark} // ✅ Unbookmark handler
onRate={handleRate} // ✅ Rating handler
/>
🎯 How It Works Now
Flow for External Player Videos:
- User clicks video in cluster folder view
UnifiedVideoPlayerdetects format requires external playerLocalPlayerLauncheris rendered withshowBookmarks={true}andshowRatings={true}- User launches external player
hasInteractiveFeatures = true→ No auto-close timer- Dialog stays open for bookmarking and rating
- User can bookmark/rate before manually closing
Auto-Close Logic:
const hasInteractiveFeatures = showBookmarks || showRatings;
// true || true = true ✅
if (!hasInteractiveFeatures) {
// This branch is NOT taken anymore ✅
setTimeout(() => {
onClose();
}, 2000);
}
📊 Comparison with Other Views
| View | showBookmarks | showRatings | Result |
|---|---|---|---|
| Cluster Page (Before) | ❌ false | ❌ false | Auto-closes |
| Cluster Page (After) | ✅ true | ✅ true | Stays open |
| Bookmarks Page | ✅ true | ✅ true | Stays open |
| Videos Page | ✅ true | ✅ true | Stays open |
🧪 Expected Results
✅ Local player dialog stays open after launching external player
✅ Users can bookmark videos requiring external players
✅ Users can rate videos requiring external players
✅ Consistent behavior across all cluster views
✅ No regression in regular video playback
📁 Files Changed
Modified: /src/app/clusters/[id]/page.tsx
- Lines Added: 5 lines
- Change: Added showBookmarks, showRatings props and handlers to UnifiedVideoPlayer
🔄 Testing Checklist
- Open cluster page and navigate to folder with .ts or other external format videos
- Click on video that requires external player
- Verify local player dialog appears
- Click "Launch [Player]" button
- Verify dialog does NOT auto-close after 2 seconds
- Verify bookmark button is visible and functional
- Verify rating stars are visible and functional
- Verify can bookmark video successfully
- Verify can rate video successfully
- Verify can manually close dialog with X button
🎉 Resolution Status
Status: ✅ FIXED - Ready for Testing
Risk Level: Low (isolated change, follows existing patterns)
Impact: High (restores critical functionality)
Fix applied on 2025-10-12
Issue: Regression in auto-close behavior
Solution: Properly pass interactive props to video player