123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import * as Sentry from '@sentry/react';
- import {fetchOrganizationDetails} from 'sentry/actionCreators/organization';
- import {Client} from 'sentry/api';
- import ConfigStore from 'sentry/stores/configStore';
- import GuideStore from 'sentry/stores/guideStore';
- import type {Organization} from 'sentry/types/organization';
- import {trackAnalytics} from 'sentry/utils/analytics';
- import {getTourTask, isDemoWalkthrough} from 'sentry/utils/demoMode';
- import {demoEndModal} from './modal';
- import {updateOnboardingTask} from './onboardingTasks';
- const api = new Client();
- export async function fetchGuides() {
- try {
- const data = await api.requestPromise('/assistant/');
- GuideStore.fetchSucceeded(data);
- } catch (err) {
- if (err.status !== 401 && err.status !== 403) {
- Sentry.captureException(err);
- }
- }
- }
- export function registerAnchor(target: string) {
- GuideStore.registerAnchor(target);
- }
- export function unregisterAnchor(target: string) {
- GuideStore.unregisterAnchor(target);
- }
- export function nextStep() {
- GuideStore.nextStep();
- }
- export function setForceHide(forceHide: boolean) {
- GuideStore.setForceHide(forceHide);
- }
- export function toStep(step: number) {
- GuideStore.toStep(step);
- }
- export function closeGuide(dismissed?: boolean) {
- GuideStore.closeGuide(dismissed);
- }
- export function dismissGuide(guide: string, step: number, orgId: string | null) {
- recordDismiss(guide, step, orgId);
- closeGuide(true);
- }
- export function recordFinish(
- guide: string,
- orgId: string | null,
- orgSlug: string | null,
- org: Organization | null
- ) {
- api.requestPromise('/assistant/', {
- method: 'PUT',
- data: {
- guide,
- status: 'viewed',
- },
- });
- const tourTask = getTourTask(guide);
- if (isDemoWalkthrough() && tourTask && org) {
- const {tour, task} = tourTask;
- updateOnboardingTask(api, org, {task, status: 'complete', completionSeen: true});
- fetchOrganizationDetails(api, org.slug, true, false);
- demoEndModal({tour, orgSlug});
- }
- const user = ConfigStore.get('user');
- if (!user) {
- return;
- }
- trackAnalytics('assistant.guide_finished', {
- organization: orgId,
- guide,
- });
- }
- export function recordDismiss(guide: string, step: number, orgId: string | null) {
- api.requestPromise('/assistant/', {
- method: 'PUT',
- data: {
- guide,
- status: 'dismissed',
- },
- });
- const user = ConfigStore.get('user');
- if (!user) {
- return;
- }
- trackAnalytics('assistant.guide_dismissed', {
- organization: orgId,
- guide,
- step,
- });
- }
|