- API-Klasse mit allen CRUD-Operationen für Bookmarks - Login/Authentifizierung mit Bearer Token - Bookmarks abrufen (Liste und Details) - Artikel-Inhalt abrufen - DTO-Strukturen in separate Dateien aufgeteilt - UserDto für Authentifizierung - BookmarkDto für Bookmark-Listen - BookmarkDetailDto mit vollständigen Metadaten - MVVM-Architektur mit @Observable - SettingsViewModel für Anmeldung - BookmarksViewModel für Bookmark-Verwaltung - SwiftUI Views mit modernem Design - SettingsView mit Eingabefeldern und Validierung - BookmarksView mit Pull-to-Refresh und Leerzustand - MainTabView als Navigation - Use Case Pattern implementiert - LoginUseCase für Authentifizierung - GetBookmarksUseCase für Datenabfrage - DefaultUseCaseFactory für Dependency Injection - Fehlerbehandlung und Loading States - Protocol-basierte Architektur für bessere Testbarkeit
29 lines
606 B
Swift
29 lines
606 B
Swift
import Foundation
|
|
|
|
@Observable
|
|
class BookmarksViewModel {
|
|
private let getBooksmarksUseCase = DefaultUseCaseFactory.shared.makeGetBooksmarksUseCase()
|
|
|
|
var bookmarks: [Bookmark] = []
|
|
var isLoading = false
|
|
var errorMessage: String?
|
|
|
|
init() {
|
|
|
|
}
|
|
|
|
@MainActor
|
|
func loadBookmarks() async {
|
|
isLoading = true
|
|
errorMessage = nil
|
|
|
|
do {
|
|
bookmarks = try await getBooksmarksUseCase.execute()
|
|
} catch {
|
|
errorMessage = "Fehler beim Laden der Bookmarks"
|
|
}
|
|
|
|
isLoading = false
|
|
}
|
|
}
|