ReadKeep/readeck/Domain/UseCase/SaveCardLayoutUseCase.swift
Ilyas Hallak df8a7b64b2 feat: Add Kingfisher caching, card layouts, dynamic tag layout, and undo delete
- 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
2025-09-04 10:43:27 +02:00

22 lines
610 B
Swift

import Foundation
protocol PSaveCardLayoutUseCase {
func execute(layout: CardLayoutStyle) async
}
class SaveCardLayoutUseCase: PSaveCardLayoutUseCase {
private let settingsRepository: PSettingsRepository
private let logger = Logger.data
init(settingsRepository: PSettingsRepository) {
self.settingsRepository = settingsRepository
}
func execute(layout: CardLayoutStyle) async {
do {
try await settingsRepository.saveCardLayoutStyle(layout)
} catch {
logger.error("Failed to save card layout style: \(error)")
}
}
}