- BookmarkDetail: Add labels property, display and manage labels in detail view - Add AddLabelsToBookmarkUseCase and RemoveLabelsFromBookmarkUseCase - Update UpdateBookmarkUseCase and BookmarkUpdateRequest for label operations - UI: Show labels in BookmarkDetailView, add label management sheet - DefaultUseCaseFactory: Provide use cases for label management - Localizable: Add/adjust label-related strings, minor cleanup - SettingsServerView: Update debug endpoint - SidebarTab: Change 'Alle' to 'All' - Project: Remove unused region from Xcode project
92 lines
3.5 KiB
Swift
92 lines
3.5 KiB
Swift
import Foundation
|
|
|
|
protocol UseCaseFactory {
|
|
func makeLoginUseCase() -> LoginUseCase
|
|
func makeGetBookmarksUseCase() -> GetBookmarksUseCase
|
|
func makeGetBookmarkUseCase() -> GetBookmarkUseCase
|
|
func makeGetBookmarkArticleUseCase() -> GetBookmarkArticleUseCase
|
|
func makeSaveSettingsUseCase() -> SaveSettingsUseCase
|
|
func makeLoadSettingsUseCase() -> LoadSettingsUseCase
|
|
func makeUpdateBookmarkUseCase() -> UpdateBookmarkUseCase
|
|
func makeDeleteBookmarkUseCase() -> DeleteBookmarkUseCase
|
|
func makeCreateBookmarkUseCase() -> CreateBookmarkUseCase
|
|
func makeLogoutUseCase() -> LogoutUseCase
|
|
func makeSearchBookmarksUseCase() -> SearchBookmarksUseCase
|
|
func makeSaveServerSettingsUseCase() -> SaveServerSettingsUseCase
|
|
func makeAddLabelsToBookmarkUseCase() -> AddLabelsToBookmarkUseCase
|
|
func makeRemoveLabelsFromBookmarkUseCase() -> RemoveLabelsFromBookmarkUseCase
|
|
}
|
|
|
|
class DefaultUseCaseFactory: UseCaseFactory {
|
|
private let tokenProvider = CoreDataTokenProvider()
|
|
private lazy var api: PAPI = API(tokenProvider: tokenProvider)
|
|
private lazy var authRepository: PAuthRepository = AuthRepository(api: api, settingsRepository: settingsRepository)
|
|
private lazy var bookmarksRepository: PBookmarksRepository = BookmarksRepository(api: api)
|
|
private let settingsRepository: PSettingsRepository = SettingsRepository()
|
|
|
|
static let shared = DefaultUseCaseFactory()
|
|
|
|
private init() {}
|
|
|
|
func makeLoginUseCase() -> LoginUseCase {
|
|
LoginUseCase(repository: authRepository)
|
|
}
|
|
|
|
func makeGetBookmarksUseCase() -> GetBookmarksUseCase {
|
|
GetBookmarksUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeGetBookmarkUseCase() -> GetBookmarkUseCase {
|
|
GetBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeGetBookmarkArticleUseCase() -> GetBookmarkArticleUseCase {
|
|
GetBookmarkArticleUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeSaveSettingsUseCase() -> SaveSettingsUseCase {
|
|
SaveSettingsUseCase(settingsRepository: settingsRepository)
|
|
}
|
|
|
|
func makeLoadSettingsUseCase() -> LoadSettingsUseCase {
|
|
LoadSettingsUseCase(authRepository: authRepository)
|
|
}
|
|
|
|
func makeUpdateBookmarkUseCase() -> UpdateBookmarkUseCase {
|
|
return UpdateBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeLogoutUseCase() -> LogoutUseCase {
|
|
return LogoutUseCase()
|
|
}
|
|
|
|
// Nicht mehr nötig - Token wird automatisch geladen
|
|
func refreshConfiguration() async {
|
|
// Optional: Cache löschen falls nötig
|
|
}
|
|
|
|
func makeDeleteBookmarkUseCase() -> DeleteBookmarkUseCase {
|
|
return DeleteBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeCreateBookmarkUseCase() -> CreateBookmarkUseCase {
|
|
return CreateBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeSearchBookmarksUseCase() -> SearchBookmarksUseCase {
|
|
return SearchBookmarksUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeSaveServerSettingsUseCase() -> SaveServerSettingsUseCase {
|
|
return SaveServerSettingsUseCase(repository: SettingsRepository())
|
|
}
|
|
|
|
func makeAddLabelsToBookmarkUseCase() -> AddLabelsToBookmarkUseCase {
|
|
return AddLabelsToBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
|
|
func makeRemoveLabelsFromBookmarkUseCase() -> RemoveLabelsFromBookmarkUseCase {
|
|
return RemoveLabelsFromBookmarkUseCase(repository: bookmarksRepository)
|
|
}
|
|
}
|