useQueryBasedSorting.tsx 886 B

123456789101112131415161718192021222324
  1. import {useMemo} from 'react';
  2. import type {Location} from 'history';
  3. import first from 'lodash/first';
  4. import {GridColumnOrder} from 'sentry/components/gridEditable';
  5. import queryBasedSortLinkGenerator from 'sentry/components/replays/queryBasedSortLinkGenerator';
  6. import {fromSorts} from 'sentry/utils/discover/eventView';
  7. import type {Sort} from 'sentry/utils/discover/fields';
  8. interface Props {
  9. defaultSort: Sort;
  10. location: Location<{sort?: undefined | string}>;
  11. }
  12. export default function useQueryBasedSorting({location, defaultSort}: Props) {
  13. const sorts = useMemo(() => fromSorts(location.query.sort), [location.query.sort]);
  14. const currentSort = useMemo(() => first(sorts) ?? defaultSort, [defaultSort, sorts]);
  15. return {
  16. makeSortLinkGenerator: (column: GridColumnOrder) =>
  17. queryBasedSortLinkGenerator(location, column, currentSort),
  18. currentSort,
  19. };
  20. }