🐛 Fix #6 : Make cancelling make more sense

pull/8/head
Alexis Drai 2 years ago
parent ce61496b5b
commit 04c27dde38

@ -16,7 +16,7 @@ class UnitsStore: ObservableObject {
in: .userDomainMask,
appropriateFor: nil,
create: false
).appendingPathComponent("my.data")
).appendingPathComponent("my.local.data")
}
func load<T: Codable>(defaultValue: [T]) async throws -> [T] {

@ -17,9 +17,6 @@ struct SubjectViewCell: View {
var body: some View {
HStack {
VStack {
// FIXME (later, maybe) when getting updated from the UnitView, these two changes are persisted right away instead of waiting for user
// to confirm changes. They just don't get brought into the main UnitsManager, so the average is not recalculated when a unit's weight changes
// when 'cancel' is hit, it would be nice to reset these two values as well, like a user might expect
HStack {
TextField("", text: $subjectVM.model.name)
.disabled(!unitsManagerVM.isAllEditable)

@ -15,6 +15,8 @@ struct UnitView: View {
@State private var showingForm: Bool = false
var formVM = SubjectFormVM()
// TODO maybe later: when a subject is deleted this way, if the user clicks on 'Annuler', the deletion should be cancelled
// then update the readme accrodingly
private func delete(at offsets: IndexSet) {
guard let index = offsets.first else { return }
let subjectVMToDelete = unitVM.SubjectsVM[index]
@ -75,9 +77,15 @@ struct UnitView: View {
Button(action: { showingForm = true }) {
Image(systemName: "plus")
}
// FIXME this does cancel the changes made **to unit and subject** names and weights,
// but whereas names visibly revert instantaneously to old values, like we should expect,
// weights are displayed as new, cancelled values until user clicks on 'Modifier' again, when it finally takes on the true, old, value
// ... weights should visibly revert instantaneously to old values
Button(action: {
unitVM.isEdited = false
unitsManagerVM.isAllEditable.toggle()
unitVM.onEdited(isCancelled: true)
unitVM.SubjectsVM.forEach { $0.onEdited(isCancelled: true) }
}) {
Text("Annuler")
}
@ -137,6 +145,7 @@ struct UnitView: View {
// If user navigates back while editing but before clicking 'OK', the changes are cancelled
.onDisappear(perform: {
if unitsManagerVM.isAllEditable {
unitVM.isEdited = false
unitVM.onEdited(isCancelled: true)
unitsManagerVM.isAllEditable = false
}

@ -44,7 +44,6 @@ class UnitsManagerVM : ObservableObject {
private var original: UnitsManager
@Published var model: UnitsManager.Data
@Published var isEdited: Bool = false
@Published var isAllEditable: Bool = false
private var unitsVM: [UnitVM]

Loading…
Cancel
Save