b079c14d4539e1ffa2ea4576cf2f073c9b96eb5d
- Author
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Committer
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/ui/keymap/keymap.go b/ui/keymap/keymap.go
2index fddfb11ca02ba92dd84e5286d88974ac236a098a..cf2cc2f74c166b0c628360b379c845613f79d3e9 100644
3--- a/ui/keymap/keymap.go
4+++ b/ui/keymap/keymap.go
5@@ -183,6 +183,7 @@ func DefaultKeyMap() *KeyMap {
6 key.WithKeys(
7 "h",
8 "left",
9+ "backspace",
10 ),
11 key.WithHelp(
12 "←",
13diff --git a/ui/pages/repo/files.go b/ui/pages/repo/files.go
14index 065c491f76d3d036e050eb182230b933efb0b2d5..745016102a4c169f60381927f28f036b59167041 100644
15--- a/ui/pages/repo/files.go
16+++ b/ui/pages/repo/files.go
17@@ -227,20 +227,21 @@ func (f *Files) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
18 cmds = append(cmds, f.selectFileCmd)
19 }
20 }
21+ case BackMsg:
22+ cmds = append(cmds, f.deselectItemCmd)
23 case tea.KeyMsg:
24 switch f.activeView {
25 case filesViewFiles:
26- switch msg.String() {
27- case "l", "right":
28+ switch {
29+ case key.Matches(msg, f.common.KeyMap.SelectItem):
30 cmds = append(cmds, f.selector.SelectItem)
31- case "h", "left":
32- cmds = append(cmds, f.deselectItemCmd)
33+ case key.Matches(msg, f.common.KeyMap.BackItem):
34+ cmds = append(cmds, backCmd)
35 }
36 case filesViewContent:
37- keyStr := msg.String()
38 switch {
39- case keyStr == "h", keyStr == "left":
40- cmds = append(cmds, f.deselectItemCmd)
41+ case key.Matches(msg, f.common.KeyMap.BackItem):
42+ cmds = append(cmds, backCmd)
43 case key.Matches(msg, f.common.KeyMap.Copy):
44 f.common.Copy.Copy(f.currentContent.content)
45 case key.Matches(msg, lineNo):
46diff --git a/ui/pages/repo/log.go b/ui/pages/repo/log.go
47index cd624e4402b76ee5e66837485c6b3d65a4eec295..a1511a5ff37db765010d83757d5ac92808d4c164 100644
48--- a/ui/pages/repo/log.go
49+++ b/ui/pages/repo/log.go
50@@ -211,10 +211,10 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
51 case tea.KeyMsg, tea.MouseMsg:
52 switch l.activeView {
53 case logViewCommits:
54- switch key := msg.(type) {
55+ switch kmsg := msg.(type) {
56 case tea.KeyMsg:
57- switch key.String() {
58- case "l", "right":
59+ switch {
60+ case key.Matches(kmsg, l.common.KeyMap.SelectItem):
61 cmds = append(cmds, l.selector.SelectItem)
62 }
63 }
64@@ -233,15 +233,19 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
65 }
66 cmds = append(cmds, cmd)
67 case logViewDiff:
68- switch key := msg.(type) {
69+ switch kmsg := msg.(type) {
70 case tea.KeyMsg:
71- switch key.String() {
72- case "h", "left":
73- l.activeView = logViewCommits
74- l.selectedCommit = nil
75+ switch {
76+ case key.Matches(kmsg, l.common.KeyMap.BackItem):
77+ cmds = append(cmds, backCmd)
78 }
79 }
80 }
81+ case BackMsg:
82+ if l.activeView == logViewDiff {
83+ l.activeView = logViewCommits
84+ l.selectedCommit = nil
85+ }
86 case selector.ActiveMsg:
87 switch sel := msg.IdentifiableItem.(type) {
88 case LogItem:
89diff --git a/ui/pages/repo/refs.go b/ui/pages/repo/refs.go
90index b5b6c7fedf72af1251ad84c30bc0676bc98d85ae..308a26288372c3ecbcaa4b9b985e51075fb4136f 100644
91--- a/ui/pages/repo/refs.go
92+++ b/ui/pages/repo/refs.go
93@@ -132,8 +132,8 @@ func (r *Refs) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
94 )
95 }
96 case tea.KeyMsg:
97- switch msg.String() {
98- case "l", "right":
99+ switch {
100+ case key.Matches(msg, r.common.KeyMap.SelectItem):
101 cmds = append(cmds, r.selector.SelectItem)
102 }
103 }
104diff --git a/ui/pages/repo/repo.go b/ui/pages/repo/repo.go
105index 808ae9286cc35b71d96771a1074f32455d3e8ee3..5d0d4a58bed8b35b4a6c5b2f47aeb898fabfbd86 100644
106--- a/ui/pages/repo/repo.go
107+++ b/ui/pages/repo/repo.go
108@@ -45,11 +45,11 @@ func (t tab) String() string {
109 }[t]
110 }
111
112-// CopyUrlMsg is a message to copy the URL of the current repository.
113-type CopyUrlMsg struct{}
114+// CopyURLMsg is a message to copy the URL of the current repository.
115+type CopyURLMsg struct{}
116
117-// ResetUrlMsg is a message to reset the URL string.
118-type ResetUrlMsg struct{}
119+// ResetURLMsg is a message to reset the URL string.
120+type ResetURLMsg struct{}
121
122 // UpdateStatusBarMsg updates the status bar.
123 type UpdateStatusBarMsg struct{}
124@@ -60,6 +60,9 @@ type RepoMsg git.GitRepo
125 // RefMsg is a message that contains a git.Reference.
126 type RefMsg *ggit.Reference
127
128+// BackMsg is a message to go back to the previous view.
129+type BackMsg struct{}
130+
131 // Repo is a view for a git repository.
132 type Repo struct {
133 common common.Common
134@@ -70,7 +73,7 @@ type Repo struct {
135 statusbar *statusbar.StatusBar
136 panes []common.Component
137 ref *ggit.Reference
138- copyUrl time.Time
139+ copyURL time.Time
140 }
141
142 // New returns a new Repo.
143@@ -198,20 +201,25 @@ func (r *Repo) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
144 cmds = append(cmds, r.updateStatusBarCmd)
145 switch msg := msg.(type) {
146 case tea.MouseMsg:
147- if msg.Type == tea.MouseLeft {
148+ switch msg.Type {
149+ case tea.MouseLeft:
150 id := fmt.Sprintf("%s-url", r.selectedRepo.Repo())
151 if r.common.Zone.Get(id).InBounds(msg) {
152 cmds = append(cmds, r.copyUrlCmd())
153 }
154+ case tea.MouseRight:
155+ if r.common.Zone.Get("repo-main").InBounds(msg) {
156+ cmds = append(cmds, backCmd)
157+ }
158 }
159 }
160 }
161- case CopyUrlMsg:
162+ case CopyURLMsg:
163 r.common.Copy.Copy(
164 git.RepoURL(r.cfg.Host, r.cfg.Port, r.selectedRepo.Repo()),
165 )
166- case ResetUrlMsg:
167- r.copyUrl = time.Time{}
168+ case ResetURLMsg:
169+ r.copyURL = time.Time{}
170 case ReadmeMsg:
171 case FileItemsMsg:
172 f, cmd := r.panes[filesTab].Update(msg)
173@@ -275,7 +283,10 @@ func (r *Repo) View() string {
174 r.common.Styles.Tabs.GetVerticalFrameSize()
175 mainStyle := repoBodyStyle.
176 Height(r.common.Height - hm)
177- main := r.panes[r.activeTab].View()
178+ main := r.common.Zone.Mark(
179+ "repo-main",
180+ r.panes[r.activeTab].View(),
181+ )
182 view := lipgloss.JoinVertical(lipgloss.Top,
183 r.headerView(),
184 r.tabs.View(),
185@@ -306,7 +317,7 @@ func (r *Repo) headerView() string {
186 Width(r.common.Width - lipgloss.Width(desc) - 1).
187 Align(lipgloss.Right)
188 url := git.RepoURL(cfg.Host, cfg.Port, r.selectedRepo.Repo())
189- if !r.copyUrl.IsZero() && r.copyUrl.Add(time.Second).After(time.Now()) {
190+ if !r.copyURL.IsZero() && r.copyURL.Add(time.Second).After(time.Now()) {
191 url = "copied!"
192 }
193 url = common.TruncateString(url, r.common.Width-lipgloss.Width(desc)-1)
194@@ -368,13 +379,13 @@ func (r *Repo) updateModels(msg tea.Msg) tea.Cmd {
195 }
196
197 func (r *Repo) copyUrlCmd() tea.Cmd {
198- r.copyUrl = time.Now()
199+ r.copyURL = time.Now()
200 return tea.Batch(
201 func() tea.Msg {
202- return CopyUrlMsg{}
203+ return CopyURLMsg{}
204 },
205 tea.Tick(time.Second, func(time.Time) tea.Msg {
206- return ResetUrlMsg{}
207+ return ResetURLMsg{}