diff --git a/internal/config/config.go b/internal/config/config.go index f41b0a2..54e318f 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -45,6 +45,7 @@ type Config struct { History struct { SkipDuplicates bool `mapstructure:"skip_duplicates"` + KeepResponses bool `mapstructure:"keep_responses"` } `mapstructure:"history"` Keybindings Keybindings `mapstructure:"keybindings"` diff --git a/internal/config/default_config.yaml b/internal/config/default_config.yaml index 27a74b1..f3122ea 100644 --- a/internal/config/default_config.yaml +++ b/internal/config/default_config.yaml @@ -17,6 +17,7 @@ replay: history: skip_duplicates: true # if true, skip saving entries with the same method, host, path and body + keep_responses: false # if true, response body and headers are stored in history tui: use_nerdfont_icons: false diff --git a/internal/intercept/broker.go b/internal/intercept/broker.go index a5076a6..c662a0d 100644 --- a/internal/intercept/broker.go +++ b/internal/intercept/broker.go @@ -177,7 +177,12 @@ func (b *Broker) SaveEntry(f *proxy.Flow) { Path: path, StatusCode: status, RequestRaw: FormatRawRequest(f), - ResponseRaw: FormatRawResponse(f), + ResponseRaw: func() string { + if config.Global.History.KeepResponses { + return FormatRawResponse(f) + } + return "" + }(), } if cb := b.onBeforeNewEntry; cb != nil { if !cb(pending) { diff --git a/internal/ui/history/update.go b/internal/ui/history/update.go index 6b2febc..28bcedc 100644 --- a/internal/ui/history/update.go +++ b/internal/ui/history/update.go @@ -6,6 +6,7 @@ import ( "charm.land/bubbles/v2/key" tea "charm.land/bubbletea/v2" + "charm.land/lipgloss/v2" "github.com/anotherhadi/spilltea/internal/db" "github.com/anotherhadi/spilltea/internal/keys" "github.com/anotherhadi/spilltea/internal/style" @@ -299,5 +300,10 @@ func (m *Model) refreshBody() { } else { raw = e.RequestRaw } + if raw == "" { + w, h := m.bodyViewport.Width(), m.bodyViewport.Height() + m.bodyViewport.SetContent(lipgloss.Place(w, h, lipgloss.Center, lipgloss.Center, style.S.Faint.Render(" (˘・_・˘)\nno response stored"))) + return + } m.bodyViewport.SetContent(style.HighlightHTTP(raw)) }