feat: integrato il supporto ai canti personalizzati (non validati) della parrocchia
- Recuperato il campo 'canti_personali' dalle tabelle dell'API parrocchiale. - Mappato ed integrato il segnale 'comunitaCantiPersonali' in locale e salvato su localStorage. - Permesso il caricamento e l'interrogazione corretta dei brani custom in HomePage, PlayerPage, DisplayPage, YoutubePlayerService e MediaSessionService. - Risolto il disallineamento per cui la parrocchia 123456 mostrava 196 brani anziché 208.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { Injectable, signal, inject, effect } from '@angular/core';
|
||||
import { HttpClient, HttpRequest, HttpEventType, HttpResponse } from '@angular/common/http';
|
||||
import { SettingsService } from './settings.service';
|
||||
import { Canto } from './canti.service';
|
||||
|
||||
export interface ParrocchiaItem {
|
||||
id_parrocchia: number;
|
||||
@@ -41,6 +42,7 @@ export class ComunitaService {
|
||||
public comunitaCantiIds = signal<(number | string)[]>([]);
|
||||
public comunitaCantiInfo = signal<ParrocchiaCantiItem[]>([]);
|
||||
public comunitaCantiSettings = signal<CantiSettingsItem[]>([]);
|
||||
public comunitaCantiPersonali = signal<Canto[]>([]);
|
||||
public isFilterActive = signal<boolean>(false);
|
||||
public loading = signal<boolean>(false);
|
||||
public loadingProgress = signal<number>(0);
|
||||
@@ -52,6 +54,7 @@ export class ComunitaService {
|
||||
const savedCanti = localStorage.getItem('comunita-canti-ids');
|
||||
const savedInfo = localStorage.getItem('comunita-canti-info');
|
||||
const savedSettings = localStorage.getItem('comunita-canti-settings');
|
||||
const savedCantiPersonali = localStorage.getItem('comunita-canti-personali');
|
||||
const savedFilterActive = localStorage.getItem('comunita-filter-active') === 'true';
|
||||
|
||||
if (savedCode) this.comunitaCode.set(savedCode);
|
||||
@@ -66,6 +69,9 @@ export class ComunitaService {
|
||||
if (savedSettings) {
|
||||
try { this.comunitaCantiSettings.set(JSON.parse(savedSettings)); } catch (e) {}
|
||||
}
|
||||
if (savedCantiPersonali) {
|
||||
try { this.comunitaCantiPersonali.set(JSON.parse(savedCantiPersonali)); } catch (e) {}
|
||||
}
|
||||
this.isFilterActive.set(savedFilterActive);
|
||||
|
||||
effect(() => {
|
||||
@@ -75,6 +81,7 @@ export class ComunitaService {
|
||||
localStorage.setItem('comunita-canti-ids', JSON.stringify(this.comunitaCantiIds()));
|
||||
localStorage.setItem('comunita-canti-info', JSON.stringify(this.comunitaCantiInfo()));
|
||||
localStorage.setItem('comunita-canti-settings', JSON.stringify(this.comunitaCantiSettings()));
|
||||
localStorage.setItem('comunita-canti-personali', JSON.stringify(this.comunitaCantiPersonali()));
|
||||
localStorage.setItem('comunita-filter-active', this.isFilterActive().toString());
|
||||
});
|
||||
|
||||
@@ -122,6 +129,7 @@ export class ComunitaService {
|
||||
this.comunitaCantiIds.set([]);
|
||||
this.comunitaCantiInfo.set([]);
|
||||
this.comunitaCantiSettings.set([]);
|
||||
this.comunitaCantiPersonali.set([]);
|
||||
this.isFilterActive.set(false);
|
||||
return true;
|
||||
}
|
||||
@@ -139,12 +147,27 @@ export class ComunitaService {
|
||||
const cantiList = data.parrocchia_canti?.data || [];
|
||||
const settingsList = data.canti_settings?.data || [];
|
||||
|
||||
// Parse canti_personali (custom unvalidated community canti)
|
||||
const cantiPersonaliList = (data as any).canti_personali?.data || [];
|
||||
const mappedCantiPersonali = cantiPersonaliList.map((cp: any) => ({
|
||||
id: cp.id_canti.toString(),
|
||||
id_canti: cp.id_canti,
|
||||
titolo: cp.titolo,
|
||||
testo: cp.accordi || '',
|
||||
accordi: cp.accordi || '',
|
||||
autore: cp.autore || '',
|
||||
link_youtube: cp.link_youtube || '',
|
||||
id_momenti: [],
|
||||
data_update: cp.data_update || ''
|
||||
}));
|
||||
|
||||
this.comunitaCode.set(trimmedCode);
|
||||
this.comunitaNome.set(parrocchia.nome || `Comunità ${trimmedCode}`);
|
||||
this.comunitaMail.set(parrocchia.mail || '');
|
||||
this.comunitaCantiInfo.set(cantiList);
|
||||
this.comunitaCantiIds.set(cantiList.map(c => c.id_canti));
|
||||
this.comunitaCantiSettings.set(settingsList);
|
||||
this.comunitaCantiPersonali.set(mappedCantiPersonali);
|
||||
this.isFilterActive.set(true);
|
||||
this.loading.set(false);
|
||||
return true;
|
||||
@@ -180,6 +203,7 @@ export class ComunitaService {
|
||||
|
||||
this.comunitaCantiInfo.set(mockInfo);
|
||||
this.comunitaCantiSettings.set([]);
|
||||
this.comunitaCantiPersonali.set([]);
|
||||
this.isFilterActive.set(true);
|
||||
this.loading.set(false);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user