Implement prevpage nextpage

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-05-19 21:58:26 +02:00
parent dcf9cb4c8e
commit c6bca887cb
2 changed files with 83 additions and 0 deletions
+54
View File
@@ -289,6 +289,60 @@ func (m Model) updateNormalMode(msg tea.KeyPressMsg, cmds *[]tea.Cmd) (tea.Model
m.refreshListViewport() m.refreshListViewport()
m.refreshResponseListViewport() m.refreshResponseListViewport()
m.refreshBody() 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...) return m, tea.Batch(*cmds...)
+29
View File
@@ -128,6 +128,35 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.textarea.Focus() 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): case key.Matches(msg, g.ScrollUp):
step := m.detailViewport.Height() / 2 step := m.detailViewport.Height() / 2
if step < 1 { if step < 1 {