Skip to content

Commit 286dce1

Browse files
committed
update
1 parent 06b427e commit 286dce1

1 file changed

Lines changed: 53 additions & 3 deletions

File tree

internal/tui/model.go

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,33 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
189189
// Normal key handling for non-search states
190190
switch {
191191
case key.Matches(msg, m.keys.Quit):
192+
// Don't quit if we're in a done state waiting for user to continue
193+
if m.state == StateDeleting && len(m.deleteResults) == len(m.deletingRepos) {
194+
// Deletion done, return to list instead of quitting
195+
m.state = StateList
196+
m.selected = make(map[int]struct{})
197+
return m, fetchRepos(m.client)
198+
} else if m.state == StateArchiving && len(m.archiveResults) == len(m.archivingRepos) {
199+
// Archiving done, return to list instead of quitting
200+
m.state = StateList
201+
m.selected = make(map[int]struct{})
202+
return m, fetchRepos(m.client)
203+
} else if m.state == StateChangingVisibilityPrivate && len(m.visibilityResults) == len(m.changingVisibilityRepos) {
204+
// Visibility change done, return to list instead of quitting
205+
m.state = StateList
206+
m.selected = make(map[int]struct{})
207+
return m, fetchRepos(m.client)
208+
} else if m.state == StateChangingVisibilityPublic && len(m.visibilityResults) == len(m.changingVisibilityRepos) {
209+
// Visibility change done, return to list instead of quitting
210+
m.state = StateList
211+
m.selected = make(map[int]struct{})
212+
return m, fetchRepos(m.client)
213+
} else if m.state == StateBackingUp && len(m.backupResults) == len(m.backingUpRepos) {
214+
// Backup done, return to list instead of quitting
215+
m.state = StateList
216+
m.selected = make(map[int]struct{})
217+
return m, fetchRepos(m.client)
218+
}
192219
return m, tea.Quit
193220

194221
case msg.String() == "/":
@@ -313,7 +340,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
313340
}
314341

315342
case key.Matches(msg, m.keys.ToggleVisibilityPrivate):
316-
case key.Matches(msg, m.keys.ToggleVisibilityPrivate):
343+
317344
if m.state == StateList {
318345
if len(m.selected) == 0 {
319346
m.flashMessage = "No repos selected"
@@ -398,6 +425,29 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
398425
} else if m.state == StateConfirmVisibilityPublic {
399426
m.state = StateList
400427
}
428+
429+
case msg.String() == "" || msg.String() == "q": // Enter or q
430+
if m.state == StateDeleting && len(m.deleteResults) == len(m.deletingRepos) {
431+
m.state = StateList
432+
m.selected = make(map[int]struct{})
433+
return m, fetchRepos(m.client)
434+
} else if m.state == StateArchiving && len(m.archiveResults) == len(m.archivingRepos) {
435+
m.state = StateList
436+
m.selected = make(map[int]struct{})
437+
return m, fetchRepos(m.client)
438+
} else if m.state == StateChangingVisibilityPrivate && len(m.visibilityResults) == len(m.changingVisibilityRepos) {
439+
m.state = StateList
440+
m.selected = make(map[int]struct{})
441+
return m, fetchRepos(m.client)
442+
} else if m.state == StateChangingVisibilityPublic && len(m.visibilityResults) == len(m.changingVisibilityRepos) {
443+
m.state = StateList
444+
m.selected = make(map[int]struct{})
445+
return m, fetchRepos(m.client)
446+
} else if m.state == StateBackingUp && len(m.backupResults) == len(m.backingUpRepos) {
447+
m.state = StateList
448+
m.selected = make(map[int]struct{})
449+
return m, fetchRepos(m.client)
450+
}
401451
}
402452

403453
case flashTimeoutMsg:
@@ -551,10 +601,10 @@ func (m Model) View() string {
551601
"NAME", "VIS", "STAR", "FORK", "PUSHED", "FLAGS")) + "\n"
552602

553603
// Status Bar
554-
status := fmt.Sprintf(" %d selected | %d repos | ↑↓ navigate | space mark | / search | enter delete | A archive | q quit ",
604+
status := fmt.Sprintf(" %d selected | %d repos | ↑↓: navigate | space: mark | /: search | enter: delete | A: archive | p: private | P: public | B: backup | q: quit ",
555605
len(m.selected), len(m.filtered))
556606
if m.filterOpts.SearchQuery != "" {
557-
status = fmt.Sprintf(" 🔍 %q | %d results | %d selected | ↑↓ navigate | space mark | / search | enter delete | A archive | q quit ",
607+
status = fmt.Sprintf(" 🔍 %q | %d results | %d selected | ↑↓: navigate | space: mark | /: search | enter: delete | A: archive | p: private | P: public | B: backup | q: quit ",
558608
m.filterOpts.SearchQuery, len(m.filtered), len(m.selected))
559609
}
560610
statusBar := StatusBarStyle.Render(status)

0 commit comments

Comments
 (0)