mode.tsx 699 B

1234567891011121314151617181920212223242526272829303132
  1. import type {Location} from 'history';
  2. import {defined} from 'sentry/utils';
  3. import {decodeScalar} from 'sentry/utils/queryString';
  4. export enum Mode {
  5. SAMPLES = 'samples',
  6. AGGREGATE = 'aggregate',
  7. }
  8. export function defaultMode(): Mode {
  9. return Mode.SAMPLES;
  10. }
  11. export function getModeFromLocation(location: Location): Mode {
  12. const rawMode = decodeScalar(location.query.mode);
  13. if (rawMode === 'aggregate') {
  14. return Mode.AGGREGATE;
  15. }
  16. return defaultMode();
  17. }
  18. export function updateLocationWithMode(
  19. location: Location,
  20. mode: Mode | null | undefined
  21. ) {
  22. if (defined(mode)) {
  23. location.query.mode = mode;
  24. } else if (mode === null) {
  25. delete location.query.mode;
  26. }
  27. }