- 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
25 lines
630 B
Swift
25 lines
630 B
Swift
import Foundation
|
|
|
|
protocol UseCaseFactory {
|
|
func makeLoginUseCase() -> LoginUseCase
|
|
func makeGetBooksmarksUseCase() -> GetBooksmarksUseCase
|
|
}
|
|
|
|
class DefaultUseCaseFactory: UseCaseFactory {
|
|
private let api: PAPI
|
|
|
|
static let shared = DefaultUseCaseFactory()
|
|
|
|
init(api: PAPI = API(baseURL: "https://keep.mnk.any64.de/api")) {
|
|
self.api = api
|
|
}
|
|
|
|
func makeLoginUseCase() -> LoginUseCase {
|
|
LoginUseCase(repository: AuthRepository(api: api))
|
|
}
|
|
|
|
func makeGetBooksmarksUseCase() -> GetBooksmarksUseCase {
|
|
GetBooksmarksUseCase(repository: .init(api: api))
|
|
}
|
|
}
|