refactor server repo

This commit is contained in:
Adem Baccara
2025-08-25 11:59:21 +01:00
parent adc843f1cf
commit b3d343cf2e
11 changed files with 647 additions and 448 deletions
+49 -28
View File
@@ -37,7 +37,7 @@ func (t *tui) handleGlobalKeys(event *tcell.EventKey) *tcell.EventKey {
switch event.Rune() {
case 'q':
t.app.Stop()
t.handleQuit()
return nil
case '/':
t.handleSearchToggle()
@@ -52,41 +52,19 @@ func (t *tui) handleGlobalKeys(event *tcell.EventKey) *tcell.EventKey {
t.handleServerDelete()
return nil
case 'p':
if server, ok := t.serverList.GetSelectedServer(); ok {
pinned := server.PinnedAt.IsZero()
_ = t.serverService.SetPinned(server.Alias, pinned)
t.refreshServerList()
}
t.handleServerPin()
return nil
case 's':
t.sortMode = t.sortMode.ToggleField()
t.showStatusTemp("Sort: " + t.sortMode.String())
t.updateListTitle()
t.refreshServerList()
t.handleSortToggle()
return nil
case 'S':
t.sortMode = t.sortMode.Reverse()
t.showStatusTemp("Sort: " + t.sortMode.String())
t.updateListTitle()
t.refreshServerList()
t.handleSortReverse()
return nil
case 'c':
if server, ok := t.serverList.GetSelectedServer(); ok {
cmd := BuildSSHCommand(server)
if err := clipboard.WriteAll(cmd); err == nil {
t.showStatusTemp("Copied: " + cmd)
} else {
t.showStatusTemp("Failed to copy to clipboard")
}
}
t.handleCopyCommand()
return nil
case 't':
if server, ok := t.serverList.GetSelectedServer(); ok {
// Quick edit tags for current server
t.showEditTagsForm(server)
}
t.handleTagsEdit()
return nil
case '?':
t.handleHelpShow()
@@ -101,6 +79,49 @@ func (t *tui) handleGlobalKeys(event *tcell.EventKey) *tcell.EventKey {
return event
}
func (t *tui) handleQuit() {
t.app.Stop()
}
func (t *tui) handleServerPin() {
if server, ok := t.serverList.GetSelectedServer(); ok {
pinned := server.PinnedAt.IsZero()
_ = t.serverService.SetPinned(server.Alias, pinned)
t.refreshServerList()
}
}
func (t *tui) handleSortToggle() {
t.sortMode = t.sortMode.ToggleField()
t.showStatusTemp("Sort: " + t.sortMode.String())
t.updateListTitle()
t.refreshServerList()
}
func (t *tui) handleSortReverse() {
t.sortMode = t.sortMode.Reverse()
t.showStatusTemp("Sort: " + t.sortMode.String())
t.updateListTitle()
t.refreshServerList()
}
func (t *tui) handleCopyCommand() {
if server, ok := t.serverList.GetSelectedServer(); ok {
cmd := BuildSSHCommand(server)
if err := clipboard.WriteAll(cmd); err == nil {
t.showStatusTemp("Copied: " + cmd)
} else {
t.showStatusTemp("Failed to copy to clipboard")
}
}
}
func (t *tui) handleTagsEdit() {
if server, ok := t.serverList.GetSelectedServer(); ok {
t.showEditTagsForm(server)
}
}
func (t *tui) handleSearchInput(query string) {
filtered, _ := t.serverService.ListServers(query)
sortServersForUI(filtered, t.sortMode)
-1
View File
@@ -51,7 +51,6 @@ func renderTagChips(tags []string) string {
}
chips := make([]string, 0, len(tags))
for _, t := range tags {
// Foreground black on a bluish background to resemble a tag/chip.
chips = append(chips, fmt.Sprintf("[black:#5FAFFF] %s [-:-:-]", t))
}
return strings.Join(chips, " ")
+1 -1
View File
@@ -17,10 +17,10 @@ package ui
import (
"time"
"github.com/gdamore/tcell/v2"
"go.uber.org/zap"
"github.com/Adembc/lazyssh/internal/core/ports"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
-7
View File
@@ -23,13 +23,6 @@ import (
"github.com/mattn/go-runewidth"
)
func joinTags(tags []string) string {
if len(tags) == 0 {
return "-"
}
return strings.Join(tags, ",")
}
// renderTagBadgesForList renders up to two colored tag chips for the server list.
// If there are more tags, it appends a subtle gray "+N" badge. Returns an empty
// string when there are no tags to avoid cluttering the list.