diff --git a/src/infrastructure/repositories/folder_fs_repository.rs b/src/infrastructure/repositories/folder_fs_repository.rs index 52510ad4..a272accd 100644 --- a/src/infrastructure/repositories/folder_fs_repository.rs +++ b/src/infrastructure/repositories/folder_fs_repository.rs @@ -90,8 +90,12 @@ impl FolderFsRepository { let mut entries = result.map_err(|e| FolderRepositoryError::StorageError(e.to_string()))?; let mut count = 0; - // Count entries manually - while let Ok(Some(_)) = entries.next_entry().await { + // Count entries manually, skipping hidden/system directories + while let Ok(Some(entry)) = entries.next_entry().await { + let name = entry.file_name().to_string_lossy().to_string(); + if name.starts_with('.') { + continue; + } count += 1; } @@ -474,6 +478,12 @@ impl FolderRepository for FolderFsRepository { } let folder_name = entry.file_name().to_string_lossy().to_string(); + + // Skip hidden/system directories (e.g. .blobs, .trash, .dedup_temp) + if folder_name.starts_with('.') { + continue; + } + let folder_storage_path = parent_storage_path.join(&folder_name); let get_folder_timeout = Duration::from_secs(5); @@ -602,6 +612,13 @@ impl FolderRepository for FolderFsRepository { continue; } + // Skip hidden/system directories (e.g. .blobs, .trash, .dedup_temp) + let dir_name = entry.file_name().to_string_lossy().to_string(); + if dir_name.starts_with('.') { + current_idx += 1; + continue; + } + let path = entry.path(); let rel_path = match path.strip_prefix(&self.root_path) { Ok(rel) => StoragePath::from(rel.to_path_buf()), diff --git a/static/js/auth.js b/static/js/auth.js index 41a437c8..79f1c2a2 100644 --- a/static/js/auth.js +++ b/static/js/auth.js @@ -68,7 +68,7 @@ const ALL_LANGUAGES = [ { code: 'fr', name: 'French', nativeName: 'Français', flag: '🇫🇷', popular: true }, { code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪', popular: true }, { code: 'pt', name: 'Portuguese', nativeName: 'Português', flag: '🇧🇷', popular: true }, - { code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹', popular: false }, + { code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹', popular: true }, { code: 'ru', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺', popular: false }, { code: 'ja', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵', popular: false }, { code: 'ko', name: 'Korean', nativeName: '한국어', flag: '🇰🇷', popular: false }, diff --git a/static/js/languageSelector.js b/static/js/languageSelector.js index 1c94a503..320cc3ac 100644 --- a/static/js/languageSelector.js +++ b/static/js/languageSelector.js @@ -16,7 +16,8 @@ function getAvailableLanguages() { { code: 'fa', name: 'فارسی', flag: '🇮🇷' }, { code: 'fr', name: 'Français', flag: '🇫🇷' }, { code: 'de', name: 'Deutsch', flag: '🇩🇪' }, - { code: 'pt', name: 'Português', flag: '🇧🇷' } + { code: 'pt', name: 'Português', flag: '🇧🇷' }, + { code: 'it', name: 'Italiano', flag: '🇮🇹' } ]; }