fix(xtream): preserve content identity in PWA collections (#1870)

* fix(xtream): invalidate detail initialization on close

* fix(xtream): preserve typed PWA collection identity

* fix(xtream): complete typed live collection actions

* test(xtream): cover PWA collection identity through reloads

* fix(xtream): keep typed collection actions local

* fix(xtream): tolerate quota limits during collection migration

* fix(xtream): prioritize requested collection saves

* fix(xtream): align collection identity with current playback contracts

* test(xtream): confirm playback before collection history assertions
This commit is contained in:
4gray authored and GitHub committed 2026-10-10 12:27:03 +02:00
1 parent 0060330b5e
commit 98784815b1
31 files changed
+2349 -551

No files matched your search

@@ -880,7 +880,7 @@ describe('DashboardDataService', () => {
await service.removeGlobalFavorite(item);
expect(xtreamDataSourceMock.removeFavorite).toHaveBeenCalledWith(
51,
{ id: 51, type: 'movie' },
'xtream-1'
);
expect(dbServiceMock.removeFromFavorites).not.toHaveBeenCalled();
@@ -2784,7 +2784,7 @@ describe('DashboardDataService', () => {
await service.removeGlobalRecentItem(item);
expect(xtreamDataSourceMock.removeRecentItem).toHaveBeenCalledWith(
91,
{ id: 91, type: 'movie' },
'xtream-1'
);
expect(dbServiceMock.removeRecentItem).not.toHaveBeenCalled();
@@ -1046,7 +1046,10 @@ export class DashboardDataService {
);
} else {
await this.xtreamDataSource.removeRecentItem(
item.id as number,
{
id: Number(item.id),
type: item.type as 'live' | 'movie' | 'series',
},
item.playlist_id
);
}
@@ -1121,7 +1124,10 @@ export class DashboardDataService {
);
} else {
await this.xtreamDataSource.removeFavorite(
item.id as number,
{
id: Number(item.id),
type: item.type as 'live' | 'movie' | 'series',
},
item.playlist_id
);
}