# 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.