diff --git a/pkg/gui/background.go b/pkg/gui/background.go index 80b73b006..6eaf041d4 100644 --- a/pkg/gui/background.go +++ b/pkg/gui/background.go @@ -93,7 +93,8 @@ func (self *BackgroundRoutineMgr) startBackgroundFilesRefresh(refreshInterval in self.gui.waitForIntro.Wait() self.goEvery(time.Second*time.Duration(refreshInterval), self.gui.stopChan, func() error { - return self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + return nil }) } @@ -125,7 +126,7 @@ func (self *BackgroundRoutineMgr) goEvery(interval time.Duration, stop chan stru func (self *BackgroundRoutineMgr) backgroundFetch() (err error) { err = self.gui.git.Sync.FetchBackground() - _ = self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC}) + self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC}) if err == nil { err = self.gui.helpers.BranchesHelper.AutoForwardBranches() diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go index 401550c98..9ae3eac09 100644 --- a/pkg/gui/controllers/bisect_controller.go +++ b/pkg/gui/controllers/bisect_controller.go @@ -175,7 +175,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, return err } - return self.c.Helpers().Bisect.PostBisectCommandRefresh() + self.c.Helpers().Bisect.PostBisectCommandRefresh() + return nil }, DisabledReason: self.require(self.singleItemSelected())(), Key: 'b', @@ -192,7 +193,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, return err } - return self.c.Helpers().Bisect.PostBisectCommandRefresh() + self.c.Helpers().Bisect.PostBisectCommandRefresh() + return nil }, DisabledReason: self.require(self.singleItemSelected())(), Key: 'g', @@ -211,7 +213,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, return err } - return self.c.Helpers().Bisect.PostBisectCommandRefresh() + self.c.Helpers().Bisect.PostBisectCommandRefresh() + return nil }, }) return nil @@ -245,7 +248,8 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string return err } - return self.c.Helpers().Bisect.PostBisectCommandRefresh() + self.c.Helpers().Bisect.PostBisectCommandRefresh() + return nil }, }) @@ -270,20 +274,21 @@ func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) } func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error { - selectFn := func() error { + selectFn := func() { if selectCurrent { self.selectCurrentBisectCommit() } - return nil } if waitToReselect { - return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn}) + self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn}) + return nil } - _ = selectFn() + selectFn() - return self.c.Helpers().Bisect.PostBisectCommandRefresh() + self.c.Helpers().Bisect.PostBisectCommandRefresh() + return nil } func (self *BisectController) selectCurrentBisectCommit() { diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index 528bfcf49..47520a653 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -263,15 +263,13 @@ func (self *BranchesController) viewUpstreamOptions(selectedBranch *models.Branc if err := self.c.Git().Branch.UnsetUpstream(selectedBranch.Name); err != nil { return err } - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{ types.BRANCHES, types.COMMITS, }, - }); err != nil { - return err - } + }) return nil }, Key: 'u', @@ -289,15 +287,13 @@ func (self *BranchesController) viewUpstreamOptions(selectedBranch *models.Branc if err := self.c.Git().Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil { return err } - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{ types.BRANCHES, types.COMMITS, }, - }); err != nil { - return err - } + }) return nil }) }, @@ -478,7 +474,8 @@ func (self *BranchesController) forceCheckout() error { if err := self.c.Git().Branch.Checkout(branch.Name, git_commands.CheckoutOptions{Force: true}); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }, }) @@ -526,7 +523,8 @@ func (self *BranchesController) createNewBranchWithName(newBranchName string) er } self.context().SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, KeepBranchSelectionIndex: true}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, KeepBranchSelectionIndex: true}) + return nil } func (self *BranchesController) localDelete(branches []*models.Branch) error { @@ -655,7 +653,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error { WorktreePath: worktreePath, }, ) - _ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) return err } @@ -664,7 +662,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error { err := self.c.Git().Sync.FastForward( task, branch.Name, branch.UpstreamRemote, branch.UpstreamBranch, ) - _ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) return err }) } @@ -679,7 +677,8 @@ func (self *BranchesController) createSortMenu() error { self.c.GetAppState().LocalBranchSortOrder = sortOrder self.c.SaveAppStateAndLogError() self.c.Contexts().Branches.SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) + return nil } return nil }, @@ -702,7 +701,7 @@ func (self *BranchesController) rename(branch *models.Branch) error { } // need to find where the branch is now so that we can re-select it. That means we need to refetch the branches synchronously and then find our branch - _ = self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.BRANCHES, types.WORKTREES}, }) diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go index 9febcc534..a2237bdab 100644 --- a/pkg/gui/controllers/commits_files_controller.go +++ b/pkg/gui/controllers/commits_files_controller.go @@ -289,7 +289,8 @@ func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileNode) error { diff --git a/pkg/gui/controllers/context_lines_controller.go b/pkg/gui/controllers/context_lines_controller.go index aec202aeb..b26a8e632 100644 --- a/pkg/gui/controllers/context_lines_controller.go +++ b/pkg/gui/controllers/context_lines_controller.go @@ -103,13 +103,13 @@ func (self *ContextLinesController) applyChange() error { switch currentContext.GetKey() { // we make an exception for our staging and patch building contexts because they actually need to refresh their state afterwards. case context.PATCH_BUILDING_MAIN_CONTEXT_KEY: - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.PATCH_BUILDING}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.PATCH_BUILDING}}) case context.STAGING_MAIN_CONTEXT_KEY, context.STAGING_SECONDARY_CONTEXT_KEY: - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STAGING}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STAGING}}) default: currentContext.HandleRenderToMain() - return nil } + return nil } func (self *ContextLinesController) checkCanChangeContext() error { diff --git a/pkg/gui/controllers/custom_patch_options_menu_action.go b/pkg/gui/controllers/custom_patch_options_menu_action.go index d83228793..2053666a7 100644 --- a/pkg/gui/controllers/custom_patch_options_menu_action.go +++ b/pkg/gui/controllers/custom_patch_options_menu_action.go @@ -275,7 +275,8 @@ func (self *CustomPatchOptionsMenuAction) handleApplyPatch(reverse bool) error { if err := self.c.Git().Patch.ApplyCustomPatch(reverse, true); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } func (self *CustomPatchOptionsMenuAction) copyPatchToClipboard() error { diff --git a/pkg/gui/controllers/diffing_menu_action.go b/pkg/gui/controllers/diffing_menu_action.go index 3ff3846ab..a53ad65e5 100644 --- a/pkg/gui/controllers/diffing_menu_action.go +++ b/pkg/gui/controllers/diffing_menu_action.go @@ -23,7 +23,8 @@ func (self *DiffingMenuAction) Call() error { OnPress: func() error { self.c.Modes().Diffing.Ref = name // can scope this down based on current view but too lazy right now - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }, }, }...) @@ -38,7 +39,8 @@ func (self *DiffingMenuAction) Call() error { FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), HandleConfirm: func(response string) error { self.c.Modes().Diffing.Ref = strings.TrimSpace(response) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }, }) @@ -53,14 +55,16 @@ func (self *DiffingMenuAction) Call() error { Label: self.c.Tr.SwapDiff, OnPress: func() error { self.c.Modes().Diffing.Reverse = !self.c.Modes().Diffing.Reverse - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }, }, { Label: self.c.Tr.ExitDiffMode, OnPress: func() error { self.c.Modes().Diffing = diffing.New() - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + 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 ab5b6e277..18af67f68 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -486,9 +486,7 @@ func (self *FilesController) press(nodes []*filetree.FileNode) error { return err } - if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}); err != nil { - return err - } + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}) self.context().HandleFocus(types.OnFocusOpts{}) return nil @@ -566,7 +564,8 @@ func (self *FilesController) handleNonInlineConflict(file *models.File) error { if err := command(file.GetPath()); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + return nil } keepItem := &types.MenuItem{ Label: self.c.Tr.MergeConflictKeepFile, @@ -611,9 +610,7 @@ func (self *FilesController) toggleStagedAll() error { return err } - if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}); err != nil { - return err - } + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}) self.context().HandleFocus(types.OnFocusOpts{}) return nil @@ -683,7 +680,8 @@ func (self *FilesController) ignoreOrExcludeTracked(node *filetree.FileNode, trA return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + return nil } func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, trAction string, f func(string) error) error { @@ -693,7 +691,8 @@ func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, t return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + return nil } func (self *FilesController) ignoreOrExcludeFile(node *filetree.FileNode, trText string, trPrompt string, trAction string, f func(string) error) error { @@ -755,7 +754,8 @@ func (self *FilesController) ignoreOrExcludeMenu(node *filetree.FileNode) error } func (self *FilesController) refresh() error { - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + return nil } func (self *FilesController) handleAmendCommitPress() error { @@ -900,10 +900,10 @@ func (self *FilesController) setStatusFiltering(filter filetree.FileTreeDisplayF // Whenever we switch between untracked and other filters, we need to refresh the files view // because the untracked files filter applies when running `git status`. if previousFilter != filter && (previousFilter == filetree.DisplayUntracked || filter == filetree.DisplayUntracked) { - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}) + } else { + self.c.PostRefreshUpdate(self.context()) } - - self.c.PostRefreshUpdate(self.context()) return nil } @@ -1177,7 +1177,8 @@ func (self *FilesController) handleStashSave(stashFunc func(message string) erro if err := stashFunc(stashComment); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) + return nil }, }) @@ -1197,7 +1198,7 @@ func (self *FilesController) fetch() error { return errors.New(self.c.Tr.PassUnameWrong) } - _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC}) if err == nil { err = self.c.Helpers().BranchesHelper.AutoForwardBranches() @@ -1322,7 +1323,8 @@ func (self *FilesController) remove(selectedNodes []*filetree.FileNode) error { } } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}}) + return nil }, Key: self.c.KeybindingsOpts().GetKey(self.c.UserConfig().Keybinding.Files.ConfirmDiscard), Tooltip: utils.ResolvePlaceholderString( @@ -1348,7 +1350,8 @@ func (self *FilesController) remove(selectedNodes []*filetree.FileNode) error { } } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}}) + return nil }, Key: 'u', Tooltip: utils.ResolvePlaceholderString( @@ -1389,7 +1392,8 @@ func (self *FilesController) ResetSubmodule(submodule *models.SubmoduleConfig) e return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.SUBMODULES}}) + return nil }) } diff --git a/pkg/gui/controllers/filtering_menu_action.go b/pkg/gui/controllers/filtering_menu_action.go index f509e607a..6b67e009a 100644 --- a/pkg/gui/controllers/filtering_menu_action.go +++ b/pkg/gui/controllers/filtering_menu_action.go @@ -122,9 +122,10 @@ func (self *FilteringMenuAction) setFiltering() error { self.c.Context().Push(self.c.Contexts().LocalCommits, types.OnFocusOpts{}) - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() error { + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() { self.c.Contexts().LocalCommits.SetSelection(0) self.c.Contexts().LocalCommits.FocusLine() - return nil }}) + + return nil } diff --git a/pkg/gui/controllers/global_controller.go b/pkg/gui/controllers/global_controller.go index 2d7f796a5..9dfbeb454 100644 --- a/pkg/gui/controllers/global_controller.go +++ b/pkg/gui/controllers/global_controller.go @@ -143,7 +143,8 @@ func (self *GlobalController) createCustomPatchOptionsMenu() error { } func (self *GlobalController) refresh() error { - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } func (self *GlobalController) nextScreenMode() error { diff --git a/pkg/gui/controllers/helpers/bisect_helper.go b/pkg/gui/controllers/helpers/bisect_helper.go index ccb77bfa3..6ce517dac 100644 --- a/pkg/gui/controllers/helpers/bisect_helper.go +++ b/pkg/gui/controllers/helpers/bisect_helper.go @@ -22,13 +22,14 @@ func (self *BisectHelper) Reset() error { return err } - return self.PostBisectCommandRefresh() + self.PostBisectCommandRefresh() + return nil }, }) return nil } -func (self *BisectHelper) PostBisectCommandRefresh() error { - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{}}) +func (self *BisectHelper) PostBisectCommandRefresh() { + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{}}) } diff --git a/pkg/gui/controllers/helpers/branches_helper.go b/pkg/gui/controllers/helpers/branches_helper.go index 659f1dc3b..2478dee58 100644 --- a/pkg/gui/controllers/helpers/branches_helper.go +++ b/pkg/gui/controllers/helpers/branches_helper.go @@ -49,7 +49,8 @@ func (self *BranchesHelper) ConfirmLocalDelete(branches []*models.Branch) error } selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange() self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) + return nil }) } @@ -113,7 +114,8 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteBranches []*models.RemoteB if err := self.deleteRemoteBranches(remoteBranches, task); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return nil }) }, }) @@ -181,7 +183,8 @@ func (self *BranchesHelper) ConfirmLocalAndRemoteDelete(branches []*models.Branc selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange() self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return nil }) }, }) @@ -295,7 +298,7 @@ func (self *BranchesHelper) AutoForwardBranches() error { self.c.LogCommand(strings.TrimRight(updateCommands, "\n"), false) err := self.c.Git().Branch.UpdateBranchRefs(updateCommands) - _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES}, Mode: types.SYNC}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES}, Mode: types.SYNC}) return err } diff --git a/pkg/gui/controllers/helpers/credentials_helper.go b/pkg/gui/controllers/helpers/credentials_helper.go index 2e6dcc25e..0783e65f2 100644 --- a/pkg/gui/controllers/helpers/credentials_helper.go +++ b/pkg/gui/controllers/helpers/credentials_helper.go @@ -33,7 +33,8 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr HandleConfirm: func(input string) error { ch <- input + "\n" - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }, HandleClose: func() error { ch <- "\n" diff --git a/pkg/gui/controllers/helpers/diff_helper.go b/pkg/gui/controllers/helpers/diff_helper.go index 26a2cf64c..587e529b2 100644 --- a/pkg/gui/controllers/helpers/diff_helper.go +++ b/pkg/gui/controllers/helpers/diff_helper.go @@ -72,7 +72,8 @@ func (self *DiffHelper) GetUpdateTaskForRenderingCommitsDiff(commit *models.Comm func (self *DiffHelper) ExitDiffMode() error { self.c.Modes().Diffing = diffing.New() - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } func (self *DiffHelper) RenderDiff() { diff --git a/pkg/gui/controllers/helpers/fixup_helper.go b/pkg/gui/controllers/helpers/fixup_helper.go index c5cdbcf7e..21496cf1c 100644 --- a/pkg/gui/controllers/helpers/fixup_helper.go +++ b/pkg/gui/controllers/helpers/fixup_helper.go @@ -133,7 +133,7 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error { if err := self.c.Git().WorkingTree.StageAll(); err != nil { return err } - _ = self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}}) } self.c.Contexts().LocalCommits.SetSelection(index) diff --git a/pkg/gui/controllers/helpers/gpg_helper.go b/pkg/gui/controllers/helpers/gpg_helper.go index aabd6964a..afac52f13 100644 --- a/pkg/gui/controllers/helpers/gpg_helper.go +++ b/pkg/gui/controllers/helpers/gpg_helper.go @@ -32,9 +32,7 @@ func (self *GpgHelper) WithGpgHandling(cmdObj *oscommands.CmdObj, configKey git_ return err } } - if err := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}); err != nil { - return err - } + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}) return err } @@ -45,7 +43,7 @@ func (self *GpgHelper) WithGpgHandling(cmdObj *oscommands.CmdObj, configKey git_ func (self *GpgHelper) runAndStream(cmdObj *oscommands.CmdObj, waitingStatus string, onSuccess func() error, refreshScope []types.RefreshableView) error { return self.c.WithWaitingStatus(waitingStatus, func(gocui.Task) error { if err := cmdObj.StreamOutput().Run(); err != nil { - _ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}) return fmt.Errorf( self.c.Tr.GitCommandFailed, self.c.UserConfig().Keybinding.Universal.ExtrasMenu, ) @@ -57,6 +55,7 @@ func (self *GpgHelper) runAndStream(cmdObj *oscommands.CmdObj, waitingStatus str } } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}) + return nil }) } diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index bd3cee7b7..82bef8fd2 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -150,9 +150,8 @@ func isMergeConflictErr(errStr string) bool { } func (self *MergeAndRebaseHelper) CheckMergeOrRebaseWithRefreshOptions(result error, refreshOptions types.RefreshOptions) error { - if err := self.c.Refresh(refreshOptions); err != nil { - return err - } + self.c.Refresh(refreshOptions) + if result == nil { return nil } else if strings.Contains(result.Error(), "No changes - did you forget to use") { @@ -234,11 +233,9 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { // Need to refresh the files to be really sure if this is the case. // We would otherwise be relying on lazygit's auto-refresh on focus, // but this is not supported by all terminals or on all platforms. - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}, - }); err != nil { - return err - } + }) root := self.c.Contexts().Files.FileTreeViewModel.GetRoot() if root.GetHasUnstagedChanges() { @@ -457,7 +454,8 @@ func (self *MergeAndRebaseHelper) SquashMergeCommitted(refName, checkedOutBranch if err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } } diff --git a/pkg/gui/controllers/helpers/mode_helper.go b/pkg/gui/controllers/helpers/mode_helper.go index 8c6b46eb6..4af1ddf3f 100644 --- a/pkg/gui/controllers/helpers/mode_helper.go +++ b/pkg/gui/controllers/helpers/mode_helper.go @@ -167,9 +167,9 @@ func (self *ModeHelper) ClearFiltering() error { self.c.State().GetRepoState().SetScreenMode(types.SCREEN_NORMAL) } - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.COMMITS}, - Then: func() error { + Then: func() { // Find the commit that was last selected in filtering mode, and select it again after refreshing if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) { // If we couldn't find it (either because no commit was selected @@ -178,9 +178,9 @@ func (self *ModeHelper) ClearFiltering() error { // before we entered filtering self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash()) } - return nil }, }) + return nil } func (self *ModeHelper) SetSuppressRebasingMode(value bool) { diff --git a/pkg/gui/controllers/helpers/patch_building_helper.go b/pkg/gui/controllers/helpers/patch_building_helper.go index 73d0fb608..116e8b293 100644 --- a/pkg/gui/controllers/helpers/patch_building_helper.go +++ b/pkg/gui/controllers/helpers/patch_building_helper.go @@ -40,11 +40,9 @@ func (self *PatchBuildingHelper) Reset() error { self.Escape() } - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.COMMIT_FILES}, - }); err != nil { - return err - } + }) // refreshing the current context so that the secondary panel is hidden if necessary. self.c.PostRefreshUpdate(self.c.Context().Current()) diff --git a/pkg/gui/controllers/helpers/refresh_helper.go b/pkg/gui/controllers/helpers/refresh_helper.go index 2e0e157e3..e377cfdf9 100644 --- a/pkg/gui/controllers/helpers/refresh_helper.go +++ b/pkg/gui/controllers/helpers/refresh_helper.go @@ -51,7 +51,7 @@ func NewRefreshHelper( } } -func (self *RefreshHelper) Refresh(options types.RefreshOptions) error { +func (self *RefreshHelper) Refresh(options types.RefreshOptions) { if options.Mode == types.ASYNC && options.Then != nil { panic("RefreshOptions.Then doesn't work with mode ASYNC") } @@ -74,7 +74,7 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error { ) } - f := func() error { + f := func() { var scopeSet *set.Set[types.RefreshableView] if len(options.Scope) == 0 { // not refreshing staging/patch-building unless explicitly requested because we only need @@ -191,22 +191,19 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error { wg.Wait() if options.Then != nil { - if err := options.Then(); err != nil { - return err - } + options.Then() } - - return nil } if options.Mode == types.BLOCK_UI { self.c.OnUIThread(func() error { - return f() + f() + return nil }) - return nil + return } - return f() + f() } func getScopeNames(scopes []types.RefreshableView) []string { diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index 0222f575c..6b07b6ec6 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -46,7 +46,7 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions // loading a heap of commits is slow so we limit them whenever doing a reset self.c.Contexts().LocalCommits.SetLimitCommits(true) - _ = self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) } localBranch, found := lo.Find(self.c.Model().Branches, func(branch *models.Branch) bool { @@ -145,12 +145,10 @@ func (self *RefsHelper) CheckoutRemoteBranch(fullBranchName string, localBranchN } // Do a sync refresh to make sure the new branch is visible, // so that we see an inline status when checking it out - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.BRANCHES}, - }); err != nil { - return err - } + }) return checkout(localBranchName) }, }, @@ -183,9 +181,7 @@ func (self *RefsHelper) ResetToRef(ref string, strength string, envVars []string // loading a heap of commits is slow so we limit them whenever doing a reset self.c.Contexts().LocalCommits.SetLimitCommits(true) - if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.BRANCHES, types.REFLOG, types.COMMITS}}); err != nil { - return err - } + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.BRANCHES, types.REFLOG, types.COMMITS}}) return nil } @@ -331,7 +327,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest } } - refresh := func() error { + refresh := func() { if self.c.Context().Current() != self.c.Contexts().Branches { self.c.Context().Push(self.c.Contexts().Branches, types.OnFocusOpts{}) } @@ -339,7 +335,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest self.c.Contexts().LocalCommits.SetSelection(0) self.c.Contexts().Branches.SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) } self.c.Prompt(types.PromptOpts{ @@ -365,14 +361,10 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest if err := newBranchFunc(newBranchName, from); err != nil { return err } - popErr := self.c.Git().Stash.Pop(0) + err := self.c.Git().Stash.Pop(0) // Branch switch successful so re-render the UI even if the pop operation failed (e.g. conflict). - refreshError := refresh() - if popErr != nil { - // An error from pop is the more important one to report to the user - return popErr - } - return refreshError + refresh() + return err }, }) @@ -382,7 +374,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest return err } - return refresh() + refresh() + return nil }, }) @@ -498,7 +491,8 @@ func (self *RefsHelper) moveCommitsToNewBranchStackedOnCurrentBranch(currentBran self.c.Contexts().LocalCommits.SetSelection(0) self.c.Contexts().Branches.SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + return nil } func (self *RefsHelper) moveCommitsToNewBranchOffOfMainBranch(currentBranch string, newBranchName string, baseBranchRef string) error { @@ -536,7 +530,8 @@ func (self *RefsHelper) moveCommitsToNewBranchOffOfMainBranch(currentBranch stri self.c.Contexts().LocalCommits.SetSelection(0) self.c.Contexts().Branches.SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) + return nil } func (self *RefsHelper) CanMoveCommitsToNewBranch() *types.DisabledReason { diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go index 1e8226363..33620acd6 100644 --- a/pkg/gui/controllers/helpers/working_tree_helper.go +++ b/pkg/gui/controllers/helpers/working_tree_helper.go @@ -210,9 +210,7 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro if err := self.c.Git().WorkingTree.StageAll(); err != nil { return err } - if err := self.syncRefresh(); err != nil { - return err - } + self.syncRefresh() return retry() }, @@ -222,8 +220,8 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro } // for when you need to refetch files before continuing an action. Runs synchronously. -func (self *WorkingTreeHelper) syncRefresh() error { - return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}}) +func (self *WorkingTreeHelper) syncRefresh() { + self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}}) } func (self *WorkingTreeHelper) prepareFilesForCommit() error { @@ -235,7 +233,7 @@ func (self *WorkingTreeHelper) prepareFilesForCommit() error { return err } - return self.syncRefresh() + self.syncRefresh() } return nil diff --git a/pkg/gui/controllers/helpers/worktree_helper.go b/pkg/gui/controllers/helpers/worktree_helper.go index ac4e01cf6..a54adcc49 100644 --- a/pkg/gui/controllers/helpers/worktree_helper.go +++ b/pkg/gui/controllers/helpers/worktree_helper.go @@ -198,7 +198,8 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error } return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}}) + return nil }) }, }) @@ -214,7 +215,8 @@ func (self *WorktreeHelper) Detach(worktree *models.Worktree) error { if err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}}) + return nil }) } diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index b4e18fcde..5bf29c2cd 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -392,7 +392,8 @@ func (self *LocalCommitsController) switchFromCommitMessagePanelToEditor(filepat return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil } func (self *LocalCommitsController) handleReword(summary string, description string) error { @@ -408,7 +409,8 @@ func (self *LocalCommitsController) handleReword(summary string, description str if err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) } @@ -519,9 +521,8 @@ func (self *LocalCommitsController) edit(selectedCommits []*models.Commit, start return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions( err, types.RefreshOptions{ - Mode: types.BLOCK_UI, Then: func() error { + Mode: types.BLOCK_UI, Then: func() { self.restoreSelectionRangeAndMode(selectionRangeAndMode) - return nil }, }) } @@ -547,7 +548,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit( err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash()) return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions( err, - types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() error { + types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() { todos := make([]*models.Commit, 0, len(commitsToEdit)-1) for _, c := range commitsToEdit[:len(commitsToEdit)-1] { // Merge commits can't be set to "edit", so just skip them @@ -558,12 +559,11 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit( if len(todos) > 0 { err := self.updateTodos(todo.Edit, todos) if err != nil { - return err + self.c.Log.Errorf("error when updating todos: %v", err) } } self.restoreSelectionRangeAndMode(selectionRangeAndMode) - return nil }}) }) } @@ -642,9 +642,11 @@ func (self *LocalCommitsController) updateTodos(action todo.TodoCommand, selecte return err } - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS}, }) + + return nil } func (self *LocalCommitsController) rewordEnabled(commit *models.Commit) *types.DisabledReason { @@ -681,9 +683,10 @@ func (self *LocalCommitsController) moveDown(selectedCommits []*models.Commit, s } self.context().MoveSelection(1) - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS}, }) + return nil } return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error { @@ -704,9 +707,10 @@ func (self *LocalCommitsController) moveUp(selectedCommits []*models.Commit, sta } self.context().MoveSelection(-1) - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS}, }) + return nil } return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error { @@ -729,7 +733,8 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error { if err := self.c.Helpers().AmendHelper.AmendHead(); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) } } else { @@ -804,7 +809,8 @@ func (self *LocalCommitsController) resetAuthor(start, end int) error { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) } @@ -819,7 +825,8 @@ func (self *LocalCommitsController) setAuthor(start, end int) error { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) }, }) @@ -837,7 +844,8 @@ func (self *LocalCommitsController) addCoAuthor(start, end int) error { if err := self.c.Git().Rebase.AddCommitCoAuthor(self.c.Model().Commits, start, end, value); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) }, }) @@ -870,9 +878,10 @@ func (self *LocalCommitsController) revert(commits []*models.Commit, start, end return err } self.context().MoveSelection(len(commits)) - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES}, }) + return nil }) }, }) @@ -908,7 +917,8 @@ func (self *LocalCommitsController) createFixupCommit(commit *models.Commit) err } self.context().MoveSelectedLine(1) - return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.SYNC}) + return nil }) }) }, @@ -1008,7 +1018,8 @@ func (self *LocalCommitsController) createAmendCommit(commit *models.Commit, inc } self.context().MoveSelectedLine(1) - return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.SYNC}) + return nil }) }, OnSwitchToEditor: nil, @@ -1134,9 +1145,7 @@ func (self *LocalCommitsController) openSearch() error { // we usually lazyload these commits but now that we're searching we need to load them now if self.context().GetLimitCommits() { self.context().SetLimitCommits(false) - if err := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS}}); err != nil { - return err - } + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS}}) } return self.c.Helpers().Search.OpenSearchPrompt(self.context()) @@ -1156,9 +1165,10 @@ func (self *LocalCommitsController) handleOpenLogMenu() error { } return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error { - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS}}, ) + return nil }) }, }, @@ -1208,12 +1218,13 @@ func (self *LocalCommitsController) handleOpenLogMenu() error { self.c.GetAppState().GitLogOrder = value self.c.SaveAppStateAndLogError() return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error { - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS}, }, ) + return nil }) } } @@ -1255,7 +1266,8 @@ func (self *LocalCommitsController) GetOnFocus() func(types.OnFocusOpts) { if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() { context.SetLimitCommits(false) self.c.OnWorker(func(_ gocui.Task) error { - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}}) + return nil }) } } diff --git a/pkg/gui/controllers/merge_conflicts_controller.go b/pkg/gui/controllers/merge_conflicts_controller.go index 28cf1bab4..23c53f088 100644 --- a/pkg/gui/controllers/merge_conflicts_controller.go +++ b/pkg/gui/controllers/merge_conflicts_controller.go @@ -277,7 +277,7 @@ func (self *MergeConflictsController) pickSelection(selection mergeconflicts.Sel } if self.context().GetState().AllConflictsResolved() { - return self.onLastConflictResolved() + self.onLastConflictResolved() } return nil @@ -314,10 +314,10 @@ func (self *MergeConflictsController) resolveConflict(selection mergeconflicts.S return true, os.WriteFile(state.GetPath(), []byte(content), 0o644) } -func (self *MergeConflictsController) onLastConflictResolved() error { +func (self *MergeConflictsController) onLastConflictResolved() { // as part of refreshing files, we handle the situation where a file has had // its merge conflicts resolved. - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}) } func (self *MergeConflictsController) withRenderAndFocus(f func() error) func() error { diff --git a/pkg/gui/controllers/patch_building_controller.go b/pkg/gui/controllers/patch_building_controller.go index 014b8d7b7..94f987404 100644 --- a/pkg/gui/controllers/patch_building_controller.go +++ b/pkg/gui/controllers/patch_building_controller.go @@ -116,9 +116,10 @@ func (self *PatchBuildingController) ToggleSelectionAndRefresh() error { return err } - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.PATCH_BUILDING, types.COMMIT_FILES}, }) + return nil } func (self *PatchBuildingController) toggleSelection() error { diff --git a/pkg/gui/controllers/remote_branches_controller.go b/pkg/gui/controllers/remote_branches_controller.go index 1d59b5547..304baa125 100644 --- a/pkg/gui/controllers/remote_branches_controller.go +++ b/pkg/gui/controllers/remote_branches_controller.go @@ -150,7 +150,7 @@ func (self *RemoteBranchesController) createSortMenu() error { self.c.GetAppState().RemoteBranchSortOrder = sortOrder self.c.SaveAppStateAndLogError() self.c.Contexts().RemoteBranches.SetSelection(0) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.REMOTES}}) } return nil }, @@ -181,7 +181,8 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return nil }, }) diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go index 3f4b5a604..10f15d457 100644 --- a/pkg/gui/controllers/remotes_controller.go +++ b/pkg/gui/controllers/remotes_controller.go @@ -148,12 +148,10 @@ func (self *RemotesController) add() error { // Do a sync refresh of the remotes so that we can select // the new one. Loading remotes is not expensive, so we can // afford it. - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.REMOTES}, Mode: types.SYNC, - }); err != nil { - return err - } + }) // Select the new remote for idx, remote := range self.c.Model().Remotes { @@ -185,7 +183,8 @@ func (self *RemotesController) remove(remote *models.Remote) error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return nil }, }) @@ -232,7 +231,8 @@ func (self *RemotesController) edit(remote *models.Remote) error { if err := self.c.Git().Remote.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return nil }, }) @@ -250,9 +250,10 @@ func (self *RemotesController) fetch(remote *models.Remote) error { return err } - return self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}, Mode: types.ASYNC, }) + return nil }) } diff --git a/pkg/gui/controllers/rename_similarity_threshold_controller.go b/pkg/gui/controllers/rename_similarity_threshold_controller.go index 790c005a9..cae0fb80f 100644 --- a/pkg/gui/controllers/rename_similarity_threshold_controller.go +++ b/pkg/gui/controllers/rename_similarity_threshold_controller.go @@ -88,11 +88,11 @@ func (self *RenameSimilarityThresholdController) applyChange() error { switch currentContext.GetKey() { // we make an exception for our files context, because it actually need to refresh its state afterwards. case context.FILES_CONTEXT_KEY: - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}}) default: currentContext.HandleRenderToMain() - return nil } + return nil } func (self *RenameSimilarityThresholdController) isShowingRenames() bool { diff --git a/pkg/gui/controllers/staging_controller.go b/pkg/gui/controllers/staging_controller.go index 93696a6ec..6b251883b 100644 --- a/pkg/gui/controllers/staging_controller.go +++ b/pkg/gui/controllers/staging_controller.go @@ -221,7 +221,8 @@ func (self *StagingController) applySelectionAndRefresh(reverse bool) error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}}) + return nil } func (self *StagingController) applySelection(reverse bool) error { @@ -275,7 +276,8 @@ func (self *StagingController) EditHunkAndRefresh() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}}) + return nil } func (self *StagingController) editHunk() error { diff --git a/pkg/gui/controllers/stash_controller.go b/pkg/gui/controllers/stash_controller.go index b9e4e33d6..786d5c675 100644 --- a/pkg/gui/controllers/stash_controller.go +++ b/pkg/gui/controllers/stash_controller.go @@ -107,7 +107,7 @@ func (self *StashController) handleStashApply(stashEntry *models.StashEntry) err apply := func() error { self.c.LogAction(self.c.Tr.Actions.Stash) err := self.c.Git().Stash.Apply(stashEntry.Index) - _ = self.postStashRefresh() + self.postStashRefresh() if err != nil { return err } @@ -136,7 +136,7 @@ func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error pop := func() error { self.c.LogAction(self.c.Tr.Actions.Stash) err := self.c.Git().Stash.Pop(stashEntry.Index) - _ = self.postStashRefresh() + self.postStashRefresh() if err != nil { return err } @@ -170,7 +170,7 @@ func (self *StashController) handleStashDrop(stashEntries []*models.StashEntry) startIndex := stashEntries[0].Index for range stashEntries { err := self.c.Git().Stash.Drop(startIndex) - _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) if err != nil { return err } @@ -182,8 +182,8 @@ func (self *StashController) handleStashDrop(stashEntries []*models.StashEntry) return nil } -func (self *StashController) postStashRefresh() error { - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) +func (self *StashController) postStashRefresh() { + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) } func (self *StashController) handleNewBranchOffStashEntry(stashEntry *models.StashEntry) error { @@ -205,12 +205,13 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr self.c.LogAction(self.c.Tr.Actions.RenameStash) err := self.c.Git().Stash.Rename(stashEntry.Index, response) if err != nil { - _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) return err } self.context().SetSelection(0) // Select the renamed stash self.context().FocusLine() - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) + return nil }, }) diff --git a/pkg/gui/controllers/sub_commits_controller.go b/pkg/gui/controllers/sub_commits_controller.go index 0dfd5d653..a47469d70 100644 --- a/pkg/gui/controllers/sub_commits_controller.go +++ b/pkg/gui/controllers/sub_commits_controller.go @@ -68,7 +68,8 @@ func (self *SubCommitsController) GetOnFocus() func(types.OnFocusOpts) { if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() { context.SetLimitCommits(false) self.c.OnWorker(func(_ gocui.Task) error { - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUB_COMMITS}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUB_COMMITS}}) + return nil }) } } diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go index aaeb75251..a4a1cb796 100644 --- a/pkg/gui/controllers/submodules_controller.go +++ b/pkg/gui/controllers/submodules_controller.go @@ -166,7 +166,8 @@ func (self *SubmodulesController) add() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, }) @@ -194,7 +195,8 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, }) @@ -210,7 +212,8 @@ func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) } @@ -228,7 +231,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, Key: 'i', @@ -242,7 +246,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, Key: 'u', @@ -256,7 +261,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, Key: 'r', @@ -270,7 +276,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error { return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) }, Key: 'd', @@ -287,7 +294,8 @@ func (self *SubmodulesController) update(submodule *models.SubmoduleConfig) erro return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + return nil }) } @@ -301,7 +309,8 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro return err } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}}) + self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}}) + return nil }, }) diff --git a/pkg/gui/controllers/switch_to_diff_files_controller.go b/pkg/gui/controllers/switch_to_diff_files_controller.go index fc764ca7e..387da2427 100644 --- a/pkg/gui/controllers/switch_to_diff_files_controller.go +++ b/pkg/gui/controllers/switch_to_diff_files_controller.go @@ -85,11 +85,9 @@ func (self *SwitchToDiffFilesController) enter() error { commitFilesContext.ClearSearchString() commitFilesContext.GetView().TitlePrefix = self.context.GetView().TitlePrefix - if err := self.c.Refresh(types.RefreshOptions{ + self.c.Refresh(types.RefreshOptions{ Scope: []types.RefreshableView{types.COMMIT_FILES}, - }); err != nil { - return err - } + }) self.c.Context().Push(commitFilesContext, types.OnFocusOpts{}) return nil diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go index c1c79fa35..023ac0d25 100644 --- a/pkg/gui/controllers/sync_controller.go +++ b/pkg/gui/controllers/sync_controller.go @@ -229,7 +229,8 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) } return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return nil }) } diff --git a/pkg/gui/controllers/tags_controller.go b/pkg/gui/controllers/tags_controller.go index 784d2cc8f..71561ed6e 100644 --- a/pkg/gui/controllers/tags_controller.go +++ b/pkg/gui/controllers/tags_controller.go @@ -158,7 +158,7 @@ func (self *TagsController) localDelete(tag *models.Tag) error { return self.c.WithWaitingStatus(self.c.Tr.DeletingStatus, func(gocui.Task) error { self.c.LogAction(self.c.Tr.Actions.DeleteLocalTag) err := self.c.Git().Tag.LocalDelete(tag.Name) - _ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) return err }) } @@ -200,7 +200,8 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error { return err } self.c.Toast(self.c.Tr.RemoteTagDeletedMessage) - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) + return nil }) }, }) @@ -253,7 +254,8 @@ func (self *TagsController) localAndRemoteDelete(tag *models.Tag) error { if err := self.c.Git().Tag.LocalDelete(tag.Name); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) + return nil }) }, }) diff --git a/pkg/gui/controllers/undo_controller.go b/pkg/gui/controllers/undo_controller.go index 74adf7067..6ed947813 100644 --- a/pkg/gui/controllers/undo_controller.go +++ b/pkg/gui/controllers/undo_controller.go @@ -271,7 +271,8 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha if err != nil { return err } - return self.c.Refresh(types.RefreshOptions{}) + self.c.Refresh(types.RefreshOptions{}) + return nil }) } diff --git a/pkg/gui/controllers/workspace_reset_controller.go b/pkg/gui/controllers/workspace_reset_controller.go index 7ecf79c78..0c74e3ac7 100644 --- a/pkg/gui/controllers/workspace_reset_controller.go +++ b/pkg/gui/controllers/workspace_reset_controller.go @@ -39,9 +39,10 @@ func (self *FilesController) createResetMenu() error { self.animateExplosion() } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'x', Tooltip: self.c.Tr.NukeDescription, @@ -57,9 +58,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'u', }, @@ -74,9 +76,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'c', }, @@ -98,9 +101,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'S', }, @@ -115,9 +119,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 's', }, @@ -132,9 +137,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'm', }, @@ -149,9 +155,10 @@ func (self *FilesController) createResetMenu() error { return err } - return self.c.Refresh( + self.c.Refresh( types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}, ) + return nil }, Key: 'h', }, diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index f2ea43156..e543fe20c 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -349,13 +349,8 @@ func (gui *Gui) onNewRepo(startArgs appTypes.StartArgs, contextKey types.Context } gui.c.Log.Info("Receiving focus - refreshing") - refreshErr := gui.helpers.Refresh.Refresh(types.RefreshOptions{Mode: types.ASYNC}) - if reloadErr != nil { - // An error from reloading the config is the more important one - // to report to the user - return reloadErr - } - return refreshErr + gui.helpers.Refresh.Refresh(types.RefreshOptions{Mode: types.ASYNC}) + return reloadErr } return nil @@ -693,7 +688,7 @@ func NewGui( func(ctx goContext.Context, opts types.CreatePopupPanelOpts) { gui.helpers.Confirmation.CreatePopupPanel(ctx, opts) }, - func() error { return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) }, + func() error { gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); return nil }, func() { gui.State.ContextMgr.Pop() }, func() types.Context { return gui.State.ContextMgr.Current() }, gui.createMenu, @@ -932,9 +927,7 @@ func (gui *Gui) runSubprocessWithSuspenseAndRefresh(subprocess *oscommands.CmdOb return err } - if err := gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil { - return err - } + gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) return nil } @@ -996,9 +989,7 @@ func (gui *Gui) loadNewRepo() error { return err } - if err := gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil { - return err - } + gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) if err := gui.os.UpdateWindowTitle(); err != nil { return err diff --git a/pkg/gui/gui_common.go b/pkg/gui/gui_common.go index 4a40c4f8b..c77c81e79 100644 --- a/pkg/gui/gui_common.go +++ b/pkg/gui/gui_common.go @@ -26,8 +26,8 @@ func (self *guiCommon) LogCommand(cmdStr string, isCommandLine bool) { self.gui.LogCommand(cmdStr, isCommandLine) } -func (self *guiCommon) Refresh(opts types.RefreshOptions) error { - return self.gui.helpers.Refresh.Refresh(opts) +func (self *guiCommon) Refresh(opts types.RefreshOptions) { + self.gui.helpers.Refresh.Refresh(opts) } func (self *guiCommon) PostRefreshUpdate(context types.Context) { diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 35c3feb05..73e68c3b3 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -282,9 +282,7 @@ func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, ses } output, err := cmdObj.RunWithOutput() - if refreshErr := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil { - self.c.Log.Error(refreshErr) - } + self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) if err != nil { if customCommand.After != nil && customCommand.After.CheckForConflicts { diff --git a/pkg/gui/types/common.go b/pkg/gui/types/common.go index 47d51bb6b..fb472ab24 100644 --- a/pkg/gui/types/common.go +++ b/pkg/gui/types/common.go @@ -29,7 +29,7 @@ type IGuiCommon interface { LogAction(action string) LogCommand(cmdStr string, isCommandLine bool) // we call this when we want to refetch some models and render the result. Internally calls PostRefreshUpdate - Refresh(RefreshOptions) error + Refresh(RefreshOptions) // we call this when we've changed something in the view model but not the actual model, // e.g. expanding or collapsing a folder in a file view. Calling 'Refresh' in this // case would be overkill, although refresh will internally call 'PostRefreshUpdate' diff --git a/pkg/gui/types/refresh.go b/pkg/gui/types/refresh.go index 2d6a383c3..c20a5f54a 100644 --- a/pkg/gui/types/refresh.go +++ b/pkg/gui/types/refresh.go @@ -33,7 +33,7 @@ const ( ) type RefreshOptions struct { - Then func() error + Then func() Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI