diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-09 19:07:39 +0200 |
|---|---|---|
| committer | Kujtim Hoxha <[email protected]> | 2025-04-09 19:07:39 +0200 |
| commit | d39d52d95d6aaab67fb3a17efb9ed62cc290e72f (patch) | |
| tree | 940bad6f0c847ceb213e5fc684b6d87cbf9d6996 /internal/tui/tui.go | |
| parent | 0d8d324ac6e640b95f4f2f62fd189399a959319a (diff) | |
| download | opencode-d39d52d95d6aaab67fb3a17efb9ed62cc290e72f.tar.gz opencode-d39d52d95d6aaab67fb3a17efb9ed62cc290e72f.zip | |
finish logs page
Diffstat (limited to 'internal/tui/tui.go')
| -rw-r--r-- | internal/tui/tui.go | 84 |
1 files changed, 62 insertions, 22 deletions
diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 314e0f17a..c94a6b020 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -5,6 +5,7 @@ import ( tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" "github.com/kujtimiihoxha/termai/internal/app" + "github.com/kujtimiihoxha/termai/internal/logging" "github.com/kujtimiihoxha/termai/internal/permission" "github.com/kujtimiihoxha/termai/internal/pubsub" "github.com/kujtimiihoxha/termai/internal/tui/components/core" @@ -74,22 +75,9 @@ func (a appModel) Init() tea.Cmd { } func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + var cmds []tea.Cmd + var cmd tea.Cmd switch msg := msg.(type) { - case pubsub.Event[permission.PermissionRequest]: - return a, dialog.NewPermissionDialogCmd(msg.Payload) - case pubsub.Event[util.InfoMsg]: - a.status, _ = a.status.Update(msg) - case dialog.PermissionResponseMsg: - switch msg.Action { - case dialog.PermissionAllow: - a.app.Permissions.Grant(msg.Permission) - case dialog.PermissionAllowForSession: - a.app.Permissions.GrantPersistant(msg.Permission) - case dialog.PermissionDeny: - a.app.Permissions.Deny(msg.Permission) - } - case vimtea.EditorModeMsg: - a.editorMode = msg.Mode case tea.WindowSizeMsg: var cmds []tea.Cmd msg.Height -= 1 // Make space for the status bar @@ -109,6 +97,58 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { a.dialog = d.(core.DialogCmp) return a, tea.Batch(cmds...) + + // Status + case util.InfoMsg: + a.status, cmd = a.status.Update(msg) + return a, cmd + case pubsub.Event[logging.LogMessage]: + if msg.Payload.Persist { + switch msg.Payload.Level { + case "error": + a.status, cmd = a.status.Update(util.InfoMsg{ + Type: util.InfoTypeError, + Msg: msg.Payload.Message, + TTL: msg.Payload.PersistTime, + }) + case "info": + a.status, cmd = a.status.Update(util.InfoMsg{ + Type: util.InfoTypeInfo, + Msg: msg.Payload.Message, + TTL: msg.Payload.PersistTime, + }) + case "warn": + a.status, cmd = a.status.Update(util.InfoMsg{ + Type: util.InfoTypeWarn, + Msg: msg.Payload.Message, + TTL: msg.Payload.PersistTime, + }) + + default: + a.status, cmd = a.status.Update(util.InfoMsg{ + Type: util.InfoTypeInfo, + Msg: msg.Payload.Message, + TTL: msg.Payload.PersistTime, + }) + } + } + case util.ClearStatusMsg: + a.status, _ = a.status.Update(msg) + + // Permission + case pubsub.Event[permission.PermissionRequest]: + return a, dialog.NewPermissionDialogCmd(msg.Payload) + case dialog.PermissionResponseMsg: + switch msg.Action { + case dialog.PermissionAllow: + a.app.Permissions.Grant(msg.Permission) + case dialog.PermissionAllowForSession: + a.app.Permissions.GrantPersistant(msg.Permission) + case dialog.PermissionDeny: + a.app.Permissions.Deny(msg.Permission) + } + + // Dialog case core.DialogMsg: d, cmd := a.dialog.Update(msg) a.dialog = d.(core.DialogCmp) @@ -119,10 +159,13 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { a.dialog = d.(core.DialogCmp) a.dialogVisible = false return a, cmd + + // Editor + case vimtea.EditorModeMsg: + a.editorMode = msg.Mode + case page.PageChangeMsg: return a, a.moveToPage(msg.ID) - case util.InfoMsg: - a.status, _ = a.status.Update(msg) case tea.KeyMsg: if a.editorMode == vimtea.ModeNormal { switch { @@ -162,9 +205,7 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } - var cmds []tea.Cmd - s, cmd := a.status.Update(msg) - a.status = s + a.status, cmd = a.status.Update(msg) cmds = append(cmds, cmd) if a.dialogVisible { d, cmd := a.dialog.Update(msg) @@ -172,8 +213,7 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmds = append(cmds, cmd) return a, tea.Batch(cmds...) } - p, cmd := a.pages[a.currentPage].Update(msg) - a.pages[a.currentPage] = p + a.pages[a.currentPage], cmd = a.pages[a.currentPage].Update(msg) cmds = append(cmds, cmd) return a, tea.Batch(cmds...) } |
