From 216803f325853b21672a47c5a80a44b3d2ec42cf Mon Sep 17 00:00:00 2001 From: David Dworken Date: Mon, 18 Sep 2023 22:21:10 -0700 Subject: [PATCH] Bring back logic that was removed in c9da7a10e4e6c93d7b7a89562f217e1e54244fbd that made it so invalid initial search queries will get replaced with a query for the empty string --- client/client_test.go | 2 +- .../goldens/testRemoveDuplicateRows-tquery | 4 --- client/tui/tui.go | 25 +++++++++++++------ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/client/client_test.go b/client/client_test.go index 63bdb76..6fa28ec 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -2522,7 +2522,7 @@ echo foo`) out = tester.RunInteractiveShell(t, `hishtory query -pipefail`) testutils.CompareGoldens(t, out, "testRemoveDuplicateRows-query") out = captureTerminalOutput(t, tester, []string{"hishtory SPACE tquery SPACE -pipefail ENTER"}) - out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1]) + out = strings.TrimSpace(strings.Split(out, "hishtory tquery -pipefail")[1]) testutils.CompareGoldens(t, out, "testRemoveDuplicateRows-tquery") // And change the config to filter out duplicate rows diff --git a/client/lib/goldens/testRemoveDuplicateRows-tquery b/client/lib/goldens/testRemoveDuplicateRows-tquery index 9bb828f..a33fe72 100644 --- a/client/lib/goldens/testRemoveDuplicateRows-tquery +++ b/client/lib/goldens/testRemoveDuplicateRows-tquery @@ -1,7 +1,3 @@ --pipefail - - - Search Query: > -pipefail ┌───────────────────────────────────────────────────────────────────────────┐ diff --git a/client/tui/tui.go b/client/tui/tui.go index aec977f..e0d73fa 100644 --- a/client/tui/tui.go +++ b/client/tui/tui.go @@ -181,11 +181,12 @@ type bannerMsg struct { banner string } type asyncQueryFinishedMsg struct { - rows []table.Row - entries []*data.HistoryEntry - searchErr error - forceUpdateTable bool - maintainCursor bool + rows []table.Row + entries []*data.HistoryEntry + searchErr error + forceUpdateTable bool + maintainCursor bool + overriddenSearchQuery *string } func initialModel(ctx context.Context, initialQuery string) model { @@ -266,7 +267,7 @@ func runQueryAndUpdateTable(m model, forceUpdateTable, maintainCursor bool) tea. } return func() tea.Msg { rows, entries, searchErr := getRows(m.ctx, hctx.GetConf(m.ctx).DisplayedColumns, query, PADDED_NUM_ENTRIES) - return asyncQueryFinishedMsg{rows, entries, searchErr, forceUpdateTable, maintainCursor} + return asyncQueryFinishedMsg{rows, entries, searchErr, forceUpdateTable, maintainCursor, nil} } } return nil @@ -338,6 +339,9 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, nil case asyncQueryFinishedMsg: m = updateTable(m, msg.rows, msg.entries, msg.searchErr, msg.forceUpdateTable, msg.maintainCursor) + if msg.overriddenSearchQuery != nil { + m.queryInput.SetValue(*msg.overriddenSearchQuery) + } return m, nil default: var cmd tea.Cmd @@ -607,7 +611,14 @@ func TuiQuery(ctx context.Context, initialQuery string) error { // Async: Get the initial set of rows go func() { rows, entries, err := getRows(ctx, hctx.GetConf(ctx).DisplayedColumns, initialQuery, PADDED_NUM_ENTRIES) - p.Send(asyncQueryFinishedMsg{rows: rows, entries: entries, searchErr: err, forceUpdateTable: true, maintainCursor: false}) + if err == nil || initialQuery == "" { + p.Send(asyncQueryFinishedMsg{rows: rows, entries: entries, searchErr: err, forceUpdateTable: true, maintainCursor: false, overriddenSearchQuery: nil}) + } else { + // initialQuery is likely invalid in some way, let's just drop it + emptyQuery := "" + rows, entries, err := getRows(ctx, hctx.GetConf(ctx).DisplayedColumns, emptyQuery, PADDED_NUM_ENTRIES) + p.Send(asyncQueryFinishedMsg{rows: rows, entries: entries, searchErr: err, forceUpdateTable: true, maintainCursor: false, overriddenSearchQuery: &emptyQuery}) + } }() // Async: Retrieve additional entries from the backend go func() {