feat: update routing and authentication details in technical documentation; enhance API and recipes sections
This commit is contained in:
@@ -33,19 +33,54 @@ Relaterade dokument:
|
||||
### Routing
|
||||
- GoRouter i [flutter/lib/core/router/app_router.dart](flutter/lib/core/router/app_router.dart).
|
||||
- Nuvarande routes:
|
||||
- `/login`
|
||||
- `/recipes`
|
||||
- `/profile`
|
||||
- `/login` — loginskarm
|
||||
- `/recipes` — receptlista (ShellRoute med AppShell)
|
||||
- `/recipes/create` — nytt recept, utanfor ShellRoute
|
||||
- `/recipes/:id` — receptdetalj, utanfor ShellRoute
|
||||
- `/recipes/:id/edit` — redigera recept, utanfor ShellRoute
|
||||
- `/profile` — profil (ShellRoute med AppShell)
|
||||
- `/recipes/create` maste vara listad fore `/recipes/:id` i routelistan for att undvika konflikt.
|
||||
- Detaljsidor (detalj, skapa, redigera) ligger utanfor ShellRoute for att fa full-screen med automatisk back-knapp.
|
||||
|
||||
### Auth
|
||||
- Login endpoint: `POST /api/auth/login`.
|
||||
- Backend kontrakt anvander `username` + `password`.
|
||||
- Token-falt i svar: `accessToken`.
|
||||
- Token lagras via `ITokenStorage` (web implementation med SharedPreferences).
|
||||
- Auth-gate i router: utloggad anvandare redirectas till `/login`, inloggad redirectas fran `/login` till `/recipes`.
|
||||
- Splash-skarm (`/`) visas medan auth-state lases fran storage vid app-start.
|
||||
- `guardedApiCall()` i `flutter/lib/core/api/guarded_api_call.dart` hanterar automatisk logout vid 401.
|
||||
|
||||
### API-lager
|
||||
- `ApiClient` i `flutter/lib/core/api/api_client.dart` exponerar: `getJson`, `postJson`, `patchJson`, `putJson`, `deleteJson`.
|
||||
- Centralicerad HTTP-felklassning: 401 -> `ApiErrorType.unauthorized`, 403 -> `forbidden`, 5xx -> `server`, natverksfel -> `network`.
|
||||
- `ApiException` i `flutter/lib/core/api/api_exception.dart` ar den enda feltypen som propageras fran repositories.
|
||||
- `mapErrorToUserMessage()` i `flutter/lib/core/api/api_error_mapper.dart` oversatter fel till svenska anvandarmedddelanden.
|
||||
|
||||
### Recipes
|
||||
- Recipes endpoint: `GET /api/recipes`.
|
||||
- Flutter model ar hardad for backend-falt (`name` fallback till `title`) och null-safe parsing.
|
||||
- `GET /api/recipes` — receptlista.
|
||||
- `GET /api/recipes/:id` — receptdetalj inkl. ingredienser.
|
||||
- `POST /api/recipes` — skapa recept.
|
||||
- `PATCH /api/recipes/:id` — uppdatera recept (OBS: PATCH, inte PUT).
|
||||
- `DELETE /api/recipes/:id` — ta bort recept (returnerar 204, ingen body).
|
||||
- `POST /api/recipes/parse-markdown` — tolka Markdown, returnerar ParsedRecipe med ingrediensforslagslistor.
|
||||
- Flutter Recipe-model: `name`-fallback till `title`, null-safe parsing av Decimal-strang till double.
|
||||
|
||||
### Gemensamma UI-komponenter
|
||||
- `LoadingStateView`, `EmptyStateView`, `ErrorStateView` i `flutter/lib/core/ui/async_state_views.dart`.
|
||||
- `AppShell` i `flutter/lib/core/ui/app_shell.dart`: responsiv NavigationRail (bred) / NavigationBar (smal), delad AppBar med logout.
|
||||
|
||||
## Kanda API-fallgropar (viktigt!)
|
||||
|
||||
> **Regel: Kontrollera alltid HTTP-metod i [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md) innan en ny repository-metod implementeras.**
|
||||
|
||||
| Operation | Korrekt metod | Fel som gjorts |
|
||||
|-----------|--------------|----------------|
|
||||
| Uppdatera recept | `PATCH /api/recipes/:id` | `PUT` — ger 404 |
|
||||
| Uppdatera inventariepost | `PATCH /api/inventory/:id` | Anvand PATCH |
|
||||
| Uppdatera matplan | `POST /api/meal-plan` (upsert) | Ingen PUT/PATCH |
|
||||
|
||||
Generell regel: NestJS-backenden anvander `PATCH` for partiella uppdateringar, inte `PUT`. `PUT` exponeras inte pa nagra resurser i detta projekt.
|
||||
|
||||
## Drift och deploy
|
||||
### Build/run
|
||||
|
||||
Reference in New Issue
Block a user