- 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
65 lines
1.6 KiB
Swift
65 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
struct BookmarkDto: Codable {
|
|
let id: String
|
|
let title: String
|
|
let url: String
|
|
let href: String
|
|
let description: String
|
|
let authors: [String]
|
|
let created: String
|
|
let published: String?
|
|
let updated: String
|
|
let siteName: String
|
|
let site: String
|
|
let readingTime: Int?
|
|
let wordCount: Int
|
|
let hasArticle: Bool
|
|
let isArchived: Bool
|
|
let isDeleted: Bool
|
|
let isMarked: Bool
|
|
let labels: [String]
|
|
let lang: String?
|
|
let loaded: Bool
|
|
let readProgress: Int
|
|
let documentType: String
|
|
let state: Int
|
|
let textDirection: String
|
|
let type: String
|
|
let resources: BookmarkResourcesDto
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id, title, url, href, description, authors, created, published, updated, site, labels, lang, loaded, state, type
|
|
case siteName = "site_name"
|
|
case readingTime = "reading_time"
|
|
case wordCount = "word_count"
|
|
case hasArticle = "has_article"
|
|
case isArchived = "is_archived"
|
|
case isDeleted = "is_deleted"
|
|
case isMarked = "is_marked"
|
|
case readProgress = "read_progress"
|
|
case documentType = "document_type"
|
|
case textDirection = "text_direction"
|
|
case resources
|
|
}
|
|
}
|
|
|
|
struct BookmarkResourcesDto: Codable {
|
|
let article: ResourceDto?
|
|
let icon: ImageResourceDto?
|
|
let image: ImageResourceDto?
|
|
let log: ResourceDto?
|
|
let props: ResourceDto?
|
|
let thumbnail: ImageResourceDto?
|
|
}
|
|
|
|
struct ResourceDto: Codable {
|
|
let src: String
|
|
}
|
|
|
|
struct ImageResourceDto: Codable {
|
|
let src: String
|
|
let height: Int
|
|
let width: Int
|
|
}
|