demoMode.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import ConfigStore from 'sentry/stores/configStore';
  2. import {OnboardingTaskKey} from 'sentry/types';
  3. export function extraQueryParameter(): URLSearchParams {
  4. const extraQueryString = window.SandboxData?.extraQueryString || '';
  5. const extraQuery = new URLSearchParams(extraQueryString);
  6. return extraQuery;
  7. }
  8. export function extraQueryParameterWithEmail(): URLSearchParams {
  9. const params = extraQueryParameter();
  10. const email = localStorage.getItem('email');
  11. if (email) {
  12. params.append('email', email);
  13. }
  14. return params;
  15. }
  16. export function extraQueryParameterWithEmailV2(): URLSearchParams {
  17. const params = extraQueryParameter();
  18. const email = localStorage.getItem('email');
  19. if (email) {
  20. params.append('email', email);
  21. }
  22. params.append('referrer', 'sandbox-walkthrough');
  23. return params;
  24. }
  25. export function urlAttachQueryParams(url: string, params: URLSearchParams): string {
  26. const queryString = params.toString();
  27. if (queryString) {
  28. return url + '?' + queryString;
  29. }
  30. return url;
  31. }
  32. // For the Sandbox, we are testing a new walkthrough. This affects a few different components of Sentry including the Onboarding Sidebar, Onboarding Tasks, the Demo End Modal, Demo Sign Up Modal, Guides, and more.
  33. // Outside of the Sandbox, this should have no effect on other elements of Sentry.
  34. export function isDemoWalkthrough(): boolean {
  35. return ConfigStore.get('demoMode') && localStorage.getItem('new-walkthrough') === '1';
  36. }
  37. // Function to determine which tour has completed depending on the guide that is being passed in.
  38. export function getTourTask(
  39. guide: string
  40. ): {task: OnboardingTaskKey; tour: string} | undefined {
  41. switch (guide) {
  42. case 'sidebar_v2':
  43. return {tour: 'tabs', task: OnboardingTaskKey.SIDEBAR_GUIDE};
  44. case 'issues_v3':
  45. return {tour: 'issues', task: OnboardingTaskKey.ISSUE_GUIDE};
  46. case 'release-details_v2':
  47. return {tour: 'releases', task: OnboardingTaskKey.RELEASE_GUIDE};
  48. case 'transaction_details_v2':
  49. return {tour: 'performance', task: OnboardingTaskKey.PERFORMANCE_GUIDE};
  50. default:
  51. return undefined;
  52. }
  53. }