Am Ende der letzten beiden Tage hatten wir das Gefühl echt guten Fortschritt gemacht zu haben. Bis auf ein Ticket, das wir, nachdem es bereits geschlossen war, wieder öffnen mussten, haben wir alle Aufgaben abgeschlossen.
Rein funktional ist nicht so viel dazugekommen. Dafür ist unser funktionale Rahmen, in dem wir uns bewegen und an dem wir neue Funktionen andocken, wieder gewachsen, stabiler geworden und wird immer flexibler.
Im Backend haben wir ein komplett neues Format eingeführt. Jeder Call liefert nun nicht mehr einfach die requesteten Daten zurück, sondern es gibt ein Standardformat. Das Standardformat enthält die folgenden Informationen:
- Pfad – den aufgerufenen Pfad
- Timestamp – den Timestamp des Requests
- Http Status Code – der Http Status Code, wie 200, 403
- Result Error Code – ein von uns einführter Fehlercode, den wir UI-seitig auswerten können
- Message – eine beliebige Meldung, die angezeigt werden kann
- Value – der requestete Wert
Das ermöglicht uns mehr Flexibilität, um auf Fehler zu reagieren.
Neben Anpassungen im Backend mussten unsere Retro-Calls angepasst werden. Damit ist es jetzt möglich zu prüfen, ob das Anlegen eines Teams möglich ist. Falls nicht, bekommen wir nun heraus, was das Problem war und können eine sprechende Meldung für den Benutzer anzeigen. Bspw. ist es nicht mehr möglich mehrere Teams mit dem gleichen Namen anzulegen.
Anschließend wollten wir weiter an dem UI arbeiten und eine Navigation zwischen den Screens einbauen. Dabei ist uns ein Video von „Coding in Flow“ in die Hände gefallen. In diesem Video wird die Verwendung des neuen NavControllers erklärt. Über einen NavGraph ist es möglich die Navigation zwischen Fragments zu modellieren. in Android Studio sieht es wie folgt aus:
Es gibt ein Start-Fragment (Home), das nach dem Start angezeigt wird. Von dort aus kann entweder auf das Fragment CreateTeamFragment oder auf TeamDetailsFragment navigiert werden und von CreateTeamFragment wieder zurück auf das TeamOverviewFragment. Eine coole Neuerung. Damit war allerdings unsere API für das Navigieren zwischen Fragments hinfällig und wir haben es durch die neue Funktionalität ersetzt. Ein kleiner Umbau, der das Coding aber vereinfacht hat. Vorher wurde ein Navigation Request an unsere äußere Activity gebubbelt. Jetzt wird er direkt von unserem Fragment bzw. vom zugehörigen View-Model ausgeführt.
Bei der ganzen Implementiererei ist uns aufgefallen, dass wir häufig Abbrüche durch invalide, abgelaufene oder fehlende Refresh-Tokens hatten. Ergebnis war, dass die App nicht mehr lief. Umständlich mussten wir einen Logout triggern, um die Anwendung wieder zum Laufen zu bringen.
Um das Problem zu lösen haben wir recht viel Zeit investiert. Das Ergebnis ist eine deutlich stabilere Anwendung, die automatisch den Login-Screen anzeigt, wenn Requests zum Backend nicht mehr ausgeführt werden können oder das Refreshen des Tokens nicht mehr möglich ist.
Insgesamt eine coole und produktive Woche.