diff --git a/ui/pages/repo/files.go b/ui/pages/repo/files.go index bed41f0d3410b90c698d5a7b7c80467ecaa11d53..23784a7f8a4af534078deb9eeffc0d22ad5fcd05 100644 --- a/ui/pages/repo/files.go +++ b/ui/pages/repo/files.go @@ -265,6 +265,14 @@ func (f *Files) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } } + case EmptyRepoMsg: + f.ref = nil + f.path = "" + f.currentItem = nil + f.activeView = filesViewFiles + f.lastSelected = make([]int, 0) + f.selector.Select(0) + cmds = append(cmds, f.setItems([]selector.IdentifiableItem{})) } switch f.activeView { case filesViewFiles: @@ -398,3 +406,9 @@ func (f *Files) deselectItemCmd() tea.Msg { f.selector.Select(index) return msg } + +func (f *Files) setItems(items []selector.IdentifiableItem) tea.Cmd { + return func() tea.Msg { + return FileItemsMsg(items) + } +} diff --git a/ui/pages/repo/log.go b/ui/pages/repo/log.go index 92bdb53ddcafa6df849bbb460a47525d9dcf7eaf..3bc4f35dace61425eb6e6bc415d57a14c0df9e2f 100644 --- a/ui/pages/repo/log.go +++ b/ui/pages/repo/log.go @@ -299,6 +299,16 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) { l.startLoading(), ) } + case EmptyRepoMsg: + l.ref = nil + l.loading = false + l.activeView = logViewCommits + l.nextPage = 0 + l.count = 0 + l.activeCommit = nil + l.selectedCommit = nil + l.selector.Select(0) + cmds = append(cmds, l.setItems([]selector.IdentifiableItem{})) } if l.loading { s, cmd := l.spinner.Update(msg) @@ -486,3 +496,9 @@ func (l *Log) renderDiff(diff *ggit.Diff) string { } return wrap.String(s.String(), l.common.Width) } + +func (l *Log) setItems(items []selector.IdentifiableItem) tea.Cmd { + return func() tea.Msg { + return LogItemsMsg(items) + } +} diff --git a/ui/pages/repo/refs.go b/ui/pages/repo/refs.go index 0868c578e2c86eb2cdfc6490e73bda7f01b58c0e..f1386880763610593cff5a552f0d39aaf4d4efc1 100644 --- a/ui/pages/repo/refs.go +++ b/ui/pages/repo/refs.go @@ -139,6 +139,9 @@ func (r *Refs) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case key.Matches(msg, r.common.KeyMap.SelectItem): cmds = append(cmds, r.selector.SelectItem) } + case EmptyRepoMsg: + r.ref = nil + cmds = append(cmds, r.setItems([]selector.IdentifiableItem{})) } m, cmd := r.selector.Update(msg) r.selector = m.(*selector.Selector) @@ -193,6 +196,15 @@ func (r *Refs) updateItemsCmd() tea.Msg { } } +func (r *Refs) setItems(items []selector.IdentifiableItem) tea.Cmd { + return func() tea.Msg { + return RefItemsMsg{ + items: items, + prefix: r.refPrefix, + } + } +} + func switchRefCmd(ref *ggit.Reference) tea.Cmd { return func() tea.Msg { return RefMsg(ref) diff --git a/ui/pages/repo/repo.go b/ui/pages/repo/repo.go index 37b21fa136cd4050fc5f731de1d027859070537c..2d4c6845ef8ddb3f9f18555524dd0a6e7eba9f30 100644 --- a/ui/pages/repo/repo.go +++ b/ui/pages/repo/repo.go @@ -261,8 +261,12 @@ func (r *Repo) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case tea.WindowSizeMsg: cmds = append(cmds, r.updateModels(msg)) case EmptyRepoMsg: + r.ref = nil r.state = readyState - cmds = append(cmds, r.updateStatusBarCmd) + cmds = append(cmds, + r.updateModels(msg), + r.updateStatusBarCmd, + ) case common.ErrorMsg: r.state = readyState }