diff --git a/src/store/reducers/query/query.ts b/src/store/reducers/query/query.ts index 215bc3637..47b9f8dcb 100644 --- a/src/store/reducers/query/query.ts +++ b/src/store/reducers/query/query.ts @@ -5,7 +5,12 @@ import {settingsManager} from '../../../services/settings'; import {TracingLevelNumber} from '../../../types/api/query'; import type {QueryAction, QueryRequestParams, QuerySettings} from '../../../types/store/query'; import type {StreamDataChunk} from '../../../types/store/streaming'; -import {QUERIES_HISTORY_KEY} from '../../../utils/constants'; +import {loadFromSessionStorage, saveToSessionStorage} from '../../../utils'; +import { + QUERIES_HISTORY_KEY, + QUERY_EDITOR_CURRENT_QUERY_KEY, + QUERY_EDITOR_DIRTY_KEY, +} from '../../../utils/constants'; import {isQueryErrorResponse} from '../../../utils/query'; import {isNumeric} from '../../../utils/utils'; import type {RootState} from '../../defaultStore'; @@ -29,9 +34,14 @@ const queriesHistoryInitial = settingsManager.readUserSettingsValue( const sliceLimit = queriesHistoryInitial.length - MAXIMUM_QUERIES_IN_HISTORY; +const rawQuery = loadFromSessionStorage(QUERY_EDITOR_CURRENT_QUERY_KEY); +const input = typeof rawQuery === 'string' ? rawQuery : ''; + +const isDirty = Boolean(loadFromSessionStorage(QUERY_EDITOR_DIRTY_KEY)); + const initialState: QueryState = { - input: '', - isDirty: false, + input, + isDirty, history: { queries: queriesHistoryInitial .slice(sliceLimit < 0 ? 0 : sliceLimit) @@ -50,9 +60,11 @@ const slice = createSlice({ reducers: { changeUserInput: (state, action: PayloadAction<{input: string}>) => { state.input = action.payload.input; + saveToSessionStorage(QUERY_EDITOR_CURRENT_QUERY_KEY, action.payload.input); }, setIsDirty: (state, action: PayloadAction) => { state.isDirty = action.payload; + saveToSessionStorage(QUERY_EDITOR_DIRTY_KEY, action.payload); }, setQueryResult: (state, action: PayloadAction) => { state.result = action.payload; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index ab3a8dec6..a41e27e20 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -116,6 +116,10 @@ export const INVERTED_DISKS_KEY = SETTING_KEYS.INVERTED_DISKS; export const SAVED_QUERIES_KEY = SETTING_KEYS.SAVED_QUERIES; export const ASIDE_HEADER_COMPACT_KEY = SETTING_KEYS.ASIDE_HEADER_COMPACT; export const QUERIES_HISTORY_KEY = 'queries_history'; + +export const QUERY_EDITOR_CURRENT_QUERY_KEY = 'query_editor_current_query'; +export const QUERY_EDITOR_DIRTY_KEY = 'query_editor_dirty'; + export const BINARY_DATA_IN_PLAIN_TEXT_DISPLAY = SETTING_KEYS.BINARY_DATA_IN_PLAIN_TEXT_DISPLAY; export const AUTO_REFRESH_INTERVAL = SETTING_KEYS.AUTO_REFRESH_INTERVAL; diff --git a/src/utils/index.ts b/src/utils/index.ts index 8de8c148c..4bfd7665f 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -17,3 +17,24 @@ export function normalizePathSlashes(path: string) { // (?