47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
import SwiftUI
|
|
|
|
struct BookPickerView: View {
|
|
|
|
@ObservedObject var viewModel: ShareViewModel
|
|
@Environment(\.dismiss) private var dismiss
|
|
|
|
var body: some View {
|
|
content
|
|
.navigationTitle("Select Book")
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
}
|
|
|
|
@ViewBuilder
|
|
private var content: some View {
|
|
if viewModel.isLoading && viewModel.books.isEmpty {
|
|
ProgressView("Loading books…")
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
} else if viewModel.books.isEmpty {
|
|
ContentUnavailableView(
|
|
"No books found",
|
|
systemImage: "book.closed",
|
|
description: Text("This shelf has no books yet.")
|
|
)
|
|
} else {
|
|
List(viewModel.books) { book in
|
|
Button {
|
|
Task {
|
|
await viewModel.selectBook(book)
|
|
dismiss()
|
|
}
|
|
} label: {
|
|
HStack {
|
|
Text(book.name)
|
|
.foregroundStyle(.primary)
|
|
Spacer()
|
|
if viewModel.selectedBook?.id == book.id {
|
|
Image(systemName: "checkmark")
|
|
.foregroundStyle(Color.accentColor)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|