From d4ef8e53d574c30ee38d15248125bd3c242b0036 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Thu, 5 Sep 2024 11:10:27 +0200 Subject: [PATCH] Remove return value of Alert/Confirm/Prompt This might seem controversial; in many cases the client code gets longer, because it needs an extra line for an explicit `return nil`. I still prefer this, because it makes it clearer which calls can return errors. --- pkg/gui/background.go | 2 +- .../controllers/basic_commits_controller.go | 3 +- pkg/gui/controllers/bisect_controller.go | 10 ++- pkg/gui/controllers/branches_controller.go | 32 +++++-- .../controllers/commits_files_controller.go | 12 ++- .../custom_patch_options_menu_action.go | 4 +- pkg/gui/controllers/diffing_menu_action.go | 4 +- pkg/gui/controllers/files_controller.go | 12 ++- pkg/gui/controllers/filtering_menu_action.go | 8 +- pkg/gui/controllers/git_flow_controller.go | 4 +- pkg/gui/controllers/helpers/bisect_helper.go | 4 +- .../controllers/helpers/branches_helper.go | 4 +- .../controllers/helpers/cherry_pick_helper.go | 4 +- pkg/gui/controllers/helpers/commits_helper.go | 8 +- .../controllers/helpers/credentials_helper.go | 4 +- pkg/gui/controllers/helpers/fixup_helper.go | 4 +- .../helpers/merge_and_rebase_helper.go | 12 ++- pkg/gui/controllers/helpers/refs_helper.go | 12 ++- pkg/gui/controllers/helpers/tags_helper.go | 8 +- pkg/gui/controllers/helpers/update_helper.go | 7 +- .../controllers/helpers/upstream_helper.go | 4 +- .../helpers/working_tree_helper.go | 8 +- .../controllers/helpers/worktree_helper.go | 26 ++++-- .../controllers/local_commits_controller.go | 84 ++++++++++++------- pkg/gui/controllers/quit_actions.go | 8 +- .../controllers/remote_branches_controller.go | 4 +- pkg/gui/controllers/remotes_controller.go | 20 +++-- pkg/gui/controllers/shell_command_action.go | 4 +- pkg/gui/controllers/staging_controller.go | 4 +- pkg/gui/controllers/stash_controller.go | 16 +++- pkg/gui/controllers/submodules_controller.go | 20 +++-- pkg/gui/controllers/sync_controller.go | 6 +- pkg/gui/controllers/tags_controller.go | 12 ++- pkg/gui/controllers/undo_controller.go | 17 ++-- pkg/gui/gui.go | 11 ++- pkg/gui/keybindings.go | 2 +- pkg/gui/popup/popup_handler.go | 14 ++-- .../custom_commands/handler_creator.go | 10 ++- pkg/gui/types/common.go | 6 +- 39 files changed, 303 insertions(+), 131 deletions(-) diff --git a/pkg/gui/background.go b/pkg/gui/background.go index 7c81def39..0272f0864 100644 --- a/pkg/gui/background.go +++ b/pkg/gui/background.go @@ -83,7 +83,7 @@ func (self *BackgroundRoutineMgr) startBackgroundFetch() { } err := self.backgroundFetch() if err != nil && strings.Contains(err.Error(), "exit status 128") && isNew { - _ = self.gui.c.Alert(self.gui.c.Tr.NoAutomaticGitFetchTitle, self.gui.c.Tr.NoAutomaticGitFetchBody) + self.gui.c.Alert(self.gui.c.Tr.NoAutomaticGitFetchTitle, self.gui.c.Tr.NoAutomaticGitFetchBody) } else { self.goEvery(time.Second*time.Duration(userConfig.Refresher.FetchInterval), self.gui.stopChan, func() error { err := self.backgroundFetch() diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go index 9d3595a61..ac0ffb394 100644 --- a/pkg/gui/controllers/basic_commits_controller.go +++ b/pkg/gui/controllers/basic_commits_controller.go @@ -280,7 +280,7 @@ func (self *BasicCommitsController) createResetMenu(commit *models.Commit) error } func (self *BasicCommitsController) checkout(commit *models.Commit) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.CheckoutCommit, Prompt: self.c.Tr.SureCheckoutThisCommit, HandleConfirm: func() error { @@ -288,6 +288,7 @@ func (self *BasicCommitsController) checkout(commit *models.Commit) error { return self.c.Helpers().Refs.CheckoutRef(commit.Hash, types.CheckoutRefOptions{}) }, }) + return nil } func (self *BasicCommitsController) copyRange(*models.Commit) error { diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go index 122e47c61..ee4b6aecf 100644 --- a/pkg/gui/controllers/bisect_controller.go +++ b/pkg/gui/controllers/bisect_controller.go @@ -201,10 +201,10 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, { Label: self.c.Tr.Bisect.ChooseTerms, OnPress: func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.Bisect.OldTermPrompt, HandleConfirm: func(oldTerm string) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.Bisect.NewTermPrompt, HandleConfirm: func(newTerm string) error { self.c.LogAction(self.c.Tr.Actions.StartBisect) @@ -215,8 +215,10 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, return self.c.Helpers().Bisect.PostBisectCommandRefresh() }, }) + return nil }, }) + return nil }, Key: 't', }, @@ -235,7 +237,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string return err } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Bisect.CompleteTitle, Prompt: fmt.Sprintf(prompt, strings.TrimSpace(formattedCommits)), HandleConfirm: func() error { @@ -247,6 +249,8 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string return self.c.Helpers().Bisect.PostBisectCommandRefresh() }, }) + + return nil } func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) error { diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index a01c49d52..5a7561f32 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -410,13 +410,15 @@ func (self *BranchesController) promptToCheckoutWorktree(worktree *models.Worktr "worktreeName": worktree.Name, }) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.SwitchToWorktree, Prompt: prompt, HandleConfirm: func() error { return self.c.Helpers().Worktree.Switch(worktree, context.LOCAL_BRANCHES_CONTEXT_KEY) }, }) + + return nil } func (self *BranchesController) handleCreatePullRequest(selectedBranch *models.Branch) error { @@ -460,7 +462,7 @@ func (self *BranchesController) forceCheckout() error { message := self.c.Tr.SureForceCheckout title := self.c.Tr.ForceCheckoutBranch - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: title, Prompt: message, HandleConfirm: func() error { @@ -471,10 +473,12 @@ func (self *BranchesController) forceCheckout() error { return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) }, }) + + return nil } func (self *BranchesController) checkoutByName() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.BranchName + ":", FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), HandleConfirm: func(response string) error { @@ -485,18 +489,22 @@ func (self *BranchesController) checkoutByName() error { } return self.c.Helpers().Refs.CheckoutRef(response, types.CheckoutRefOptions{ OnRefNotFound: func(ref string) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.BranchNotFoundTitle, Prompt: fmt.Sprintf("%s %s%s", self.c.Tr.BranchNotFoundPrompt, ref, "?"), HandleConfirm: func() error { return self.createNewBranchWithName(ref) }, }) + + return nil }, }) }, }, ) + + return nil } func (self *BranchesController) createNewBranchWithName(newBranchName string) error { @@ -586,7 +594,7 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error { }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: title, Prompt: message, HandleConfirm: func() error { @@ -596,6 +604,8 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error { return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) }, }) + + return nil } func (self *BranchesController) delete(branch *models.Branch) error { @@ -715,7 +725,7 @@ func (self *BranchesController) createResetMenu(selectedBranch *models.Branch) e func (self *BranchesController) rename(branch *models.Branch) error { promptForNewName := func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewBranchNamePrompt + " " + branch.Name + ":", InitialContent: branch.Name, HandleConfirm: func(newBranchName string) error { @@ -741,6 +751,8 @@ func (self *BranchesController) rename(branch *models.Branch) error { return nil }, }) + + return nil } // I could do an explicit check here for whether the branch is tracking a remote branch @@ -750,11 +762,13 @@ func (self *BranchesController) rename(branch *models.Branch) error { return promptForNewName() } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.RenameBranch, Prompt: self.c.Tr.RenameBranchWarning, HandleConfirm: promptForNewName, }) + + return nil } func (self *BranchesController) newBranch(selectedBranch *models.Branch) error { @@ -779,13 +793,15 @@ func (self *BranchesController) createPullRequestMenu(selectedBranch *models.Bra { LabelColumns: fromToLabelColumns(branch.Name, self.c.Tr.SelectBranch), OnPress: func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: branch.Name + " →", FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteBranchesSuggestionsFunc("/"), HandleConfirm: func(targetBranchName string) error { return self.createPullRequest(branch.Name, targetBranchName) }, }) + + return nil }, }, } diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go index 3c6ed6e40..a67530731 100644 --- a/pkg/gui/controllers/commits_files_controller.go +++ b/pkg/gui/controllers/commits_files_controller.go @@ -186,7 +186,7 @@ func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileN return err } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardFileChangesTitle, Prompt: self.c.Tr.DiscardFileChangesPrompt, HandleConfirm: func() error { @@ -224,6 +224,8 @@ func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileN }) }, }) + + return nil } func (self *CommitFilesController) open(node *filetree.CommitFileNode) error { @@ -307,7 +309,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm from, to, reverse := self.currentFromToReverseForPatchBuilding() if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardPatch, Prompt: self.c.Tr.DiscardPatchConfirm, HandleConfirm: func() error { @@ -315,6 +317,8 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm return toggle() }, }) + + return nil } return toggle() @@ -365,7 +369,7 @@ func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode from, to, reverse := self.currentFromToReverseForPatchBuilding() if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardPatch, Prompt: self.c.Tr.DiscardPatchConfirm, HandleConfirm: func() error { @@ -373,6 +377,8 @@ func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode return enterTheFile() }, }) + + return nil } return enterTheFile() diff --git a/pkg/gui/controllers/custom_patch_options_menu_action.go b/pkg/gui/controllers/custom_patch_options_menu_action.go index 894266400..d279f02e3 100644 --- a/pkg/gui/controllers/custom_patch_options_menu_action.go +++ b/pkg/gui/controllers/custom_patch_options_menu_action.go @@ -174,13 +174,15 @@ func (self *CustomPatchOptionsMenuAction) handleMovePatchIntoWorkingTree() error } if self.c.Helpers().WorkingTree.IsWorkingTreeDirty() { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.MustStashTitle, Prompt: self.c.Tr.MustStashWarning, HandleConfirm: func() error { return pull(true) }, }) + + return nil } else { return pull(false) } diff --git a/pkg/gui/controllers/diffing_menu_action.go b/pkg/gui/controllers/diffing_menu_action.go index be44e471b..3ff3846ab 100644 --- a/pkg/gui/controllers/diffing_menu_action.go +++ b/pkg/gui/controllers/diffing_menu_action.go @@ -33,7 +33,7 @@ func (self *DiffingMenuAction) Call() error { { Label: self.c.Tr.EnterRefToDiff, OnPress: func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.EnterRefName, FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), HandleConfirm: func(response string) error { @@ -41,6 +41,8 @@ func (self *DiffingMenuAction) Call() error { return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) }, }) + + return nil }, }, }...) diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go index df3b16f92..4169c9116 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -601,13 +601,15 @@ func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, t func (self *FilesController) ignoreOrExcludeFile(node *filetree.FileNode, trText string, trPrompt string, trAction string, f func(string) error) error { if node.GetIsTracked() { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: trText, Prompt: trPrompt, HandleConfirm: func() error { return self.ignoreOrExcludeTracked(node, trAction, f) }, }) + + return nil } return self.ignoreOrExcludeUntracked(node, trAction, f) } @@ -660,7 +662,7 @@ func (self *FilesController) refresh() error { } func (self *FilesController) handleAmendCommitPress() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AmendLastCommitTitle, Prompt: self.c.Tr.SureToAmend, HandleConfirm: func() error { @@ -673,6 +675,8 @@ func (self *FilesController) handleAmendCommitPress() error { }) }, }) + + return nil } func (self *FilesController) handleStatusFilterPressed() error { @@ -959,7 +963,7 @@ func (self *FilesController) toggleTreeView() error { } func (self *FilesController) handleStashSave(stashFunc func(message string) error, action string) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.StashChanges, HandleConfirm: func(stashComment string) error { self.c.LogAction(action) @@ -970,6 +974,8 @@ func (self *FilesController) handleStashSave(stashFunc func(message string) erro return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) }, }) + + return nil } func (self *FilesController) onClickMain(opts gocui.ViewMouseBindingOpts) error { diff --git a/pkg/gui/controllers/filtering_menu_action.go b/pkg/gui/controllers/filtering_menu_action.go index 04f973d4b..0f0f9ceec 100644 --- a/pkg/gui/controllers/filtering_menu_action.go +++ b/pkg/gui/controllers/filtering_menu_action.go @@ -61,13 +61,15 @@ func (self *FilteringMenuAction) Call() error { menuItems = append(menuItems, &types.MenuItem{ Label: self.c.Tr.FilterPathOption, OnPress: func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ FindSuggestionsFunc: self.c.Helpers().Suggestions.GetFilePathSuggestionsFunc(), Title: self.c.Tr.EnterFileName, HandleConfirm: func(response string) error { return self.setFilteringPath(strings.TrimSpace(response)) }, }) + + return nil }, Tooltip: tooltip, }) @@ -75,13 +77,15 @@ func (self *FilteringMenuAction) Call() error { menuItems = append(menuItems, &types.MenuItem{ Label: self.c.Tr.FilterAuthorOption, OnPress: func() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), Title: self.c.Tr.EnterAuthor, HandleConfirm: func(response string) error { return self.setFilteringAuthor(strings.TrimSpace(response)) }, }) + + return nil }, Tooltip: tooltip, }) diff --git a/pkg/gui/controllers/git_flow_controller.go b/pkg/gui/controllers/git_flow_controller.go index 7c3e45603..bdc0cad32 100644 --- a/pkg/gui/controllers/git_flow_controller.go +++ b/pkg/gui/controllers/git_flow_controller.go @@ -54,7 +54,7 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er return func() error { title := utils.ResolvePlaceholderString(self.c.Tr.NewGitFlowBranchPrompt, map[string]string{"branchType": branchType}) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: title, HandleConfirm: func(name string) error { self.c.LogAction(self.c.Tr.Actions.GitFlowStart) @@ -63,6 +63,8 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er ) }, }) + + return nil } } diff --git a/pkg/gui/controllers/helpers/bisect_helper.go b/pkg/gui/controllers/helpers/bisect_helper.go index aa8bb5023..ccb77bfa3 100644 --- a/pkg/gui/controllers/helpers/bisect_helper.go +++ b/pkg/gui/controllers/helpers/bisect_helper.go @@ -13,7 +13,7 @@ func NewBisectHelper(c *HelperCommon) *BisectHelper { } func (self *BisectHelper) Reset() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Bisect.ResetTitle, Prompt: self.c.Tr.Bisect.ResetPrompt, HandleConfirm: func() error { @@ -25,6 +25,8 @@ func (self *BisectHelper) Reset() error { return self.PostBisectCommandRefresh() }, }) + + return nil } func (self *BisectHelper) PostBisectCommandRefresh() error { diff --git a/pkg/gui/controllers/helpers/branches_helper.go b/pkg/gui/controllers/helpers/branches_helper.go index c07d1d72b..635b94f20 100644 --- a/pkg/gui/controllers/helpers/branches_helper.go +++ b/pkg/gui/controllers/helpers/branches_helper.go @@ -32,7 +32,7 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteName string, branchName st "upstream": remoteName, }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: title, Prompt: prompt, HandleConfirm: func() error { @@ -45,6 +45,8 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteName string, branchName st }) }, }) + + return nil } func ShortBranchName(fullBranchName string) string { diff --git a/pkg/gui/controllers/helpers/cherry_pick_helper.go b/pkg/gui/controllers/helpers/cherry_pick_helper.go index 6742bd79a..93637073e 100644 --- a/pkg/gui/controllers/helpers/cherry_pick_helper.go +++ b/pkg/gui/controllers/helpers/cherry_pick_helper.go @@ -63,7 +63,7 @@ func (self *CherryPickHelper) CopyRange(commitsList []*models.Commit, context ty // HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied. // Only to be called from the branch commits controller func (self *CherryPickHelper) Paste() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.CherryPick, Prompt: self.c.Tr.SureCherryPick, HandleConfirm: func() error { @@ -108,6 +108,8 @@ func (self *CherryPickHelper) Paste() error { }) }, }) + + return nil } func (self *CherryPickHelper) CanPaste() bool { diff --git a/pkg/gui/controllers/helpers/commits_helper.go b/pkg/gui/controllers/helpers/commits_helper.go index 472179b11..e50633034 100644 --- a/pkg/gui/controllers/helpers/commits_helper.go +++ b/pkg/gui/controllers/helpers/commits_helper.go @@ -231,7 +231,7 @@ func (self *CommitsHelper) OpenCommitMenu(suggestionFunc func(string) []*types.S } func (self *CommitsHelper) addCoAuthor(suggestionFunc func(string) []*types.Suggestion) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.AddCoAuthorPromptTitle, FindSuggestionsFunc: suggestionFunc, HandleConfirm: func(value string) error { @@ -241,6 +241,8 @@ func (self *CommitsHelper) addCoAuthor(suggestionFunc func(string) []*types.Sugg return nil }, }) + + return nil } func (self *CommitsHelper) pasteCommitMessageFromClipboard() error { @@ -258,7 +260,7 @@ func (self *CommitsHelper) pasteCommitMessageFromClipboard() error { } // Confirm before overwriting the commit message - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.PasteCommitMessageFromClipboard, Prompt: self.c.Tr.SurePasteCommitMessage, HandleConfirm: func() error { @@ -266,4 +268,6 @@ func (self *CommitsHelper) pasteCommitMessageFromClipboard() error { return nil }, }) + + return nil } diff --git a/pkg/gui/controllers/helpers/credentials_helper.go b/pkg/gui/controllers/helpers/credentials_helper.go index 6050c9be8..2e6dcc25e 100644 --- a/pkg/gui/controllers/helpers/credentials_helper.go +++ b/pkg/gui/controllers/helpers/credentials_helper.go @@ -27,7 +27,7 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr self.c.OnUIThread(func() error { title, mask := self.getTitleAndMask(passOrUname) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: title, Mask: mask, HandleConfirm: func(input string) error { @@ -41,6 +41,8 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr return nil }, }) + + return nil }) return ch diff --git a/pkg/gui/controllers/helpers/fixup_helper.go b/pkg/gui/controllers/helpers/fixup_helper.go index 64ec0877a..4d4709cf8 100644 --- a/pkg/gui/controllers/helpers/fixup_helper.go +++ b/pkg/gui/controllers/helpers/fixup_helper.go @@ -142,13 +142,15 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error { } if warnAboutAddedLines { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.FindBaseCommitForFixup, Prompt: self.c.Tr.HunksWithOnlyAddedLinesWarning, HandleConfirm: func() error { return doIt() }, }) + + return nil } return doIt() diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index 177639421..5b3b91772 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -221,13 +221,15 @@ func (self *MergeAndRebaseHelper) PromptForConflictHandling() error { func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error { // prompt user to confirm that they want to abort, then do it mode := self.workingTreeStateNoun() - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: fmt.Sprintf(self.c.Tr.AbortTitle, mode), Prompt: fmt.Sprintf(self.c.Tr.AbortPrompt, mode), HandleConfirm: func() error { return self.genericMergeCommand(REBASE_OPTION_ABORT) }, }) + + return nil } func (self *MergeAndRebaseHelper) workingTreeStateNoun() string { @@ -244,7 +246,7 @@ func (self *MergeAndRebaseHelper) workingTreeStateNoun() string { // PromptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Continue, Prompt: self.c.Tr.ConflictsResolved, HandleConfirm: func() error { @@ -264,7 +266,7 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { root := self.c.Contexts().Files.FileTreeViewModel.GetRoot() if root.GetHasUnstagedChanges() { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Continue, Prompt: self.c.Tr.UnstagedFilesAfterConflictsResolved, HandleConfirm: func() error { @@ -276,11 +278,15 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { return self.genericMergeCommand(REBASE_OPTION_CONTINUE) }, }) + + return nil } return self.genericMergeCommand(REBASE_OPTION_CONTINUE) }, }) + + return nil } func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index 932f31d90..8332174dc 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -79,7 +79,7 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions self.c.OnUIThread(func() error { // (Before showing the prompt, render again to remove the inline status) self.c.Contexts().Branches.HandleRender() - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AutoStashTitle, Prompt: self.c.Tr.AutoStashPrompt, HandleConfirm: func() error { @@ -97,6 +97,8 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions }) }, }) + + return nil }) return nil } @@ -292,7 +294,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) } - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: message, InitialContent: suggestedBranchName, HandleConfirm: func(response string) error { @@ -305,7 +307,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest if err := newBranchFunc(newBranchName, from); err != nil { if IsSwitchBranchUncommitedChangesError(err) { // offer to autostash changes - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AutoStashTitle, Prompt: self.c.Tr.AutoStashPrompt, HandleConfirm: func() error { @@ -325,6 +327,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest return refreshError }, }) + + return nil } return err @@ -333,6 +337,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest return refresh() }, }) + + return nil } // SanitizedBranchName will remove all spaces in favor of a dash "-" to meet diff --git a/pkg/gui/controllers/helpers/tags_helper.go b/pkg/gui/controllers/helpers/tags_helper.go index 8725eb054..36d960210 100644 --- a/pkg/gui/controllers/helpers/tags_helper.go +++ b/pkg/gui/controllers/helpers/tags_helper.go @@ -52,16 +52,18 @@ func (self *TagsHelper) OpenCreateTagPrompt(ref string, onCreate func()) error { "confirmKey": self.c.UserConfig().Keybinding.Universal.Confirm, }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.ForceTag, Prompt: prompt, HandleConfirm: func() error { return doCreateTag(tagName, description, true) }, }) - } else { - return doCreateTag(tagName, description, false) + + return nil } + + return doCreateTag(tagName, description, false) } return self.commitsHelper.OpenCommitMessagePanel( diff --git a/pkg/gui/controllers/helpers/update_helper.go b/pkg/gui/controllers/helpers/update_helper.go index e01bae3c6..4491b4330 100644 --- a/pkg/gui/controllers/helpers/update_helper.go +++ b/pkg/gui/controllers/helpers/update_helper.go @@ -75,7 +75,8 @@ func (self *UpdateHelper) onUpdateFinish(err error) error { ) return errors.New(errMessage) } - return self.c.Alert(self.c.Tr.UpdateCompletedTitle, self.c.Tr.UpdateCompleted) + self.c.Alert(self.c.Tr.UpdateCompletedTitle, self.c.Tr.UpdateCompleted) + return nil }) return nil @@ -88,7 +89,7 @@ func (self *UpdateHelper) showUpdatePrompt(newVersion string) error { }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.UpdateAvailableTitle, Prompt: message, HandleConfirm: func() error { @@ -96,4 +97,6 @@ func (self *UpdateHelper) showUpdatePrompt(newVersion string) error { return nil }, }) + + return nil } diff --git a/pkg/gui/controllers/helpers/upstream_helper.go b/pkg/gui/controllers/helpers/upstream_helper.go index ea3187ed8..c5d6ebe5b 100644 --- a/pkg/gui/controllers/helpers/upstream_helper.go +++ b/pkg/gui/controllers/helpers/upstream_helper.go @@ -47,12 +47,14 @@ func (self *UpstreamHelper) ParseUpstream(upstream string) (string, string, erro } func (self *UpstreamHelper) promptForUpstream(initialContent string, onConfirm func(string) error) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.EnterUpstream, InitialContent: initialContent, FindSuggestionsFunc: self.getRemoteBranchesSuggestionsFunc(" "), HandleConfirm: onConfirm, }) + + return nil } func (self *UpstreamHelper) PromptForUpstreamWithInitialContent(currentBranch *models.Branch, onConfirm func(string) error) error { diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go index 96baaeebe..ad0acc4c9 100644 --- a/pkg/gui/controllers/helpers/working_tree_helper.go +++ b/pkg/gui/controllers/helpers/working_tree_helper.go @@ -72,7 +72,7 @@ func (self *WorkingTreeHelper) FileForSubmodule(submodule *models.SubmoduleConfi } func (self *WorkingTreeHelper) OpenMergeTool() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.MergeToolTitle, Prompt: self.c.Tr.MergeToolPrompt, HandleConfirm: func() error { @@ -82,6 +82,8 @@ func (self *WorkingTreeHelper) OpenMergeTool() error { ) }, }) + + return nil } func (self *WorkingTreeHelper) HandleCommitPressWithMessage(initialMessage string) error { @@ -185,7 +187,7 @@ func (self *WorkingTreeHelper) WithEnsureCommitableFiles(handler func() error) e } func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.NoFilesStagedTitle, Prompt: self.c.Tr.NoFilesStagedPrompt, HandleConfirm: func() error { @@ -200,6 +202,8 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro return retry() }, }) + + return nil } // for when you need to refetch files before continuing an action. Runs synchronously. diff --git a/pkg/gui/controllers/helpers/worktree_helper.go b/pkg/gui/controllers/helpers/worktree_helper.go index 7c763e0fb..6f28692d3 100644 --- a/pkg/gui/controllers/helpers/worktree_helper.go +++ b/pkg/gui/controllers/helpers/worktree_helper.go @@ -63,8 +63,8 @@ func (self *WorktreeHelper) NewWorktree() error { branch := self.refsHelper.GetCheckedOutRef() currentBranchName := branch.RefName() - f := func(detached bool) error { - return self.c.Prompt(types.PromptOpts{ + f := func(detached bool) { + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewWorktreeBase, InitialContent: currentBranchName, FindSuggestionsFunc: self.suggestionsHelper.GetRefsSuggestionsFunc(), @@ -84,13 +84,15 @@ func (self *WorktreeHelper) NewWorktree() error { { LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFrom, placeholders)}, OnPress: func() error { - return f(false) + f(false) + return nil }, }, { LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFromDetached, placeholders)}, OnPress: func() error { - return f(true) + f(true) + return nil }, }, }, @@ -114,7 +116,7 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo }) } - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewWorktreePath, HandleConfirm: func(path string) error { opts.Path = path @@ -126,7 +128,7 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo if canCheckoutBase { title := utils.ResolvePlaceholderString(self.c.Tr.NewBranchNameLeaveBlank, map[string]string{"default": base}) // prompt for the new branch name where a blank means we just check out the branch - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: title, HandleConfirm: func(branchName string) error { opts.Branch = branchName @@ -134,9 +136,11 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo return f() }, }) + + return nil } else { // prompt for the new branch name where a blank means we just check out the branch - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewBranchName, HandleConfirm: func(branchName string) error { if branchName == "" { @@ -148,9 +152,13 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo return f() }, }) + + return nil } }, }) + + return nil } func (self *WorktreeHelper) Switch(worktree *models.Worktree, contextKey types.ContextKey) error { @@ -178,7 +186,7 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: title, Prompt: message, HandleConfirm: func() error { @@ -199,6 +207,8 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error }) }, }) + + return nil } func (self *WorktreeHelper) Detach(worktree *models.Worktree) error { diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 486412ae6..50891c1e4 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -325,7 +325,7 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit, return self.updateTodos(todo.Squash, selectedCommits) } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Squash, Prompt: self.c.Tr.SureSquashThisCommit, HandleConfirm: func() error { @@ -335,6 +335,8 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit, }) }, }) + + return nil } func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, startIdx int, endIdx int) error { @@ -342,7 +344,7 @@ func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, star return self.updateTodos(todo.Fixup, selectedCommits) } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Fixup, Prompt: self.c.Tr.SureFixupThisCommit, HandleConfirm: func() error { @@ -352,6 +354,8 @@ func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, star }) }, }) + + return nil } func (self *LocalCommitsController) reword(commit *models.Commit) error { @@ -442,13 +446,15 @@ func (self *LocalCommitsController) doRewordEditor() error { func (self *LocalCommitsController) rewordEditor(commit *models.Commit) error { if self.c.UserConfig().Gui.SkipRewordInEditorWarning { return self.doRewordEditor() - } else { - return self.c.Confirm(types.ConfirmOpts{ - Title: self.c.Tr.RewordInEditorTitle, - Prompt: self.c.Tr.RewordInEditorPrompt, - HandleConfirm: self.doRewordEditor, - }) } + + self.c.Confirm(types.ConfirmOpts{ + Title: self.c.Tr.RewordInEditorTitle, + Prompt: self.c.Tr.RewordInEditorPrompt, + HandleConfirm: self.doRewordEditor, + }) + + return nil } func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, startIdx int, endIdx int) error { @@ -460,7 +466,7 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start nonUpdateRefTodos := groupedTodos[false] if len(updateRefTodos) > 0 { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DropCommitTitle, Prompt: self.c.Tr.DropUpdateRefPrompt, HandleConfirm: func() error { @@ -481,12 +487,14 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start return self.updateTodos(todo.Drop, nonUpdateRefTodos) }, }) + + return nil } return self.updateTodos(todo.Drop, selectedCommits) } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DropCommitTitle, Prompt: self.c.Tr.DropCommitPrompt, HandleConfirm: func() error { @@ -496,6 +504,8 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start }) }, }) + + return nil } func (self *LocalCommitsController) edit(selectedCommits []*models.Commit) error { @@ -680,7 +690,7 @@ func (self *LocalCommitsController) moveUp(selectedCommits []*models.Commit, sta func (self *LocalCommitsController) amendTo(commit *models.Commit) error { if self.isSelectedHeadCommit() { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AmendCommitTitle, Prompt: self.c.Tr.AmendCommitPrompt, HandleConfirm: func() error { @@ -692,9 +702,11 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error { }) }, }) + + return nil } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AmendCommitTitle, Prompt: self.c.Tr.AmendCommitPrompt, HandleConfirm: func() error { @@ -707,6 +719,8 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error { }) }, }) + + return nil } func (self *LocalCommitsController) canAmendRange(commits []*models.Commit, start, end int) *types.DisabledReason { @@ -761,7 +775,7 @@ func (self *LocalCommitsController) resetAuthor(start, end int) error { } func (self *LocalCommitsController) setAuthor(start, end int) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.SetAuthorPromptTitle, FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), HandleConfirm: func(value string) error { @@ -775,10 +789,12 @@ func (self *LocalCommitsController) setAuthor(start, end int) error { }) }, }) + + return nil } func (self *LocalCommitsController) addCoAuthor(start, end int) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.AddCoAuthorPromptTitle, FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), HandleConfirm: func(value string) error { @@ -791,30 +807,34 @@ func (self *LocalCommitsController) addCoAuthor(start, end int) error { }) }, }) + + return nil } func (self *LocalCommitsController) revert(commit *models.Commit) error { if commit.IsMerge() { return self.createRevertMergeCommitMenu(commit) - } else { - return self.c.Confirm(types.ConfirmOpts{ - Title: self.c.Tr.Actions.RevertCommit, - Prompt: utils.ResolvePlaceholderString( - self.c.Tr.ConfirmRevertCommit, - map[string]string{ - "selectedCommit": commit.ShortHash(), - }), - HandleConfirm: func() error { - self.c.LogAction(self.c.Tr.Actions.RevertCommit) - return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error { - if err := self.c.Git().Commit.Revert(commit.Hash); err != nil { - return err - } - return self.afterRevertCommit() - }) - }, - }) } + + self.c.Confirm(types.ConfirmOpts{ + Title: self.c.Tr.Actions.RevertCommit, + Prompt: utils.ResolvePlaceholderString( + self.c.Tr.ConfirmRevertCommit, + map[string]string{ + "selectedCommit": commit.ShortHash(), + }), + HandleConfirm: func() error { + self.c.LogAction(self.c.Tr.Actions.RevertCommit) + return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error { + if err := self.c.Git().Commit.Revert(commit.Hash); err != nil { + return err + } + return self.afterRevertCommit() + }) + }, + }) + + return nil } func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.Commit) error { diff --git a/pkg/gui/controllers/quit_actions.go b/pkg/gui/controllers/quit_actions.go index a7fc75ca8..c85ab069c 100644 --- a/pkg/gui/controllers/quit_actions.go +++ b/pkg/gui/controllers/quit_actions.go @@ -26,26 +26,30 @@ func (self *QuitActions) quitAux() error { } if self.c.UserConfig().ConfirmOnQuit { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: "", Prompt: self.c.Tr.ConfirmQuit, HandleConfirm: func() error { return gocui.ErrQuit }, }) + + return nil } return gocui.ErrQuit } func (self *QuitActions) confirmQuitDuringUpdate() error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.ConfirmQuitDuringUpdateTitle, Prompt: self.c.Tr.ConfirmQuitDuringUpdate, HandleConfirm: func() error { return gocui.ErrQuit }, }) + + return nil } func (self *QuitActions) Escape() error { diff --git a/pkg/gui/controllers/remote_branches_controller.go b/pkg/gui/controllers/remote_branches_controller.go index 3d64aee28..772baf4fa 100644 --- a/pkg/gui/controllers/remote_branches_controller.go +++ b/pkg/gui/controllers/remote_branches_controller.go @@ -172,7 +172,7 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.SetUpstreamTitle, Prompt: message, HandleConfirm: func() error { @@ -184,6 +184,8 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) }, }) + + return nil } func (self *RemoteBranchesController) newLocalBranch(selectedBranch *models.RemoteBranch) error { diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go index deef8a312..dbae0e0b1 100644 --- a/pkg/gui/controllers/remotes_controller.go +++ b/pkg/gui/controllers/remotes_controller.go @@ -136,10 +136,10 @@ func (self *RemotesController) enter(remote *models.Remote) error { } func (self *RemotesController) add() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewRemoteName, HandleConfirm: func(remoteName string) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewRemoteUrl, HandleConfirm: func(remoteUrl string) error { self.c.LogAction(self.c.Tr.Actions.AddRemote) @@ -169,12 +169,16 @@ func (self *RemotesController) add() error { return self.fetch(self.c.Contexts().Remotes.GetSelected()) }, }) + + return nil }, }) + + return nil } func (self *RemotesController) remove(remote *models.Remote) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.RemoveRemote, Prompt: self.c.Tr.RemoveRemotePrompt + " '" + remote.Name + "'?", HandleConfirm: func() error { @@ -186,6 +190,8 @@ func (self *RemotesController) remove(remote *models.Remote) error { return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) }, }) + + return nil } func (self *RemotesController) edit(remote *models.Remote) error { @@ -196,7 +202,7 @@ func (self *RemotesController) edit(remote *models.Remote) error { }, ) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: editNameMessage, InitialContent: remote.Name, HandleConfirm: func(updatedRemoteName string) error { @@ -220,7 +226,7 @@ func (self *RemotesController) edit(remote *models.Remote) error { url = urls[0] } - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: editUrlMessage, InitialContent: url, HandleConfirm: func(updatedRemoteUrl string) error { @@ -231,8 +237,12 @@ func (self *RemotesController) edit(remote *models.Remote) error { return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) }, }) + + return nil }, }) + + return nil } func (self *RemotesController) fetch(remote *models.Remote) error { diff --git a/pkg/gui/controllers/shell_command_action.go b/pkg/gui/controllers/shell_command_action.go index 943006ff9..01b6d1e36 100644 --- a/pkg/gui/controllers/shell_command_action.go +++ b/pkg/gui/controllers/shell_command_action.go @@ -15,7 +15,7 @@ type ShellCommandAction struct { } func (self *ShellCommandAction) Call() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.ShellCommand, FindSuggestionsFunc: self.GetShellCommandsHistorySuggestionsFunc(), AllowEditSuggestion: true, @@ -54,6 +54,8 @@ func (self *ShellCommandAction) Call() error { return nil }, }) + + return nil } func (self *ShellCommandAction) GetShellCommandsHistorySuggestionsFunc() func(string) []*types.Suggestion { diff --git a/pkg/gui/controllers/staging_controller.go b/pkg/gui/controllers/staging_controller.go index eb6695d1d..ca3cf20f7 100644 --- a/pkg/gui/controllers/staging_controller.go +++ b/pkg/gui/controllers/staging_controller.go @@ -191,11 +191,13 @@ func (self *StagingController) DiscardSelection() error { reset := func() error { return self.applySelectionAndRefresh(true) } if !self.staged && !self.c.UserConfig().Gui.SkipDiscardChangeWarning { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardChangeTitle, Prompt: self.c.Tr.DiscardChangePrompt, HandleConfirm: reset, }) + + return nil } return reset() diff --git a/pkg/gui/controllers/stash_controller.go b/pkg/gui/controllers/stash_controller.go index 1bf86ff6c..4d1cd7233 100644 --- a/pkg/gui/controllers/stash_controller.go +++ b/pkg/gui/controllers/stash_controller.go @@ -118,13 +118,15 @@ func (self *StashController) handleStashApply(stashEntry *models.StashEntry) err return apply() } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.StashApply, Prompt: self.c.Tr.SureApplyStashEntry, HandleConfirm: func() error { return apply() }, }) + + return nil } func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error { @@ -142,17 +144,19 @@ func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error return pop() } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.StashPop, Prompt: self.c.Tr.SurePopStashEntry, HandleConfirm: func() error { return pop() }, }) + + return nil } func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.StashDrop, Prompt: self.c.Tr.SureDropStashEntry, HandleConfirm: func() error { @@ -165,6 +169,8 @@ func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) erro return nil }, }) + + return nil } func (self *StashController) postStashRefresh() error { @@ -183,7 +189,7 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr }, ) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: message, InitialContent: stashEntry.Name, HandleConfirm: func(response string) error { @@ -198,4 +204,6 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr return nil }, }) + + return nil } diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go index d9635b41b..69c87b94c 100644 --- a/pkg/gui/controllers/submodules_controller.go +++ b/pkg/gui/controllers/submodules_controller.go @@ -146,16 +146,16 @@ func (self *SubmodulesController) enter(submodule *models.SubmoduleConfig) error } func (self *SubmodulesController) add() error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewSubmoduleUrl, HandleConfirm: func(submoduleUrl string) error { nameSuggestion := filepath.Base(strings.TrimSuffix(submoduleUrl, filepath.Ext(submoduleUrl))) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewSubmoduleName, InitialContent: nameSuggestion, HandleConfirm: func(submoduleName string) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: self.c.Tr.NewSubmodulePath, InitialContent: submoduleName, HandleConfirm: func(submodulePath string) error { @@ -170,14 +170,20 @@ func (self *SubmodulesController) add() error { }) }, }) + + return nil }, }) + + return nil }, }) + + return nil } func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) error { - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: fmt.Sprintf(self.c.Tr.UpdateSubmoduleUrl, submodule.FullName()), InitialContent: submodule.Url, HandleConfirm: func(newUrl string) error { @@ -192,6 +198,8 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err }) }, }) + + return nil } func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error { @@ -270,7 +278,7 @@ func (self *SubmodulesController) update(submodule *models.SubmoduleConfig) erro } func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.RemoveSubmodule, Prompt: fmt.Sprintf(self.c.Tr.RemoveSubmodulePrompt, submodule.FullName()), HandleConfirm: func() error { @@ -282,6 +290,8 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}}) }, }) + + return nil } func (self *SubmodulesController) easterEgg() error { diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go index b97289438..a6140d9d0 100644 --- a/pkg/gui/controllers/sync_controller.go +++ b/pkg/gui/controllers/sync_controller.go @@ -214,7 +214,7 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) if forcePushDisabled { return errors.New(self.c.Tr.UpdatesRejectedAndForcePushDisabled) } - _ = self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.ForcePush, Prompt: self.forcePushPrompt(), HandleConfirm: func() error { @@ -238,7 +238,7 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt return errors.New(self.c.Tr.ForcePushDisabled) } - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.ForcePush, Prompt: self.forcePushPrompt(), HandleConfirm: func() error { @@ -246,6 +246,8 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt return self.pushAux(currentBranch, opts) }, }) + + return nil } func (self *SyncController) forcePushPrompt() string { diff --git a/pkg/gui/controllers/tags_controller.go b/pkg/gui/controllers/tags_controller.go index c2fe10682..372fa8e0a 100644 --- a/pkg/gui/controllers/tags_controller.go +++ b/pkg/gui/controllers/tags_controller.go @@ -136,7 +136,7 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error { }, ) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: title, InitialContent: "origin", FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(), @@ -155,7 +155,7 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error { }, ) - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: confirmTitle, Prompt: confirmPrompt, HandleConfirm: func() error { @@ -169,8 +169,12 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error { }) }, }) + + return nil }, }) + + return nil } func (self *TagsController) delete(tag *models.Tag) error { @@ -213,7 +217,7 @@ func (self *TagsController) push(tag *models.Tag) error { }, ) - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: title, InitialContent: "origin", FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(), @@ -232,6 +236,8 @@ func (self *TagsController) push(tag *models.Tag) error { }) }, }) + + return nil } func (self *TagsController) createResetMenu(tag *models.Tag) error { diff --git a/pkg/gui/controllers/undo_controller.go b/pkg/gui/controllers/undo_controller.go index 8bd44a86d..d6f8ab256 100644 --- a/pkg/gui/controllers/undo_controller.go +++ b/pkg/gui/controllers/undo_controller.go @@ -89,7 +89,7 @@ func (self *UndoController) reflogUndo() error { switch action.kind { case COMMIT, REBASE: - return true, self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Actions.Undo, Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.from), HandleConfirm: func() error { @@ -100,8 +100,10 @@ func (self *UndoController) reflogUndo() error { }) }, }) + return true, nil + case CHECKOUT: - return true, self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Actions.Undo, Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.from), HandleConfirm: func() error { @@ -112,6 +114,7 @@ func (self *UndoController) reflogUndo() error { }) }, }) + return true, nil case CURRENT_REBASE: // do nothing @@ -140,7 +143,7 @@ func (self *UndoController) reflogRedo() error { switch action.kind { case COMMIT, REBASE: - return true, self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Actions.Redo, Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.to), HandleConfirm: func() error { @@ -151,9 +154,10 @@ func (self *UndoController) reflogRedo() error { }) }, }) + return true, nil case CHECKOUT: - return true, self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.Actions.Redo, Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.to), HandleConfirm: func() error { @@ -164,6 +168,8 @@ func (self *UndoController) reflogRedo() error { }) }, }) + return true, nil + case CURRENT_REBASE: // do nothing } @@ -242,7 +248,7 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha dirtyWorkingTree := self.c.Helpers().WorkingTree.IsWorkingTreeDirty() if dirtyWorkingTree { // offer to autostash changes - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.AutoStashTitle, Prompt: self.c.Tr.AutoStashPrompt, HandleConfirm: func() error { @@ -262,6 +268,7 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha }) }, }) + return nil } return self.c.WithWaitingStatus(options.WaitingStatus, func(gocui.Task) error { diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 643cd00ee..4d5f625d9 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -505,10 +505,12 @@ func (gui *Gui) checkForChangedConfigsThatDontAutoReload(oldConfig *config.UserC "configs": strings.Join(changedConfigs, "\n"), }, ) - return gui.c.Confirm(types.ConfirmOpts{ + gui.c.Confirm(types.ConfirmOpts{ Title: gui.c.Tr.NonReloadableConfigWarningTitle, Prompt: message, }) + + return nil } // resetState reuses the repo state from our repo state map, if the repo was @@ -1001,12 +1003,14 @@ func (gui *Gui) showIntroPopupMessage() { return err } - return gui.c.Confirm(types.ConfirmOpts{ + gui.c.Confirm(types.ConfirmOpts{ Title: "", Prompt: gui.c.Tr.IntroPopupMessage, HandleConfirm: onConfirm, HandleClose: onConfirm, }) + + return nil }) } @@ -1066,12 +1070,13 @@ func (gui *Gui) showBreakingChangesMessage() { return nil } - return gui.c.Confirm(types.ConfirmOpts{ + gui.c.Confirm(types.ConfirmOpts{ Title: gui.Tr.BreakingChangesTitle, Prompt: gui.Tr.BreakingChangesMessage + "\n\n" + message, HandleConfirm: onConfirm, HandleClose: onConfirm, }) + return nil }) } } diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index bdfed1df7..8439b9b7a 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -33,7 +33,7 @@ func (gui *Gui) outsideFilterMode(f func() error) func() error { func (gui *Gui) validateNotInFilterMode() bool { if gui.State.Modes.Filtering.Active() { - _ = gui.c.Confirm(types.ConfirmOpts{ + gui.c.Confirm(types.ConfirmOpts{ Title: gui.c.Tr.MustExitFilterModeTitle, Prompt: gui.c.Tr.MustExitFilterModePrompt, HandleConfirm: gui.helpers.Mode.ExitFilterMode, diff --git a/pkg/gui/popup/popup_handler.go b/pkg/gui/popup/popup_handler.go index c5d9f9e1a..8ea50de2b 100644 --- a/pkg/gui/popup/popup_handler.go +++ b/pkg/gui/popup/popup_handler.go @@ -86,24 +86,25 @@ func (self *PopupHandler) ErrorHandler(err error) error { return err } - return self.Alert(self.Tr.Error, coloredMessage) + self.Alert(self.Tr.Error, coloredMessage) + + return nil } -func (self *PopupHandler) Alert(title string, message string) error { - return self.Confirm(types.ConfirmOpts{Title: title, Prompt: message}) +func (self *PopupHandler) Alert(title string, message string) { + self.Confirm(types.ConfirmOpts{Title: title, Prompt: message}) } -func (self *PopupHandler) Confirm(opts types.ConfirmOpts) error { +func (self *PopupHandler) Confirm(opts types.ConfirmOpts) { self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{ Title: opts.Title, Prompt: opts.Prompt, HandleConfirm: opts.HandleConfirm, HandleClose: opts.HandleClose, }) - return nil } -func (self *PopupHandler) Prompt(opts types.PromptOpts) error { +func (self *PopupHandler) Prompt(opts types.PromptOpts) { self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{ Title: opts.Title, Prompt: opts.InitialContent, @@ -115,7 +116,6 @@ func (self *PopupHandler) Prompt(opts types.PromptOpts) error { AllowEditSuggestion: opts.AllowEditSuggestion, Mask: opts.Mask, }) - return nil } // returns the content that has currently been typed into the prompt. Useful for diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 2c9e090f9..95de40a2e 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -118,7 +118,7 @@ func (self *HandlerCreator) inputPrompt(prompt *config.CustomCommandPrompt, wrap return err } - return self.c.Prompt(types.PromptOpts{ + self.c.Prompt(types.PromptOpts{ Title: prompt.Title, InitialContent: prompt.InitialValue, FindSuggestionsFunc: findSuggestionsFn, @@ -126,6 +126,8 @@ func (self *HandlerCreator) inputPrompt(prompt *config.CustomCommandPrompt, wrap return wrappedF(str) }, }) + + return nil } func (self *HandlerCreator) generateFindSuggestionsFunc(prompt *config.CustomCommandPrompt) (func(string) []*types.Suggestion, error) { @@ -183,11 +185,13 @@ func (self *HandlerCreator) getPresetSuggestionsFn(preset string) (func(string) } func (self *HandlerCreator) confirmPrompt(prompt *config.CustomCommandPrompt, handleConfirm func() error) error { - return self.c.Confirm(types.ConfirmOpts{ + self.c.Confirm(types.ConfirmOpts{ Title: prompt.Title, Prompt: prompt.Body, HandleConfirm: handleConfirm, }) + + return nil } func (self *HandlerCreator) menuPrompt(prompt *config.CustomCommandPrompt, wrappedF func(string) error) error { @@ -298,7 +302,7 @@ func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, ses return err } } - return self.c.Alert(title, output) + self.c.Alert(title, output) } return nil diff --git a/pkg/gui/types/common.go b/pkg/gui/types/common.go index 96075593a..4dcafa005 100644 --- a/pkg/gui/types/common.go +++ b/pkg/gui/types/common.go @@ -120,11 +120,11 @@ type IPopupHandler interface { // Shows a notification popup with the given title and message to the user. // // This is a convenience wrapper around Confirm(), thus the popup can be closed using both 'Enter' and 'ESC'. - Alert(title string, message string) error + Alert(title string, message string) // Shows a popup asking the user for confirmation. - Confirm(opts ConfirmOpts) error + Confirm(opts ConfirmOpts) // Shows a popup prompting the user for input. - Prompt(opts PromptOpts) error + Prompt(opts PromptOpts) WithWaitingStatus(message string, f func(gocui.Task) error) error WithWaitingStatusSync(message string, f func() error) error Menu(opts CreateMenuOptions) error