- Integrate Kingfisher for image caching with CachedAsyncImage component - Add CacheSettingsView for managing image cache size and clearing cache - Implement three card layout styles: compact, magazine (default), natural - Add AppearanceSettingsView with visual layout previews and theme settings - Create Clean Architecture for card layout with domain models and use cases - Implement FlowLayout for dynamic label width calculation - Add skeleton loading animation for initial bookmark loads - Replace delete confirmation dialogs with immediate delete + 3-second undo - Support multiple simultaneous undo operations with individual progress bars - Add grayed-out visual feedback for pending deletions - Centralize notification names in dedicated NotificationNames file - Remove pagination logic from label management (replaced with FlowLayout) - Update AsyncImage usage across BookmarkCardView, BookmarkDetailView, ImageViewerView - Improve UI consistency and spacing throughout the app
21 lines
524 B
Swift
21 lines
524 B
Swift
import Foundation
|
|
|
|
protocol PLoadCardLayoutUseCase {
|
|
func execute() async -> CardLayoutStyle
|
|
}
|
|
|
|
class LoadCardLayoutUseCase: PLoadCardLayoutUseCase {
|
|
private let settingsRepository: PSettingsRepository
|
|
|
|
init(settingsRepository: PSettingsRepository) {
|
|
self.settingsRepository = settingsRepository
|
|
}
|
|
|
|
func execute() async -> CardLayoutStyle {
|
|
do {
|
|
return try await settingsRepository.loadCardLayoutStyle()
|
|
} catch {
|
|
return .magazine
|
|
}
|
|
}
|
|
} |