Changeset b0ccd0d in Klonkt for src/services/PlaylistService.js
- Timestamp:
- 08/22/2026 08:14:01 AM (3 weeks ago)
- Branches:
- main
- Children:
- 25dd08f
- Parents:
- 8ed36de
- File:
-
- 1 edited
-
src/services/PlaylistService.js (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/PlaylistService.js
r8ed36de rb0ccd0d 14 14 import db from '../config/database.js'; 15 15 import { v4 as uuid } from 'uuid'; 16 import { SOORTEN } from '../assets/js/shared/post-music-type.js'; 16 17 17 18 /** … … 41 42 return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(s) ? s : null; 42 43 } 44 45 /** 46 * De drie soorten die een playlist kan zijn, op EEN plek. 47 * 48 * Stond eerder vijf keer als `data.kind === 'playlist' ? 'playlist' : 'album'` 49 * verspreid over dit bestand. Met twee soorten kon dat nog; bij een derde is 50 * het een fout die staat te wachten, want een van de vijf vergeten betekent dat 51 * een mixtape stilletjes als album wordt opgeslagen en als Album de deur uit 52 * gaat. 53 * 54 * Album blijft de terugval: een onbekende waarde hoort niet stilzwijgend iets 55 * nieuws te worden. De lijst zelf staat in de gedeelde pure module, want de 56 * editor in de browser moet dezelfde drie kennen. 57 */ 58 export function normKind(v) { 59 const s = String(v == null ? '' : v).trim().toLowerCase(); 60 return SOORTEN.includes(s) ? s : 'album'; 61 } 62 63 /** 64 * Draagt deze soort uitgavegegevens? Alleen een album. Een afspeellijst en een 65 * mixtape hebben geen uitgavedatum en geen release-id: het zijn samenstellingen 66 * van andermans of eigen werk, geen uitgave op zichzelf. 67 */ 68 export const isUitgave = (kind) => normKind(kind) === 'album'; 43 69 44 70 class PlaylistService { … … 92 118 year: r.year || 0, 93 119 cover: r.cover_url || '', 94 kind: r.kind || 'album',120 kind: normKind(r.kind), 95 121 release_date: r.release_date || '', 96 122 mb_release_id: r.mb_release_id || '', … … 154 180 year: p.year || 0, 155 181 cover: p.cover_url || fallbackCover, 156 kind: (p.kind === 'playlist') ? 'playlist' : 'album',182 kind: normKind(p.kind), 157 183 // created_at hoort erbij omdat de AP-kant er `published` van maakt. Zonder 158 184 // dit veld viel buildAlbumObject terug op 1970, en dat stond op 16-8 … … 162 188 // maar dit is de plek waar de editor leest en die mag niet afhangen van 163 189 // wat er toevallig in de kolom stond. 164 release_date: p.kind === 'playlist' ? '' : (p.release_date || ''),165 mb_release_id: p.kind === 'playlist' ? '' : (p.mb_release_id || ''),190 release_date: isUitgave(p.kind) ? (p.release_date || '') : '', 191 mb_release_id: isUitgave(p.kind) ? (p.mb_release_id || '') : '', 166 192 tracks: mappedTracks, 167 193 }; … … 178 204 const id = this.generateId(siteId, title); 179 205 const now = new Date().toISOString(); 180 const kind = data.kind === 'playlist' ? 'playlist' : 'album';206 const kind = normKind(data.kind); 181 207 182 208 // Alleen een UITGAVE draagt deze twee. Een afspeellijst heeft geen … … 186 212 // voor de post-editor -- en dan staat er stille rommel op een mixtape die 187 213 // later als Album de deur uit gaat. 188 const uitgave = kind === 'album';214 const uitgave = isUitgave(kind); 189 215 const releaseDate = uitgave ? normDatum(data.release_date) : null; 190 216 const mbRelease = uitgave ? normMbid(data.mb_release_id) : null; … … 229 255 // val terug op wat er ligt. 230 256 const nieuwKind = Object.prototype.hasOwnProperty.call(data, 'kind') 231 ? (data.kind === 'playlist' ? 'playlist' : 'album')232 : (existing.kind || 'album');257 ? normKind(data.kind) 258 : normKind(existing.kind); 233 259 if (Object.prototype.hasOwnProperty.call(data, 'title')) { 234 260 const v = String(data.title || '').trim();
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)