feat(ui): Online-Dienste-Banner + bollwerk.online in Settings #132
Labels
No labels
block-planning
bug
documentation
duplicate
enhancement
feature
good first issue
help wanted
infrastructure
invalid
planning
priority:high
priority:low
question
refactoring
status:backlog
status:done
status:in-progress
status:todo
tech-decision
test
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: bollwerkadmin/bollwerk#132
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Nutzer öffnen die Seiten Nachrichten und Ressourcen, ohne einen Server-Account zu haben. Derzeit gibt es keinen Hinweis, dass diese Features eine Server-Anmeldung benötigen. Gleichzeitig soll der Abschnitt „Server-Synchronisierung" in den Einstellungen auf bollwerk.online umbenannt werden – und die Server-URL-Eingabe aus der UI entfernt werden, da der Server immer
https://bollwerk.onlineist.Scope
Drei Teilaufgaben in einem Feature-Ticket:
Acceptance Criteria
1 · Banner auf Nachrichten + Ressourcen
isLoggedIn == false, zeigt UserListScreen einen Info-Banner:Screen.SettingsonNavigateToSettings: () -> UnitParameter, der inMainScreenaufnavController.navigate(Screen.Settings)gemappt wird2 · Umbenennung in SettingsScreen
Text("Server-Synchronisierung")→Text("bollwerk.online")3 · Server-URL-Feld auskommentieren
OutlinedTextFieldfür die Server-URL (uiState.serverUrl) und der zugehörige Reset-TextButtonwerden in der UI auskommentiert (Kotlin-Kommentar/* ... */)onServerUrlChanged- undresetServerUrl-Methoden im ViewModel bleiben erhalten (nur UI-Zeilen auskommentieren)// Server-URL ist fest bollwerk.online – Änderung durch User deaktiviertImplementation Notes
isLoggedIn in Nachrichten/Ressourcen-ViewModels
UserListViewModelundResourceListViewModelexistieren bereits. Dort jeweils einisLoggedIn: StateFlow<Boolean>ergänzen, dasSettingsRepository.observeString(StringKey.AuthAccessToken).map { it.isNotBlank() }beobachtet.Statein den Screens via eigenemViewModeloder über einen sharedAuthViewModel– einfachste Variante ist direkt im jeweiligen Screen-ViewModel.Navigation-Callback
In
MainScreen.ktden Callback verdrahten:Banner-Composable (Vorschlag)
Dateien
UserListScreen.ktonNavigateToSettings-ParameterUserListViewModel.ktisLoggedIn: StateFlow<Boolean>ergänzenResourceListScreen.ktonNavigateToSettings-ParameterResourceListViewModel.ktisLoggedIn: StateFlow<Boolean>ergänzenSettingsScreen.ktMainScreen.ktonNavigateToSettings-Callbacks verdrahten