diff --git a/pass/Controllers/AdvancedSettingsTableViewController.swift b/pass/Controllers/AdvancedSettingsTableViewController.swift index 5523d88..0454c60 100644 --- a/pass/Controllers/AdvancedSettingsTableViewController.swift +++ b/pass/Controllers/AdvancedSettingsTableViewController.swift @@ -40,10 +40,10 @@ class AdvancedSettingsTableViewController: UITableViewController { SVProgressHUD.show(withStatus: "Resetting ...") DispatchQueue.main.async { do { - try PasswordStore.shared.reset() + let numberDiscarded = try PasswordStore.shared.reset() NotificationCenter.default.post(Notification(name: Notification.Name("passwordStoreChangeDiscarded"))) self.navigationController!.popViewController(animated: true) - SVProgressHUD.showSuccess(withStatus: "Done") + SVProgressHUD.showSuccess(withStatus: "Discarded \(numberDiscarded) commits") SVProgressHUD.dismiss(withDelay: 1) } catch { DispatchQueue.main.async { diff --git a/pass/Models/PasswordStore.swift b/pass/Models/PasswordStore.swift index e0a17b9..a24f7f3 100644 --- a/pass/Models/PasswordStore.swift +++ b/pass/Models/PasswordStore.swift @@ -605,7 +605,8 @@ class PasswordStore { storeRepository = nil } - func reset() throws { + // return the number of discarded commits + func reset() throws -> Int { // get the remote origin/master branch guard let remoteBranches = try storeRepository?.remoteBranches(), let index = remoteBranches.index(where: { $0.shortName == "master" }) @@ -618,9 +619,8 @@ class PasswordStore { // get a list of local commits if let localCommits = try storeRepository?.localCommitsRelative(toRemoteBranch: remoteMasterBranch), localCommits.count > 0 { - //print("PasswordStore.reset: \(localCommits.count)") - // get the first local commit - guard let firstLocalCommit = localCommits.first, + // get the oldest local commit + guard let firstLocalCommit = localCommits.last, firstLocalCommit.parents.count == 1, let newHead = firstLocalCommit.parents.first else { throw NSError(domain: "me.mssun.pass.error", code: 1, userInfo: [NSLocalizedDescriptionKey: "Cannot decide how to reset."]) @@ -629,9 +629,9 @@ class PasswordStore { self.updatePasswordEntityCoreData() NotificationCenter.default.post(Notification(name: Notification.Name("passwordUpdated"))) self.setAllSynced() + return localCommits.count } else { - //print("PasswordStore.reset: no new commit") - return; // no new commit + return 0 // no new commit } } }