- 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
27 lines
625 B
Swift
27 lines
625 B
Swift
import Foundation
|
|
|
|
class AuthRepository: PAuthRepository {
|
|
private let api: PAPI
|
|
|
|
init(api: PAPI) {
|
|
self.api = api
|
|
}
|
|
|
|
func login(username: String, password: String) async throws -> User {
|
|
let userDto = try await api.login(username: username, password: password)
|
|
UserDefaults.standard.set(userDto.token, forKey: "token")
|
|
UserDefaults.standard.synchronize()
|
|
return User(id: userDto.id, token: userDto.token)
|
|
}
|
|
|
|
func logout() async throws {
|
|
// Implement logout logic if needed
|
|
}
|
|
|
|
}
|
|
|
|
struct User {
|
|
let id: String
|
|
let token: String
|
|
}
|