diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2023-12-21 21:17:48 +0100 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2024-01-26 08:29:04 +0100 |
commit | 7fb526602704caa02ebd481603b43fcd7ed4bf14 (patch) | |
tree | d9f7fab8f182f08775387f135f017a182e8bbfd9 | |
parent | ae89dde9694d0d8c25961047f098b8ca63441ff0 (diff) |
Use inline status for fetching remotes
-rw-r--r-- | pkg/commands/models/remote.go | 4 | ||||
-rw-r--r-- | pkg/gui/context/remotes_context.go | 3 | ||||
-rw-r--r-- | pkg/gui/controllers/remotes_controller.go | 7 | ||||
-rw-r--r-- | pkg/gui/presentation/item_operations.go | 2 | ||||
-rw-r--r-- | pkg/gui/presentation/remotes.go | 28 | ||||
-rw-r--r-- | pkg/gui/types/common.go | 1 |
6 files changed, 38 insertions, 7 deletions
diff --git a/pkg/commands/models/remote.go b/pkg/commands/models/remote.go index 42ebe16ab..418b45833 100644 --- a/pkg/commands/models/remote.go +++ b/pkg/commands/models/remote.go @@ -15,6 +15,10 @@ func (r *Remote) ID() string { return r.RefName() } +func (r *Remote) URN() string { + return "remote-" + r.ID() +} + func (r *Remote) Description() string { return r.RefName() } diff --git a/pkg/gui/context/remotes_context.go b/pkg/gui/context/remotes_context.go index ec59d5fd7..73ea428aa 100644 --- a/pkg/gui/context/remotes_context.go +++ b/pkg/gui/context/remotes_context.go @@ -25,7 +25,8 @@ func NewRemotesContext(c *ContextCommon) *RemotesContext { ) getDisplayStrings := func(_ int, _ int) [][]string { - return presentation.GetRemoteListDisplayStrings(viewModel.GetItems(), c.Modes().Diffing.Ref) + return presentation.GetRemoteListDisplayStrings( + viewModel.GetItems(), c.Modes().Diffing.Ref, c.State().GetItemOperation, c.Tr) } return &RemotesContext{ diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go index c0ee75022..fe707af99 100644 --- a/pkg/gui/controllers/remotes_controller.go +++ b/pkg/gui/controllers/remotes_controller.go @@ -206,12 +206,15 @@ func (self *RemotesController) edit(remote *models.Remote) error { } func (self *RemotesController) fetch(remote *models.Remote) error { - return self.c.WithWaitingStatus(self.c.Tr.FetchingRemoteStatus, func(task gocui.Task) error { + return self.c.WithInlineStatus(remote, types.ItemOperationFetching, context.REMOTES_CONTEXT_KEY, func(task gocui.Task) error { err := self.c.Git().Sync.FetchRemote(task, remote.Name) if err != nil { _ = self.c.Error(err) } - return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) + return self.c.Refresh(types.RefreshOptions{ + Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}, + Mode: types.ASYNC, + }) }) } diff --git a/pkg/gui/presentation/item_operations.go b/pkg/gui/presentation/item_operations.go index 85b81a123..13415483b 100644 --- a/pkg/gui/presentation/item_operations.go +++ b/pkg/gui/presentation/item_operations.go @@ -17,6 +17,8 @@ func ItemOperationToString(itemOperation types.ItemOperation, tr *i18n.Translati return tr.FastForwarding case types.ItemOperationDeleting: return tr.DeletingStatus + case types.ItemOperationFetching: + return tr.FetchingStatus } return "" diff --git a/pkg/gui/presentation/remotes.go b/pkg/gui/presentation/remotes.go index 1fbedf9cc..dc0f39ec0 100644 --- a/pkg/gui/presentation/remotes.go +++ b/pkg/gui/presentation/remotes.go @@ -1,22 +1,37 @@ package presentation import ( + "time" + "github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/gui/presentation/icons" "github.com/jesseduffield/lazygit/pkg/gui/style" + "github.com/jesseduffield/lazygit/pkg/gui/types" + "github.com/jesseduffield/lazygit/pkg/i18n" "github.com/jesseduffield/lazygit/pkg/theme" + "github.com/jesseduffield/lazygit/pkg/utils" "github.com/samber/lo" ) -func GetRemoteListDisplayStrings(remotes []*models.Remote, diffName string) [][]string { +func GetRemoteListDisplayStrings( + remotes []*models.Remote, + diffName string, + getItemOperation func(item types.HasUrn) types.ItemOperation, + tr *i18n.TranslationSet, +) [][]string { return lo.Map(remotes, func(remote *models.Remote, _ int) []string { diffed := remote.Name == diffName - return getRemoteDisplayStrings(remote, diffed) + return getRemoteDisplayStrings(remote, diffed, getItemOperation(remote), tr) }) } // getRemoteDisplayStrings returns the display string of branch -func getRemoteDisplayStrings(r *models.Remote, diffed bool) []string { +func getRemoteDisplayStrings( + r *models.Remote, + diffed bool, + itemOperation types.ItemOperation, + tr *i18n.TranslationSet, +) []string { branchCount := len(r.Branches) textStyle := theme.DefaultTextColor @@ -28,6 +43,11 @@ func getRemoteDisplayStrings(r *models.Remote, diffed bool) []string { if icons.IsIconEnabled() { res = append(res, textStyle.Sprint(icons.IconForRemote(r))) } - res = append(res, textStyle.Sprint(r.Name), style.FgBlue.Sprintf("%d branches", branchCount)) + descriptionStr := style.FgBlue.Sprintf("%d branches", branchCount) + itemOperationStr := ItemOperationToString(itemOperation, tr) + if itemOperationStr != "" { + descriptionStr += " " + style.FgCyan.Sprint(itemOperationStr+" "+utils.Loader(time.Now())) + } + res = append(res, textStyle.Sprint(r.Name), descriptionStr) return res } diff --git a/pkg/gui/types/common.go b/pkg/gui/types/common.go index 86bf63548..91aec4913 100644 --- a/pkg/gui/types/common.go +++ b/pkg/gui/types/common.go @@ -308,6 +308,7 @@ const ( ItemOperationPulling ItemOperationFastForwarding ItemOperationDeleting + ItemOperationFetching ) type HasUrn interface { |