mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
import {useMemo} from 'react';
|
|
|
|
import {t} from 'sentry/locale';
|
|
import type {SavedSearch} from 'sentry/types';
|
|
import {useLocation} from 'sentry/utils/useLocation';
|
|
import useOrganization from 'sentry/utils/useOrganization';
|
|
import {useParams} from 'sentry/utils/useParams';
|
|
import {useFetchSavedSearchesForOrg} from 'sentry/views/issueList/queries/useFetchSavedSearchesForOrg';
|
|
|
|
const PINNED_SEARCH_NAME = t('My Default Search');
|
|
|
|
// Uses the saved search ID in the URL and the cached response to return
|
|
// the selected saved search object
|
|
export const useSelectedSavedSearch = (): SavedSearch | null => {
|
|
const organization = useOrganization();
|
|
const location = useLocation();
|
|
const params = useParams();
|
|
|
|
const {data: savedSearches} = useFetchSavedSearchesForOrg(
|
|
{orgSlug: organization.slug},
|
|
{notifyOnChangeProps: ['data']}
|
|
);
|
|
|
|
const selectedSearchId: string | undefined = params.searchId;
|
|
|
|
// If there's no direct saved search being requested (via URL route)
|
|
// *AND* there's no query in URL, then check if there is pinned search
|
|
const selectedSavedSearch =
|
|
!selectedSearchId &&
|
|
(location.query.query === null || location.query.query === undefined)
|
|
? savedSearches?.find(search => search.isPinned)
|
|
: savedSearches?.find(({id}) => id === selectedSearchId);
|
|
|
|
return useMemo(
|
|
() =>
|
|
selectedSavedSearch?.isPinned
|
|
? {
|
|
...selectedSavedSearch,
|
|
name: PINNED_SEARCH_NAME,
|
|
}
|
|
: selectedSavedSearch ?? null,
|
|
[selectedSavedSearch]
|
|
);
|
|
};
|