From 0821a5c95222f05864e6bbc402080f16325ae4b6 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 27 Jan 2023 12:45:16 +0100 Subject: [PATCH] create or rename activity --- LeCountdown/Views/NewCountdownView.swift | 37 ++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/LeCountdown/Views/NewCountdownView.swift b/LeCountdown/Views/NewCountdownView.swift index 9335e85..d4091ae 100644 --- a/LeCountdown/Views/NewCountdownView.swift +++ b/LeCountdown/Views/NewCountdownView.swift @@ -69,7 +69,9 @@ struct CountdownEditView : View { @State var nameString: String = "" @State var deleteConfirmationShown: Bool = false - + @State var activityNameConfirmationShown: Bool = false + @State fileprivate var _rename: Bool? = nil + @State var errorShown: Bool = false @State var error: Error? = nil @@ -100,6 +102,19 @@ struct CountdownEditView : View { }, message: { Text("Do you really want to delete?") }) + .confirmationDialog("", isPresented: $activityNameConfirmationShown, actions: { + Button("Rename") { + self._rename = true + self._save() + } + Button("New activity") { + self._rename = false + self._save() + } + }, message: { + Text("Do you wish to rename or create a new activity") + }) + .alert("", isPresented: $errorShown, actions: { }, message: { Text(error?.localizedDescription ?? "error") }) @@ -192,8 +207,24 @@ struct CountdownEditView : View { cd.order = max + 1 } if !self.nameString.isEmpty { - cd.activity = CoreDataRequests.getOrCreateActivity(name: self.nameString) - // TODO: would you like to rename or create a new activity? + + if let activity = cd.activity, let currentActivityName = activity.name, self.nameString != currentActivityName { + + switch self._rename { + case .none: + self.activityNameConfirmationShown = true + return + case .some(let rename): + if rename { + activity.name = self.nameString + } else { + cd.activity = CoreDataRequests.getOrCreateActivity(name: self.nameString) + } + } + } else { + cd.activity = CoreDataRequests.getOrCreateActivity(name: self.nameString) + } + } self._saveContext()