- 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
20 lines
759 B
Swift
20 lines
759 B
Swift
import Foundation
|
|
|
|
extension Notification.Name {
|
|
// MARK: - App Lifecycle
|
|
static let settingsChanged = Notification.Name("SettingsChanged")
|
|
static let setupStatusChanged = Notification.Name("SetupStatusChanged")
|
|
|
|
// MARK: - Authentication
|
|
static let unauthorizedAPIResponse = Notification.Name("UnauthorizedAPIResponse")
|
|
|
|
// MARK: - Network
|
|
static let serverDidBecomeAvailable = Notification.Name("ServerDidBecomeAvailable")
|
|
|
|
// MARK: - UI Interactions
|
|
static let dismissKeyboard = Notification.Name("DismissKeyboard")
|
|
static let addBookmarkFromShare = Notification.Name("AddBookmarkFromShare")
|
|
|
|
// MARK: - User Preferences
|
|
static let cardLayoutChanged = Notification.Name("cardLayoutChanged")
|
|
} |