ReadKeep/readeck/Domain/UseCase/GetBookmarksUseCase.swift

30 lines
1013 B
Swift

import Foundation
class GetBookmarksUseCase {
private let repository: PBookmarksRepository
init(repository: PBookmarksRepository) {
self.repository = repository
}
func execute(state: BookmarkState? = nil, limit: Int? = nil, offset: Int? = nil, search: String? = nil) async throws -> [Bookmark] {
let allBookmarks = try await repository.fetchBookmarks(state: state, limit: limit, offset: offset, search: search)
// Fallback-Filterung auf Client-Seite falls API keine Query-Parameter unterstützt
if let state = state {
return allBookmarks.filter { bookmark in
switch state {
case .unread:
return !bookmark.isArchived && !bookmark.isMarked
case .favorite:
return bookmark.isMarked
case .archived:
return bookmark.isArchived
}
}
}
return allBookmarks
}
}