guides.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import GuideActions from 'sentry/actions/guideActions';
  2. import {Client} from 'sentry/api';
  3. import ConfigStore from 'sentry/stores/configStore';
  4. import {trackAnalyticsEvent} from 'sentry/utils/analytics';
  5. const api = new Client();
  6. export function fetchGuides() {
  7. api.request('/assistant/?v2', {
  8. method: 'GET',
  9. success: data => {
  10. GuideActions.fetchSucceeded(data);
  11. },
  12. });
  13. }
  14. export function registerAnchor(target: string) {
  15. GuideActions.registerAnchor(target);
  16. }
  17. export function unregisterAnchor(target: string) {
  18. GuideActions.unregisterAnchor(target);
  19. }
  20. export function nextStep() {
  21. GuideActions.nextStep();
  22. }
  23. export function setForceHide(forceHide: boolean) {
  24. GuideActions.setForceHide(forceHide);
  25. }
  26. export function toStep(step: number) {
  27. GuideActions.toStep(step);
  28. }
  29. export function closeGuide(dismissed?: boolean) {
  30. GuideActions.closeGuide(dismissed);
  31. }
  32. export function dismissGuide(guide: string, step: number, orgId: string | null) {
  33. recordDismiss(guide, step, orgId);
  34. closeGuide(true);
  35. }
  36. export function recordFinish(guide: string, orgId: string | null) {
  37. api.request('/assistant/', {
  38. method: 'PUT',
  39. data: {
  40. guide,
  41. status: 'viewed',
  42. },
  43. });
  44. const user = ConfigStore.get('user');
  45. if (!user) {
  46. return;
  47. }
  48. const data = {
  49. eventKey: 'assistant.guide_finished',
  50. eventName: 'Assistant Guide Finished',
  51. guide,
  52. organization_id: orgId,
  53. user_id: parseInt(user.id, 10),
  54. };
  55. trackAnalyticsEvent(data);
  56. }
  57. export function recordDismiss(guide: string, step: number, orgId: string | null) {
  58. api.request('/assistant/', {
  59. method: 'PUT',
  60. data: {
  61. guide,
  62. status: 'dismissed',
  63. },
  64. });
  65. const user = ConfigStore.get('user');
  66. if (!user) {
  67. return;
  68. }
  69. const data = {
  70. eventKey: 'assistant.guide_dismissed',
  71. eventName: 'Assistant Guide Dismissed',
  72. guide,
  73. step,
  74. organization_id: orgId,
  75. user_id: parseInt(user.id, 10),
  76. };
  77. trackAnalyticsEvent(data);
  78. }