Fix directory persistence by preventing conflicts between file manager instances

- Porn Cinema now tries to reuse main window's file manager instance instead of creating new one
- Prevent saving directories when there are access errors to avoid clearing valid directories
- Skip unnecessary refresh calls when reusing existing file manager
- Add better error tracking without removing directories from storage
- Should maintain directory persistence between main library and porn cinema
This commit is contained in:
dilgenfritz 2025-11-03 17:23:00 -06:00
parent 04c5a496ae
commit b7cfc25f33
2 changed files with 48 additions and 23 deletions

View File

@ -236,22 +236,29 @@
console.log('🎬 Initializing Porn Cinema...');
// Initialize desktop file manager if in Electron environment
if (window.electronAPI && typeof DesktopFileManager !== 'undefined') {
// Create a minimal data manager for the cinema (since we don't have the full game instance)
const minimalDataManager = {
get: (key) => {
try {
return JSON.parse(localStorage.getItem(key));
} catch {
return null;
if (window.electronAPI) {
// Try to reuse existing desktop file manager from parent window first
if (window.opener && window.opener.game && window.opener.game.fileManager) {
console.log('🔗 Reusing desktop file manager from main window');
window.desktopFileManager = window.opener.game.fileManager;
} else {
console.log('🆕 Creating new desktop file manager instance');
// Create a minimal data manager for the cinema (since we don't have the full game instance)
const minimalDataManager = {
get: (key) => {
try {
return JSON.parse(localStorage.getItem(key));
} catch {
return null;
}
},
set: (key, value) => {
localStorage.setItem(key, JSON.stringify(value));
}
},
set: (key, value) => {
localStorage.setItem(key, JSON.stringify(value));
}
};
window.desktopFileManager = new DesktopFileManager(minimalDataManager);
};
window.desktopFileManager = new DesktopFileManager(minimalDataManager);
}
console.log('🖥️ Desktop File Manager initialized for porn cinema');
// Wait for the desktop file manager to fully initialize
@ -286,13 +293,15 @@
console.log('📁 Directory list from storage:', parsedData.directories.map(d => ({ name: d.name, path: d.path })));
}
// Force reload from storage first
await window.desktopFileManager.loadLinkedDirectories();
console.log(`✅ Force reloaded linked directories: ${window.desktopFileManager.externalVideoDirectories.length} directories`);
// Then refresh all directories to get current video lists
await window.desktopFileManager.refreshAllDirectories();
console.log('✅ Refreshed all video directories');
// If we're reusing the main window's file manager, don't reload/refresh
if (window.opener && window.opener.game && window.opener.game.fileManager) {
console.log('📁 Using directories from main window file manager');
} else {
// Only reload and refresh if we created a new instance
console.log('📁 Loading directories for new file manager instance');
await window.desktopFileManager.loadLinkedDirectories();
console.log(`✅ Force reloaded linked directories: ${window.desktopFileManager.externalVideoDirectories.length} directories`);
}
// Log final state
console.log(`📁 Final state: ${window.desktopFileManager.getAllVideos().length} videos from ${window.desktopFileManager.externalVideoDirectories.length} directories`);

View File

@ -438,6 +438,8 @@ class DesktopFileManager {
console.log('🔄 Refreshing all linked directories...');
this.allLinkedVideos = [];
let hasAccessErrors = false;
for (const directory of this.externalVideoDirectories) {
try {
@ -462,11 +464,18 @@ class DesktopFileManager {
// Update directory video count
directory.videoCount = videoFiles.length;
// Clear any previous errors
delete directory.lastError;
delete directory.lastErrorTime;
console.log(`✅ Found ${videoFiles.length} videos in ${directory.name}`);
} catch (error) {
console.error(`❌ Could not access directory ${directory.name} at ${directory.path}:`, error);
console.error(`❌ Directory will be marked as inaccessible but kept in list`);
hasAccessErrors = true;
// Directory might be unavailable (external drive, network, etc.)
// Don't remove it from the list, just mark it as having 0 videos
directory.videoCount = 0;
@ -475,7 +484,14 @@ class DesktopFileManager {
}
}
await this.saveLinkedDirectories();
// Only save directories if we didn't have access errors
// This prevents clearing valid directories due to temporary access issues
if (!hasAccessErrors || this.externalVideoDirectories.length === 0) {
await this.saveLinkedDirectories();
} else {
console.warn('⚠️ Skipping save due to directory access errors to preserve valid directories');
}
await this.updateUnifiedVideoStorage();
const totalVideos = this.allLinkedVideos.length;