herel
88aa9de4ad
fix: use French labels for refresh/logout buttons in ScheduleScreen
2026-07-08 17:56:01 +02:00
herel
38d420524a
feat: add LoginScreen, ScheduleScreen, and EventDetailScreen
...
Add 3 Compose Multiplatform screens consuming Task 6 ViewModels and
Task 8 components:
- LoginScreen: MyIce title, login button, loading/error states
- ScheduleScreen: AppBar + filter card (4 dropdowns) + event list
with loading/error/empty/refreshing states
- EventDetailScreen: AppBar + recap card + players/staff sections
with amber empty-state card
Use TextButton for Refresh/Logout actions (material-icons-core not
available in this Compose Multiplatform setup). Guard setAccount call
against nullable onSelect callback.
2026-07-08 17:54:19 +02:00
herel
277517bf7e
fix: make parseHexColor crash-safe, clean up imports in EventCard
2026-07-08 17:53:04 +02:00
herel
af85605dd4
feat: add Material 3 theme and UI components (EventCard, FilterDropdown, LoadingIndicator)
2026-07-08 17:52:04 +02:00
herel
00e7a7456f
fix: address OAuth review findings (redirect_uri, binding, timeout, CRLF, DRY)
2026-07-08 17:46:40 +02:00
herel
294aebd0b4
feat: add AuthViewModel, ScheduleViewModel, and EventDetailViewModel with StateFlow
2026-07-08 17:25:41 +02:00
herel
bb13a12d00
feat: add event filtering logic, TypeFilter enum, AuthSettings, and OAuthClient interface
2026-07-08 17:16:01 +02:00
herel
b61b6408f3
fix: bump kotlinx-datetime to 0.7.1, scope ExperimentalTime opt-in to saveEvents
2026-07-08 17:14:56 +02:00
herel
11c0a92421
feat: add ScheduleCache with multiplatform-settings for offline caching
2026-07-08 17:10:45 +02:00
herel
b1661aaa4f
feat: add Ktor networking layer with ApiService and auth token holder
...
Add ApiConfig, AuthTokenHolder singleton, expect/actual HttpClient
engine factories (CIO for Android/Desktop, Darwin for iOS), and
ApiService with four GET endpoints. Bearer token from AuthTokenHolder
is injected as Authorization header on each request.
Adjusted for Ktor 3.5.1: HttpClientEngineFactory lives in
io.ktor.client.engine; the timeout plugin is HttpTimeout (package
io.ktor.client.plugins), not HttpTimeoutPlugin. Tests wrap suspend
calls in runTest and assert request URLs without a trailing '?'.
2026-07-08 17:07:20 +02:00
herel
a24297f821
feat: add serializable data models with FlexibleStringSerializer for number coercion
2026-07-08 17:02:31 +02:00
herel
15ae8cd046
feat: scaffold KMP project with Compose Multiplatform (Android, iOS, Desktop)
2026-07-08 16:53:13 +02:00