Release: web UX overhaul + Android native port + server polish #59

Merged
bvandeusen merged 298 commits from dev into main 2026-06-01 16:11:21 -04:00
Showing only changes of commit ad8b0407c6 - Show all commits
+7 -1
View File
@@ -179,8 +179,14 @@ describe('useEventsDispatcher', () => {
expect(beacon).toHaveBeenCalled(); expect(beacon).toHaveBeenCalled();
expect(beacon.mock.calls[0][0]).toBe('/api/events'); expect(beacon.mock.calls[0][0]).toBe('/api/events');
// jsdom's Blob doesn't ship .text(); FileReader does.
const blob = beacon.mock.calls[0][1] as Blob; const blob = beacon.mock.calls[0][1] as Blob;
const text = await blob.text(); const text = await new Promise<string>((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result as string);
reader.onerror = () => reject(reader.error);
reader.readAsText(blob);
});
const payload = JSON.parse(text) as { type: string; duration_played_ms: number }; const payload = JSON.parse(text) as { type: string; duration_played_ms: number };
expect(payload.type).toBe('play_ended'); expect(payload.type).toBe('play_ended');
expect(payload.duration_played_ms).toBe(73000); expect(payload.duration_played_ms).toBe(73000);