Statistik: PB-listan laddade inte — init-ordning i StatsViewModel + fallback mot äldre gym-API
All checks were successful
release / build-release (push) Successful in 4m22s

- StatsViewModel: pbMode/pbs deklarerades efter init { load() } → refreshPbs()
  körde på null vid första öppningen (NPE som runCatching svalde). Listan kom
  först när man bytte läge/period. Deklarationerna flyttade före init.
- personalBestsDetailed: känner igen schemafel ("does not exist") från ett
  äldre API och faller tillbaka på den gamla personalBests-frågan +
  favoriteExercises; PbList.legacyApi styr UI:t (lägen/sök/ark avstängda,
  notis om att gym-API:t behöver uppdateras).
- Fel vid PB-hämtning visas under rubriken i stället för tom lista;
  LiftStatusSheet/PbSearchCard visar serverns fel i stället för "offline?".
- README: API-krav för rekordstatus, fallback, Waydroid-testflöde.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGT3xpdm51McmSrJcHnrzq
This commit is contained in:
2026-09-10 00:24:49 +02:00
parent 6ce8853309
commit 213f635d93
6 changed files with 154 additions and 25 deletions

View File

@@ -41,6 +41,17 @@ I VS Code: kör build-tasken (`Ctrl+Skift+B`) — den lägger APK:n i
`build/FitnessDroid.apk`. Tasken `installera på telefon (adb)` installerar den
direkt på en ansluten telefon med USB-felsökning på.
### Testa lokalt i Waydroid
Waydroid (x86_64, Android 13) fungerar som emulator på brasse-linux01. Sessionen startas
med `waydroid session start` + `waydroid show-full-ui`, sedan
`adb connect 192.168.240.112:5555` (IP:n från `waydroid status`) — första gången måste
*Allow USB debugging* godkännas i Waydroid-fönstret. Installera med
`adb install -r app/build/outputs/apk/debug/app-debug.apk`; skärmdumpar via
`adb exec-out screencap -p > fil.png`, UI-koordinater via `uiautomator dump`.
Saknar Android nät bortom värden är det Dockers FORWARD-spärr — se infra-Doc
`hosts/brasse-linux01.md` (Waydroid-avsnittet). Testkonto: `bb01`.
### Testa mot API:t
Logga in med ditt vanliga gym-konto (LDAP). API-url:en går att ändra under
@@ -59,6 +70,14 @@ bästa est. 1RM. Stjärnan på ett PB-kort gör övningen till **favorit** (samm
favoriter som övningsväljaren) så att den ligger överst i PB-listan i både app och webb. "Räknas ej" tas ur rekord, 1RM och PB-höjdpunkter på servern
(kod: `ui/common/LiftStatusSheet.kt`, API: `setLiftStatus`/`setSessionSetStatus`).
**Kräver gym-API:t från 2026-09-06 eller senare** (`personalBests(mode)`, `pbLookup`,
`pbCandidates`, `liftDetail`, `setLiftStatus`). Mot ett äldre API faller appen tillbaka på
den gamla PB-frågan: rekorden visas fortfarande (favoriter hämtas via `favoriteExercises`),
men lägesväxeln, sökkortet och detaljarket är avstängda och en notis säger att servern
behöver uppdateras. Fel vid hämtningen visas under rubriken i stället för att listan tyst
blir tom. Schemafel känns igen på HotChocolates "does not exist" (`GraphQlException.isSchemaMismatch()`
i `data/GraphQlClient.kt`).
## Signeringsnyckeln
Nyckeln är **inte** incheckad (repot är publikt). Lokalt ligger den i