Aves_mio0.88/folders.md
2026-10-03 12:51:15 +02:00

86 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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