1) Avvio app → initFoldersCache() Carica la tabella `folders` nel `foldersCache` 2) updateDirectories() (chiamato da CollectionSource) - Rilegge il DB - Raggruppa gli album in base a `groupForAlbum()` - Ordina i gruppi con `orderForGroup()` - Ricostruisce `_directories` - Notifica la UI 3) Quando arrivano nuove entry dal filesystem Qui sta la differenza rispetto ad Aves originale: - Aves originale: “vedo una nuova directory → creo un album” - Tua versione: “vedo una nuova directory → NON creo album (a meno che `debugCreateFoldersEnabled == true`)” Questo è controllato da: ```dart if (!debugCreateFoldersEnabled) { debugPrint('[folders] CREATION SKIPPED'); ... return; } 4) Quando un album diventa vuoto `cleanEmptyAlbums()`: - controlla se esistono entry visibili in quella directory - se no → elimina la riga dal DB - aggiorna `_directories 5) Display name Sempre e solo da DB: ```dart final f = foldersCache[dirPath]; if (f != null) return f.displayName; return pContext.basename(dirPath); _____________________________________________________ ## ⚠️ Punti critici (da conoscere per non impazzire) ### 1) **Gli album non nascono più automaticamente** Questo è voluto, ma significa: - se una directory appare nel filesystem - **non diventa album** - finché non la inserisci nel DB Se vuoi ripristinare la creazione automatica, devi rimettere la logica originale di Aves. --- ### 2) `debugCreateFoldersEnabled` è un kill-switch Se è `false`: - nessuna nuova directory viene inserita nel DB - ma viene comunque aggiunta a `foldersCache` in RAM - e poi persa al prossimo riavvio Questo può creare comportamenti “fantasma”. --- ### 3) `groupForAlbum()` è molto semplice Attualmente: - se `isRemote == 1` → Remote - se `hybridType != null` → Local - tutto il resto → Local Non c’è distinzione tra User / Common / Device, anche se `orderForGroup()` la prevede. --- ### 4) `updateDirectories()` ignora completamente gli entry Quindi se una directory esiste nel filesystem ma non nel DB: - non appare negli album - anche se contiene foto