Skip to content

Commit 1f2e37e

Browse files
fix: copilot review
1 parent 5eeadb3 commit 1f2e37e

File tree

4 files changed

+54
-29
lines changed

4 files changed

+54
-29
lines changed

src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,14 @@ export default function QueryEditor(props: QueryEditorProps) {
7777
const result = useTypedSelector(selectResult);
7878
const showPreview = useTypedSelector(selectShowPreview);
7979

80-
const {historyQueries, historyCurrentIndex, saveQueryToHistory, updateQueryInHistory} =
81-
useQueriesHistory();
80+
const {
81+
historyQueries,
82+
historyCurrentIndex,
83+
saveQueryToHistory,
84+
updateQueryInHistory,
85+
goToPreviousQuery,
86+
goToNextQuery,
87+
} = useQueriesHistory();
8288

8389
const isResultLoaded = Boolean(result);
8490

@@ -188,6 +194,7 @@ export default function QueryEditor(props: QueryEditorProps) {
188194
}
189195
})
190196
.catch((error) => {
197+
// Do not add query stats for failed query
191198
console.error('Failed to update query history:', error);
192199
});
193200

@@ -288,6 +295,9 @@ export default function QueryEditor(props: QueryEditorProps) {
288295
theme={theme}
289296
handleSendExecuteClick={handleSendExecuteClick}
290297
handleGetExplainQueryClick={handleGetExplainQueryClick}
298+
historyQueries={historyQueries}
299+
goToPreviousQuery={goToPreviousQuery}
300+
goToNextQuery={goToNextQuery}
291301
/>
292302
</div>
293303
</div>

src/containers/Tenant/Query/QueryEditor/YqlEditor.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type Monaco from 'monaco-editor';
77

88
import {MonacoEditor} from '../../../../components/MonacoEditor/MonacoEditor';
99
import {selectUserInput, setIsDirty} from '../../../../store/reducers/query/query';
10-
import {useQueriesHistory} from '../../../../store/reducers/query/useQueriesHistory';
10+
import type {QueryInHistory} from '../../../../store/reducers/query/types';
1111
import {SETTING_KEYS} from '../../../../store/reducers/settings/constants';
1212
import type {QueryAction} from '../../../../types/store/query';
1313
import {
@@ -32,19 +32,24 @@ interface YqlEditorProps {
3232
theme: string;
3333
handleGetExplainQueryClick: (text: string) => void;
3434
handleSendExecuteClick: (text: string, partial?: boolean) => void;
35+
historyQueries: QueryInHistory[];
36+
goToPreviousQuery: () => void;
37+
goToNextQuery: () => void;
3538
}
3639

3740
export function YqlEditor({
3841
changeUserInput,
3942
theme,
4043
handleSendExecuteClick,
4144
handleGetExplainQueryClick,
45+
historyQueries,
46+
goToPreviousQuery,
47+
goToNextQuery,
4248
}: YqlEditorProps) {
4349
const input = useTypedSelector(selectUserInput);
4450
const dispatch = useTypedDispatch();
4551
const [monacoGhostInstance, setMonacoGhostInstance] =
4652
React.useState<ReturnType<typeof createMonacoGhostInstance>>();
47-
const {historyQueries, goToPreviousQuery, goToNextQuery} = useQueriesHistory();
4853
const [isCodeAssistEnabled] = useSetting(SETTING_KEYS.ENABLE_CODE_ASSISTANT);
4954

5055
const editorOptions = useEditorOptions();
@@ -71,7 +76,7 @@ export function YqlEditor({
7176
window.ydbEditor = undefined;
7277
};
7378

74-
const {monacoGhostConfig, prepareUserQueriesCache} = useCodeAssistHelpers();
79+
const {monacoGhostConfig, prepareUserQueriesCache} = useCodeAssistHelpers(historyQueries);
7580

7681
React.useEffect(() => {
7782
if (monacoGhostInstance && isCodeAssistEnabled) {

src/containers/Tenant/Query/QueryEditor/helpers.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {AcceptEvent, DeclineEvent, IgnoreEvent, PromptFile} from '@ydb-plat
44
import type Monaco from 'monaco-editor';
55

66
import {codeAssistApi} from '../../../../store/reducers/codeAssist/codeAssist';
7-
import {useQueriesHistory} from '../../../../store/reducers/query/useQueriesHistory';
7+
import type {QueryInHistory} from '../../../../store/reducers/query/types';
88
import {SETTING_KEYS} from '../../../../store/reducers/settings/constants';
99
import type {TelemetryOpenTabs} from '../../../../types/api/codeAssist';
1010
import {useSetting} from '../../../../utils/hooks';
@@ -39,13 +39,12 @@ export function useEditorOptions() {
3939
return options;
4040
}
4141

42-
export function useCodeAssistHelpers() {
42+
export function useCodeAssistHelpers(historyQueries: QueryInHistory[]) {
4343
const [sendCodeAssistPrompt] = codeAssistApi.useLazyGetCodeAssistSuggestionsQuery();
4444
const [acceptSuggestion] = codeAssistApi.useAcceptSuggestionMutation();
4545
const [discardSuggestion] = codeAssistApi.useDiscardSuggestionMutation();
4646
const [ignoreSuggestion] = codeAssistApi.useIgnoreSuggestionMutation();
4747
const [sendUserQueriesData] = codeAssistApi.useSendUserQueriesDataMutation();
48-
const {historyQueries} = useQueriesHistory();
4948
const {savedQueries} = useSavedQueries();
5049

5150
const getCodeAssistSuggestions = React.useCallback(

src/store/reducers/query/useQueriesHistory.ts

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -83,34 +83,45 @@ export function useQueriesHistory() {
8383
});
8484

8585
const saveQueryToHistory = useEventHandler((queryText: string, queryId: string) => {
86-
const newQueries = [...historyQueries, {queryText, queryId}].slice(
87-
historyQueries.length >= MAXIMUM_QUERIES_IN_HISTORY ? 1 : 0,
88-
);
89-
saveHistoryQueries(newQueries);
90-
setQueries(newQueries);
91-
// Update currentIndex to point to the newly added query
92-
const newCurrentIndex = newQueries.length - 1;
93-
setCurrentIndex(newCurrentIndex);
86+
setQueries((currentQueries) => {
87+
const newQueries = [...currentQueries, {queryText, queryId}].slice(
88+
historyQueries.length >= MAXIMUM_QUERIES_IN_HISTORY ? 1 : 0,
89+
);
90+
saveHistoryQueries(newQueries);
91+
92+
// Update currentIndex to point to the newly added query
93+
const newCurrentIndex = newQueries.length - 1;
94+
setCurrentIndex(newCurrentIndex);
95+
96+
return newQueries;
97+
});
9498
});
9599

96100
const updateQueryInHistory = useEventHandler((queryId: string, stats: QueryStats) => {
97-
if (!stats || !historyQueries.length) {
101+
if (!stats) {
98102
return;
99103
}
100104

101-
const index = historyQueries.findIndex((item) => item.queryId === queryId);
105+
setQueries((currentQueries) => {
106+
if (!currentQueries.length) {
107+
return currentQueries;
108+
}
102109

103-
if (index !== -1) {
104-
const newQueries = [...historyQueries];
105-
const {durationUs, endTime} = stats;
106-
newQueries.splice(index, 1, {
107-
...historyQueries[index],
108-
durationUs,
109-
endTime,
110-
});
111-
saveHistoryQueries(newQueries);
112-
setQueries(newQueries);
113-
}
110+
const index = currentQueries.findIndex((item) => item.queryId === queryId);
111+
112+
if (index !== -1) {
113+
const newQueries = [...currentQueries];
114+
const {durationUs, endTime} = stats;
115+
newQueries.splice(index, 1, {
116+
...currentQueries[index],
117+
durationUs,
118+
endTime,
119+
});
120+
saveHistoryQueries(newQueries);
121+
return newQueries;
122+
}
123+
return currentQueries;
124+
});
114125
});
115126

116127
return {

0 commit comments

Comments
 (0)