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:
parent
04c5a496ae
commit
b7cfc25f33
|
|
@ -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`);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue