86 lines
2.1 KiB
Markdown
86 lines
2.1 KiB
Markdown
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
|