(state, fallbackTrack)
| 310 | } |
| 311 | |
| 312 | function stateMetadataToTrack(state, fallbackTrack) { |
| 313 | return { |
| 314 | ...fallbackTrack, |
| 315 | title: state.title || fallbackTrack.title, |
| 316 | thumb: state.thumbnail || fallbackTrack.thumb, |
| 317 | stems: state.selected_stems || fallbackTrack.stems, |
| 318 | selectedStems: state.selected_stems || fallbackTrack.selectedStems, |
| 319 | audioStems: state.stems || fallbackTrack.audioStems || [], |
| 320 | duration: state.duration || fallbackTrack.duration, |
| 321 | status: state.status || fallbackTrack.status, |
| 322 | bpm: state.bpm ?? fallbackTrack.bpm, |
| 323 | key: state.key ?? fallbackTrack.key, |
| 324 | scale: state.scale ?? fallbackTrack.scale, |
| 325 | keyConfidence: state.key_confidence ?? fallbackTrack.keyConfidence, |
| 326 | lufs: state.lufs ?? fallbackTrack.lufs, |
| 327 | peakDb: state.peak_db ?? fallbackTrack.peakDb, |
| 328 | stemPresence: state.stem_presence ?? fallbackTrack.stemPresence, |
| 329 | dynamicRange: state.dynamic_range ?? fallbackTrack.dynamicRange, |
| 330 | tempoStability: state.tempo_stability ?? fallbackTrack.tempoStability, |
| 331 | tags: state.tags ?? fallbackTrack.tags ?? [], |
| 332 | sections: state.sections ?? fallbackTrack.sections ?? null, |
| 333 | sourceUrl: state.source_url || fallbackTrack.sourceUrl, |
| 334 | mixUrl: state.mix_url ?? fallbackTrack.mixUrl ?? null, |
| 335 | hasVideo: state.has_video ?? fallbackTrack.hasVideo ?? false, |
| 336 | createdAt: fallbackTrack.createdAt ?? state.created_at, |
| 337 | favorite: fallbackTrack.favorite ?? false, |
| 338 | }; |
| 339 | } |
| 340 | |
| 341 | function fmtExtracted(ts) { |
| 342 | if (!ts) return "—"; |
no outgoing calls
no test coverage detected