mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-09 04:06:57 -04:00
Multi select improvements
This commit is contained in:
parent
a289dbc9da
commit
909043d38f
@ -44,8 +44,27 @@ enum LibraryState {
|
||||
}
|
||||
|
||||
final class LibraryViewModel: ObservableObject {
|
||||
@Published var selectedZimFile: ZimFile?
|
||||
@Published var multiSelectedZimFiles = Set<ZimFile>()
|
||||
@Published var selectedZimFile: ZimFile? {
|
||||
didSet {
|
||||
if let selectedZimFile {
|
||||
multiSelectedZimFiles = Set([selectedZimFile])
|
||||
} else {
|
||||
multiSelectedZimFiles.removeAll()
|
||||
}
|
||||
}
|
||||
}
|
||||
@Published var multiSelectedZimFiles = Set<ZimFile>() {
|
||||
didSet {
|
||||
switch multiSelectedZimFiles.count {
|
||||
case 0 where selectedZimFile != nil:
|
||||
selectedZimFile = nil
|
||||
case 1 where selectedZimFile == nil:
|
||||
selectedZimFile = multiSelectedZimFiles.first
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
@MainActor @Published private(set) var error: Error?
|
||||
/// Note: due to multiple instances of LibraryViewModel,
|
||||
/// this `state` should not be changed directly, modify the `process.state` instead
|
||||
|
@ -149,9 +149,6 @@ struct LibraryZimFileContext<Content: View>: View {
|
||||
content
|
||||
.gesture(TapGesture().modifiers(.command).onEnded({ value in
|
||||
viewModel.toggleMultiSelect(of: zimFile)
|
||||
if viewModel.multiSelectedZimFiles.count > 0 {
|
||||
viewModel.selectedZimFile = nil
|
||||
}
|
||||
}))
|
||||
.gesture(TapGesture().onEnded({ _ in
|
||||
viewModel.selectedZimFile = zimFile
|
||||
|
@ -63,10 +63,6 @@ struct ZimFilesOpened: View {
|
||||
}
|
||||
.onChange(of: zimFiles.count) { _ in
|
||||
viewModel.selectedZimFile = zimFiles.first // makes sure we also nil out, if all ZIMs were unlinked
|
||||
viewModel.multiSelectedZimFiles.removeAll()
|
||||
}
|
||||
.onDisappear {
|
||||
viewModel.multiSelectedZimFiles.removeAll()
|
||||
}
|
||||
// not using OpenFileButton here, because it does not work on iOS/iPadOS 15 when this view is in a modal
|
||||
.fileImporter(
|
||||
|
Loading…
x
Reference in New Issue
Block a user