diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index 7d8d101..c70b783 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -123,6 +123,22 @@ export class HomePage implements OnDestroy { list = list.filter(c => { return comunitaIds.includes(c.id_canti) || comunitaIds.includes(c.id); }); + + // Deduplicate: if a song exists in both validated and unvalidated lists, keep only the unvalidated/custom one + const seen = new Map(); + for (const canto of list) { + const key = canto.id_canti || canto.id; + const existing = seen.get(key); + if (!existing) { + seen.set(key, canto); + } else { + // Precedence to unvalidated/custom version + if (canto.nonValidato) { + seen.set(key, canto); + } + } + } + list = Array.from(seen.values()); // Sort list by community song number (num_canto) ASC! const cantiInfo = this.comunitaService.comunitaCantiInfo(); @@ -332,6 +348,10 @@ export class HomePage implements OnDestroy { } findCanto(id: string) { + if (this.comunitaService.comunitaCode() && this.comunitaService.isFilterActive()) { + const personal = this.comunitaService.comunitaCantiPersonali().find(c => c.id === id); + if (personal) return personal; + } return [ ...this.cantiService.canti(), ...this.myCantiService.myCanti(), diff --git a/src/app/pages/display/display.page.ts b/src/app/pages/display/display.page.ts index 31c1a26..dbf0141 100644 --- a/src/app/pages/display/display.page.ts +++ b/src/app/pages/display/display.page.ts @@ -63,7 +63,13 @@ export class DisplayPage implements OnInit, OnDestroy { const allCanti = this.cantiService.canti(); const comunitaCantiPers = this.comunitaService.comunitaCantiPersonali(); if (id) { - let found = allCanti.find(c => c.id === id); + let found: any = null; + if (this.comunitaService.comunitaCode() && this.comunitaService.isFilterActive()) { + found = comunitaCantiPers.find(c => c.id === id); + } + if (!found) { + found = allCanti.find(c => c.id === id); + } if (!found) { found = comunitaCantiPers.find(c => c.id === id); } diff --git a/src/app/pages/player/player.page.ts b/src/app/pages/player/player.page.ts index b79cbeb..ab40444 100644 --- a/src/app/pages/player/player.page.ts +++ b/src/app/pages/player/player.page.ts @@ -163,7 +163,13 @@ export class PlayerPage implements OnInit, AfterViewInit, OnDestroy { const comunitaCantiPers = this.comunitaService.comunitaCantiPersonali(); if (id) { - let found = allCanti.find(c => c.id === id); + let found: any = null; + if (this.comunitaService.comunitaCode() && this.comunitaService.isFilterActive()) { + found = comunitaCantiPers.find(c => c.id === id); + } + if (!found) { + found = allCanti.find(c => c.id === id); + } if (!found) { found = myCantiList.find(c => c.id === id); } diff --git a/src/app/pages/playlist/playlist.page.ts b/src/app/pages/playlist/playlist.page.ts index 9b0c2a2..5ae4292 100644 --- a/src/app/pages/playlist/playlist.page.ts +++ b/src/app/pages/playlist/playlist.page.ts @@ -2,6 +2,7 @@ import { Component, inject, computed } from '@angular/core'; import { PlaylistService } from '../../services/playlist.service'; import { CantiService } from '../../services/canti.service'; import { ComunitaService } from '../../services/comunita.service'; +import { MyCantiService } from '../../services/my-canti.service'; import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop'; import { AlertController, ToastController, ModalController } from '@ionic/angular'; import { Router } from '@angular/router'; @@ -16,13 +17,34 @@ export class PlaylistPage { public playlistService = inject(PlaylistService); public cantiService = inject(CantiService); public comunitaService = inject(ComunitaService); + public myCantiService = inject(MyCantiService); private alertCtrl = inject(AlertController); private toastCtrl = inject(ToastController); private router = inject(Router); public selectedSongs = computed(() => { const ids = Array.from(this.playlistService.selectedIds()); - return ids.map(id => this.cantiService.canti().find(c => c.id === id)).filter(c => !!c); + const allCanti = this.cantiService.canti(); + const myCantiList = this.myCantiService.myCanti(); + const comunitaCantiPers = this.comunitaService.comunitaCantiPersonali(); + const communityActive = this.comunitaService.comunitaCode() && this.comunitaService.isFilterActive(); + + return ids.map(id => { + let found: any = null; + if (communityActive) { + found = comunitaCantiPers.find(c => c.id === id); + } + if (!found) { + found = allCanti.find(c => c.id === id); + } + if (!found) { + found = myCantiList.find(c => c.id === id); + } + if (!found) { + found = comunitaCantiPers.find(c => c.id === id); + } + return found; + }).filter(c => !!c); }); public localSongs: any[] = []; diff --git a/src/app/version.ts b/src/app/version.ts index f04af49..a2e1727 100644 --- a/src/app/version.ts +++ b/src/app/version.ts @@ -1 +1 @@ -export const VERSION = '2026.05.20.1227'; +export const VERSION = '2026.05.20.1245';