summaryrefslogtreecommitdiff
path: root/player-android/lib/models
AgeCommit message (Collapse)Author
2026-05-21Implement MySharesScreen with revoke/copy-link actions reachable from ↵Paul Buetow
Settings (8b) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Implement SearchFilterBar with debounce, type/favorites/sort filters for ↵Paul Buetow
MediaGridScreen (wa) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20Fix PlayerApiClient const constructor and Media.tags deserialization (d9+e9)Paul Buetow
- Remove const from PlayerApiClient constructor (Uri is not const-constructable) - Replace .cast<String>() with .whereType<String>().toList() in Media.fromJson to silently drop non-string and null tag elements instead of throwing TypeError - Add regression test: tags [1, 'valid', null] deserialized as ['valid'] Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20Guard dateTimeFromJson against malformed date strings (c9)Paul Buetow
Wrap DateTime.parse in try/catch so a malformed or non-ISO-8601 date string from the server degrades to null instead of throwing a FormatException that crashes model deserialization across Media, MediaSet, User, PodcastFeed, PodcastEpisode, PlaybackHint, Share, and Note. Add player-android/test/json_helpers_test.dart with 11 tests covering null, empty, non-string, valid ISO, and malformed inputs (regression guard for the original crash). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17Add player-android/ Flutter skeletonPaul Buetow