diff --git a/internal/ui/intercept/update.go b/internal/ui/intercept/update.go index b40c89f..3ed3b14 100644 --- a/internal/ui/intercept/update.go +++ b/internal/ui/intercept/update.go @@ -289,6 +289,60 @@ func (m Model) updateNormalMode(msg tea.KeyPressMsg, cmds *[]tea.Cmd) (tea.Model m.refreshListViewport() m.refreshResponseListViewport() m.refreshBody() + + case key.Matches(msg, keys.Keys.Global.PrevPage): + if onResponses { + step := m.responsePager.PerPage + if step < 1 { + step = 1 + } + m.responseCursor -= step + if m.responseCursor < 0 { + m.responseCursor = 0 + } + } else { + step := m.pager.PerPage + if step < 1 { + step = 1 + } + m.cursor -= step + if m.cursor < 0 { + m.cursor = 0 + } + } + m.refreshListViewport() + m.refreshResponseListViewport() + m.refreshBody() + + case key.Matches(msg, keys.Keys.Global.NextPage): + if onResponses { + step := m.responsePager.PerPage + if step < 1 { + step = 1 + } + m.responseCursor += step + if m.responseCursor >= len(m.responseQueue) { + m.responseCursor = len(m.responseQueue) - 1 + if m.responseCursor < 0 { + m.responseCursor = 0 + } + } + } else { + step := m.pager.PerPage + if step < 1 { + step = 1 + } + m.cursor += step + if m.cursor >= len(m.queue) { + m.cursor = len(m.queue) - 1 + if m.cursor < 0 { + m.cursor = 0 + } + } + } + m.refreshListViewport() + m.refreshResponseListViewport() + m.refreshBody() } return m, tea.Batch(*cmds...) diff --git a/internal/ui/plugins/update.go b/internal/ui/plugins/update.go index db0435c..4b87bab 100644 --- a/internal/ui/plugins/update.go +++ b/internal/ui/plugins/update.go @@ -128,6 +128,35 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.textarea.Focus() } + case key.Matches(msg, g.PrevPage): + step := m.pager.PerPage + if step < 1 { + step = 1 + } + m.cursor -= step + if m.cursor < 0 { + m.cursor = 0 + } + m.recalcSizes() + m.syncTextarea() + m.detailViewport.GotoTop() + + case key.Matches(msg, g.NextPage): + step := m.pager.PerPage + if step < 1 { + step = 1 + } + m.cursor += step + if m.cursor >= len(m.filtered) { + m.cursor = len(m.filtered) - 1 + if m.cursor < 0 { + m.cursor = 0 + } + } + m.recalcSizes() + m.syncTextarea() + m.detailViewport.GotoTop() + case key.Matches(msg, g.ScrollUp): step := m.detailViewport.Height() / 2 if step < 1 {