Skip to content

Commit 8caa37e

Browse files
authored
fix(ourlogs): Let existing queries be saved (#100900)
### Summary This mimics the spans sidebar save as behaviour Closes LOGS-344
1 parent 387af2a commit 8caa37e

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

static/app/views/explore/logs/useSaveAsItems.tsx

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import {useMemo} from 'react';
22
import styled from '@emotion/styled';
3+
import * as Sentry from '@sentry/react';
34

5+
import {
6+
addErrorMessage,
7+
addLoadingMessage,
8+
addSuccessMessage,
9+
} from 'sentry/actionCreators/indicator';
410
import {openSaveQueryModal} from 'sentry/actionCreators/modal';
511
import Feature from 'sentry/components/acl/feature';
612
import {t} from 'sentry/locale';
@@ -27,7 +33,9 @@ import {
2733
import {handleAddQueryToDashboard} from 'sentry/views/discover/utils';
2834
import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
2935
import {formatSort} from 'sentry/views/explore/contexts/pageParamsContext/sortBys';
36+
import {useGetSavedQuery} from 'sentry/views/explore/hooks/useGetSavedQueries';
3037
import {useLogsSaveQuery} from 'sentry/views/explore/hooks/useSaveQuery';
38+
import {useQueryParamsId} from 'sentry/views/explore/queryParams/context';
3139
import type {Visualize} from 'sentry/views/explore/queryParams/visualize';
3240
import {TraceItemDataset} from 'sentry/views/explore/types';
3341
import {getAlertsUrl} from 'sentry/views/insights/common/utils/getAlertsUrl';
@@ -56,7 +64,9 @@ export function useSaveAsItems({
5664
const organization = useOrganization();
5765
const {projects} = useProjects();
5866
const pageFilters = usePageFilters();
59-
const {saveQuery} = useLogsSaveQuery();
67+
const {saveQuery, updateQuery} = useLogsSaveQuery();
68+
const id = useQueryParamsId();
69+
const {data: savedQuery} = useGetSavedQuery(id);
6070

6171
const project =
6272
projects.length === 1
@@ -69,6 +79,30 @@ export function useSaveAsItems({
6979
);
7080

7181
const saveAsQuery = useMemo(() => {
82+
// Show "Existing Query" if we have a non-prebuilt saved query, otherwise "A New Query"
83+
if (defined(id) && savedQuery?.isPrebuilt === false) {
84+
return {
85+
key: 'update-query',
86+
textValue: t('Existing Query'),
87+
label: <span>{t('Existing Query')}</span>,
88+
onAction: async () => {
89+
try {
90+
addLoadingMessage(t('Updating query...'));
91+
await updateQuery();
92+
addSuccessMessage(t('Query updated successfully'));
93+
trackAnalytics('logs.save_as', {
94+
save_type: 'update_query',
95+
ui_source: 'searchbar',
96+
organization,
97+
});
98+
} catch (error) {
99+
addErrorMessage(t('Failed to update query'));
100+
Sentry.captureException(error);
101+
}
102+
},
103+
};
104+
}
105+
72106
return {
73107
key: 'save-query',
74108
label: <span>{t('A New Query')}</span>,
@@ -88,7 +122,7 @@ export function useSaveAsItems({
88122
});
89123
},
90124
};
91-
}, [organization, saveQuery]);
125+
}, [id, savedQuery?.isPrebuilt, updateQuery, saveQuery, organization]);
92126

93127
const saveAsAlert = useMemo(() => {
94128
const alertsUrls = aggregates.map((yAxis: string, index: number) => {

0 commit comments

Comments
 (0)