git.iko.soy/parseable-macos
on master help sign in
Add Cmd+R keyboard shortcut to refresh the current query (#30)
4c2254eiko
ParseableViewer/App/AppState.swift+4
@@ -37,6 +37,10 @@ final class AppState {
37 /// Set by sidebar when user clicks a saved query; consumed by QueryView.
37 /// Set by sidebar when user clicks a saved query; consumed by QueryView.
38 var pendingSavedQuery: SavedQuery?
38 var pendingSavedQuery: SavedQuery?
39
39
40+ // MARK: - Query Refresh
41+ /// Incremented by the Cmd+R shortcut; QueryView observes changes to re-execute the current query.
42+ var queryRefreshToken = UUID()
43+
40 enum AppTab: String, CaseIterable, Identifiable {
44 enum AppTab: String, CaseIterable, Identifiable {
41 case query = "Query"
45 case query = "Query"
42 case liveTail = "Live Tail"
46 case liveTail = "Live Tail"
ParseableViewer/App/ParseableViewerApp.swift+7−1
@@ -22,12 +22,18 @@ struct ParseableViewerApp: App {
22
22
23 Divider()
23 Divider()
24
24
25+ Button("Refresh Query") {
26+ appState.queryRefreshToken = UUID()
27+ }
28+ .keyboardShortcut("r", modifiers: [.command])
29+ .disabled(!appState.isConnected)
30+
25 Button("Refresh Streams") {
31 Button("Refresh Streams") {
26 Task {
32 Task {
27 await appState.refreshStreams()
33 await appState.refreshStreams()
28 }
34 }
29 }
35 }
30− .keyboardShortcut("r", modifiers: [.command])
36+ .keyboardShortcut("r", modifiers: [.command, .shift])
31 .disabled(!appState.isConnected)
37 .disabled(!appState.isConnected)
32 }
38 }
33
39
ParseableViewer/Views/QueryView.swift+8
@@ -287,6 +287,14 @@ struct QueryView: View {
287 viewModel.cancelQuery()
287 viewModel.cancelQuery()
288 }
288 }
289 }
289 }
290+ .onChange(of: appState.queryRefreshToken) { _, _ in
291+ Task {
292+ await viewModel.executeQuery(
293+ client: appState.client,
294+ stream: appState.selectedStream
295+ )
296+ }
297+ }
290 .onChange(of: appState.pendingSavedQuery) { _, newQuery in
298 .onChange(of: appState.pendingSavedQuery) { _, newQuery in
291 if let query = newQuery {
299 if let query = newQuery {
292 viewModel.sqlQuery = query.sql
300 viewModel.sqlQuery = query.sql