diff --git a/BeeSwift/EditDatapointViewController.swift b/BeeSwift/EditDatapointViewController.swift index dee0aea36..186652250 100644 --- a/BeeSwift/EditDatapointViewController.swift +++ b/BeeSwift/EditDatapointViewController.swift @@ -19,13 +19,13 @@ class EditDatapointViewController: UIViewController, UITextFieldDelegate { private let margin = 10 var datapoint : ExistingDataPoint - var goalSlug : String + var goal : Goal! fileprivate var datePicker = InlineDatePicker() fileprivate var valueField = UITextField() fileprivate var commentField = UITextField() - init(goalSlug: String, datapoint: ExistingDataPoint) { - self.goalSlug = goalSlug + init(goal: Goal, datapoint: ExistingDataPoint) { + self.goal = goal self.datapoint = datapoint super.init(nibName: nil, bundle: nil) } @@ -212,14 +212,18 @@ class EditDatapointViewController: UIViewController, UITextFieldDelegate { let params = [ "urtext": self.urtext() ] - let _ = try await ServiceLocator.requestManager.put(url: "api/v1/users/\(ServiceLocator.currentUserManager.username!)/goals/\(self.goalSlug)/datapoints/\(self.datapoint.id).json", parameters: params) - let hud = MBProgressHUD.forView(self.view) - hud?.mode = .customView - hud?.customView = UIImageView(image: UIImage(named: "BasicCheckmark")) - hud?.hide(animated: true, afterDelay: 2) + let _ = try await ServiceLocator.requestManager.put(url: "api/v1/users/\(ServiceLocator.currentUserManager.username!)/goals/\(self.goal.slug)/datapoints/\(self.datapoint.id).json", parameters: params) + try await ServiceLocator.goalManager.refreshGoal(self.goal) + + hud.mode = .customView + hud.customView = UIImageView(image: UIImage(named: "BasicCheckmark")) + hud.hide(animated: true, afterDelay: 0.5) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + self.navigationController?.dismiss(animated: true) + } } catch { - logger.error("Error updating datapoint for goal \(self.goalSlug): \(error)") - let _ = MBProgressHUD.hide(for: self.view, animated: true) + logger.error("Error updating datapoint for goal \(self.goal.slug): \(error)") + hud.hide(animated: false) } } } @@ -230,18 +234,18 @@ class EditDatapointViewController: UIViewController, UITextFieldDelegate { hud.mode = .indeterminate do { - let _ = try await ServiceLocator.requestManager.delete(url: "api/v1/users/\(ServiceLocator.currentUserManager.username!)/goals/\(self.goalSlug)/datapoints/\(self.datapoint.id).json", parameters: nil) - - let hud = MBProgressHUD.forView(self.view) - hud?.mode = .customView - hud?.customView = UIImageView(image: UIImage(named: "BasicCheckmark")) - hud?.hide(animated: true, afterDelay: 2) - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { - self.navigationController?.popViewController(animated: true) + let _ = try await ServiceLocator.requestManager.delete(url: "api/v1/users/\(ServiceLocator.currentUserManager.username!)/goals/\(self.goal.slug)/datapoints/\(self.datapoint.id).json", parameters: nil) + try await ServiceLocator.goalManager.refreshGoal(self.goal) + + hud.mode = .customView + hud.customView = UIImageView(image: UIImage(named: "BasicCheckmark")) + hud.hide(animated: true, afterDelay: 0.5) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + self.navigationController?.dismiss(animated: true) } } catch { - logger.error("Error deleting datapoint for goal \(self.goalSlug): \(error)") - + logger.error("Error deleting datapoint for goal \(self.goal.slug): \(error)") + hud.hide(animated: false) } } } diff --git a/BeeSwift/GoalViewController.swift b/BeeSwift/GoalViewController.swift index 0944a00f4..859425bd4 100644 --- a/BeeSwift/GoalViewController.swift +++ b/BeeSwift/GoalViewController.swift @@ -401,7 +401,7 @@ class GoalViewController: UIViewController, UIScrollViewDelegate, DatapointTabl guard !self.goal.hideDataEntry() else { return } guard let existingDatapoint = datapoint as? ExistingDataPoint else { return } - let editDatapointViewController = EditDatapointViewController(goalSlug: goal.slug, datapoint: existingDatapoint) + let editDatapointViewController = EditDatapointViewController(goal: goal, datapoint: existingDatapoint) let navigationController = UINavigationController(rootViewController: editDatapointViewController) navigationController.modalPresentationStyle = .formSheet self.present(navigationController, animated: true, completion: nil)