mirror of
https://github.com/Aminark/legado-ios.git
synced 2026-10-24 21:01:22 +08:00
feat: open-source 小浣熊阅读 for iOS
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import SwiftUI
|
||||
|
||||
struct RSSAddBookView: View {
|
||||
@EnvironmentObject private var books: BookLibraryModel
|
||||
@EnvironmentObject private var sources: SourceLibraryModel
|
||||
let bookURL: String
|
||||
@State private var resolved: AddBookURLResult?
|
||||
@State private var existing: (Book, BookSource)?
|
||||
@State private var errorMessage: String?
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
if let existing {
|
||||
BookDetailView(book: existing.0, source: existing.1)
|
||||
} else if let resolved {
|
||||
BookDetailView(book: resolved.book, source: resolved.source)
|
||||
} else if let errorMessage {
|
||||
ReadingUnavailableView("无法添加书籍", systemImage: "books.vertical.circle", description: Text(errorMessage))
|
||||
} else {
|
||||
VStack(spacing: 14) {
|
||||
ProgressView()
|
||||
Text("正在匹配书源并解析详情…").foregroundStyle(.secondary)
|
||||
Text(bookURL).font(.caption.monospaced()).foregroundStyle(.tertiary).lineLimit(3)
|
||||
}.padding()
|
||||
}
|
||||
}
|
||||
.navigationTitle("添加到书架")
|
||||
.task(id: bookURL) { await load() }
|
||||
}
|
||||
|
||||
private func load() async {
|
||||
if let book = books.books.first(where: { $0.bookUrl == bookURL }),
|
||||
let source = sources.sources.first(where: { $0.bookSourceUrl == book.origin }) {
|
||||
existing = (book, source)
|
||||
return
|
||||
}
|
||||
do {
|
||||
resolved = try await AddBookURLService().resolve(bookURL: bookURL, sources: sources.sources)
|
||||
} catch {
|
||||
errorMessage = error.localizedDescription
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user