55 lines
3.9 KiB
Markdown
55 lines
3.9 KiB
Markdown
# Piano di Implementazione: Importazione Playlist e Canti della Comunità
|
|
|
|
Questo piano descrive i dettagli tecnici per l'aggiunta di una funzione che consente di importare localmente tutte le playlist e i canti personalizzati di una comunità attiva.
|
|
|
|
## User Review Required
|
|
|
|
> [!IMPORTANT]
|
|
> L'importazione comporterà il salvataggio dei canti personalizzati della comunità direttamente nei "Miei Canti" dell'utente (evitando duplicati) e la creazione di playlist locali. Le playlist locali create includeranno:
|
|
> 1. Una playlist principale con il nome della comunità stessa contenente tutti i canti della comunità con le rispettive tonalità, velocità di scorrimento e testi personalizzati/aggiuntivi.
|
|
> 2. Tutte le singole scalette/playlist della comunità importate come playlist locali indipendenti e modificabili.
|
|
|
|
## Proposed Changes
|
|
|
|
### Servizi e Logica di Business
|
|
|
|
#### [MODIFY] [playlist.service.ts](file:///Users/davidfrassi/SRC/agenti/canti/src/app/services/playlist.service.ts)
|
|
Aggiungeremo un metodo helper o esporremo le funzioni di salvataggio di massa per le playlist importate, garantendo che le impostazioni dei brani (`songSettings` contenenti tonalità e velocità di scorrimento) siano preservate correttamente.
|
|
|
|
### Pagina Impostazioni (Settings Page)
|
|
|
|
#### [MODIFY] [settings.page.html](file:///Users/davidfrassi/SRC/agenti/canti/src/app/pages/settings/settings.page.html)
|
|
Nel gruppo "Comunità", quando una comunità è attiva, aggiungeremo un nuovo pulsante sotto i dettagli della comunità:
|
|
- **Pulsante**: "Importa Playlist e Canti" con icona `cloud-download-outline`.
|
|
|
|
#### [MODIFY] [settings.page.ts](file:///Users/davidfrassi/SRC/agenti/canti/src/app/pages/settings/settings.page.ts)
|
|
Implementeremo il metodo `importComunitaPlaylists()` che svolgerà i seguenti passaggi:
|
|
1. **Verifica dello Stato**: Si assicura che una comunità sia attiva e che i dati siano caricati.
|
|
2. **Importazione dei Canti Personalizzati**:
|
|
- Scorrerà i canti di `comunitaService.comunitaCantiPersonali()`.
|
|
- Per ciascun canto, verificherà se è già presente nei "Miei Canti" (tramite `myCantiService.myCanti()`).
|
|
- Se assente, lo aggiungerà con prefisso ID `my_` ed effettuerà il salvataggio in locale su `MyCantiService`.
|
|
3. **Creazione della Playlist della Comunità**:
|
|
- Creerà una playlist avente come nome il nome della comunità stessa.
|
|
- Popolerà i canti associando sia i canti standard sia i canti personali importati.
|
|
- Assocerà le impostazioni di tonalità e velocità di scorrimento da `comunitaCantiSettings()`. Per la velocità, si utilizzerà la formula di conversione standard (es. `Math.round(speed / 100)`).
|
|
4. **Importazione delle Scalette (Playlist) Aggiuntive**:
|
|
- Per ciascuna scaletta in `comunitaService.comunitaScalette()`, creerà una playlist locale corrispondente.
|
|
- Per ciascun canto della scaletta, cercherà se esiste un'impostazione in `comunitaCantiSettings()` per impostare tonalità e velocità specifiche all'interno della playlist.
|
|
5. **Salvataggio e Feedback**:
|
|
- Salverà tutte le nuove playlist tramite `playlistService.savePlaylist()`.
|
|
- Mostrerà un alert di conferma iniziale e un toast di successo finale.
|
|
|
|
## Verification Plan
|
|
|
|
### Manual Verification
|
|
- Attivare una comunità di prova (es. con codice noto o inserendone uno valido).
|
|
- Andare nelle impostazioni e cliccare sul nuovo pulsante "Importa Playlist e Canti".
|
|
- Verificare la comparsa dell'alert di conferma.
|
|
- Confermare l'importazione.
|
|
- Verificare tramite Toast e navigando nella home che:
|
|
- Sia presente una playlist locale con il nome della comunità contenente tutti i canti ordinati e configurati.
|
|
- Siano presenti le playlist secondarie della comunità convertite in playlist locali.
|
|
- Le tonalità modificate e le velocità di scorrimento siano state importate correttamente per ciascun canto all'interno delle playlist.
|
|
- I canti personali/aggiuntivi siano stati importati nella sezione "Miei Canti" e siano visualizzabili.
|