From c131de05515f0f75f12c963427432061949b6437 Mon Sep 17 00:00:00 2001 From: Yishi Lin Date: Tue, 7 Mar 2017 01:43:23 +0800 Subject: [PATCH] Fix a bug about "discard all changes" - Show the number of (not pushed) commits discarded. --- .../AdvancedSettingsTableViewController.swift | 4 ++-- pass/Models/PasswordStore.swift | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) 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 } } }