2025-01-22 14:21:34 +02:00
|
|
|
import type { AlbumSolveState } from '$lib/types';
|
2025-01-19 05:24:56 +02:00
|
|
|
|
|
|
|
class AlbumState {
|
2025-01-22 14:25:24 +02:00
|
|
|
private albums: AlbumSolveState[] | undefined = undefined;
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
setAlbums(data: AlbumSolveState[]) {
|
|
|
|
if (!data) {
|
|
|
|
return;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
this.albums = data;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
checkSolve(data: AlbumSolveState[]) {
|
|
|
|
if (!data || !this.albums) {
|
|
|
|
return false;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
for (const solve of data) {
|
|
|
|
const search = this.albums.filter((album) => album.name === solve.name);
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
if (!search) {
|
|
|
|
return false;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
const matching = search.at(0);
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
if (!matching) {
|
|
|
|
return false;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
if (matching.image !== solve.image) {
|
|
|
|
return false;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
if (matching.artists !== solve.artists) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
|
2025-01-22 14:25:24 +02:00
|
|
|
return true;
|
|
|
|
}
|
2025-01-19 05:24:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const albumState = new AlbumState();
|