- Add BookmarkState enum with unread, favorite, and archived states - Extend API layer with query parameter filtering for bookmark states - Update Bookmark domain model to match complete API response schema - Implement BookmarkListView with card-based UI and preview images - Add BookmarkListViewModel with state management and error handling - Enhance BookmarkDetailView with meta information and WebView rendering - Create comprehensive DTO mapping for all bookmark fields - Add TabView with state-based bookmark filtering - Implement date formatting utilities for ISO8601 timestamps - Add progress indicators and pull-to-refresh functionality
30 lines
905 B
Swift
30 lines
905 B
Swift
import Foundation
|
|
|
|
class GetBookmarksUseCase {
|
|
private let repository: PBookmarksRepository
|
|
|
|
init(repository: PBookmarksRepository) {
|
|
self.repository = repository
|
|
}
|
|
|
|
func execute(state: BookmarkState? = nil) async throws -> [Bookmark] {
|
|
let allBookmarks = try await repository.fetchBookmarks(state: state)
|
|
|
|
// 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
|
|
}
|
|
}
|