Unit tests, Lokalisierung, ShareExtension
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user