Krisenvorrat Inventar-App – Android-App (Kotlin) zur Verwaltung eines Krisenvorrats-Inventars
domain/model/SyncError.kt: - Sealed class with ConnectionError, Timeout, AuthError, ServerError, NotConfigured, Unknown subtypes for typed error handling domain/repository/SyncService.kt: - Interface with downloadInventory() and uploadInventory() returning Result<InventoryDto> for clean error propagation data/sync/SyncServiceImpl.kt: - Ktor Client implementation using OkHttp engine - GET /api/inventory and PUT /api/inventory endpoints - X-API-Key header authentication matching server contract - Server URL and API key read from SettingsRepository - withContext(Dispatchers.IO) for network calls - Catches SocketTimeoutException, ConnectException specifically di/NetworkModule.kt: - Hilt module providing singleton HttpClient with OkHttp engine - ContentNegotiation with kotlinx.serialization JSON - Configurable connect/read/write timeouts (10s/30s/30s) - Binds SyncServiceImpl to SyncService interface Dependencies: - ktor-client-core, ktor-client-okhttp, ktor-client-content-negotiation, ktor-client-mock (test) - ktor-serialization-kotlinx-json (shared with server) - INTERNET permission added to AndroidManifest.xml Tests: 9 tests with Ktor MockEngine covering success, 401, 500, missing config, trailing slash URL normalization Closes #44 |
||
|---|---|---|
| .github | ||
| .vscode | ||
| Anforderungen | ||
| app | ||
| gradle | ||
| memories/repo | ||
| server | ||
| shared | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle.kts | ||