prioritySort.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import ConfigStore from 'sentry/stores/configStore';
  2. import {Organization} from 'sentry/types';
  3. export function prioritySortExperimentEnabled(organization: Organization) {
  4. /**
  5. * Return true if the experiment is enabled for this organization and that we should log the experiment
  6. */
  7. return (
  8. organization.isEarlyAdopter &&
  9. organization.features.includes('better-priority-sort-experiment') &&
  10. !organization.features.includes('issue-list-better-priority-sort') // exclude orgs explicitly on
  11. );
  12. }
  13. export function getPrioritySortVariant(organization: Organization) {
  14. /**
  15. * Return the priority variant for this organization.
  16. * If the experiment is not enabled, return undefined
  17. */
  18. const user = ConfigStore.get('user');
  19. const _variant = user.experiments?.PrioritySortExperiment || 'baseline';
  20. // check if the experiment is active
  21. const isInExperiment = prioritySortExperimentEnabled(organization);
  22. // feature flag override to force variant1
  23. // otherwise let the experiment decide
  24. return organization.features.includes('issue-list-better-priority-sort')
  25. ? 'variant1'
  26. : isInExperiment
  27. ? _variant
  28. : undefined;
  29. }
  30. export function enablePrioritySortByDefault(organization: Organization) {
  31. /**
  32. * Returns true if the new priority sort should be enabled by default
  33. */
  34. return getPrioritySortVariant(organization) !== undefined;
  35. }