useQueryBasedSorting.tsx 853 B

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