123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import {useCallback} from 'react';
- import {SidebarPanelKey} from 'sentry/components/sidebar/types';
- import SidebarPanelStore from 'sentry/stores/sidebarPanelStore';
- import {trackAnalytics} from 'sentry/utils/analytics';
- import type {QuickStartEventParameters} from 'sentry/utils/analytics/quickStartAnalyticsEvents';
- import useOrganization from 'sentry/utils/useOrganization';
- /**
- * Please be careful when using 'activateSidebar' function as a hook dependency,
- * as it gets re-created when the organization gets updated. This may trigger
- * unnecessary re-renders or side effects.
- */
- export function useOnboardingSidebar() {
- const organization = useOrganization();
- const activateSidebar = useCallback(
- ({
- source,
- userClicked,
- recordAnalytics = true,
- }: {
- source: QuickStartEventParameters['quick_start.opened']['source'];
- userClicked: boolean;
- recordAnalytics?: boolean;
- }) => {
- // Delay activating the onboarding panel until after the sidebar closes on route change
- setTimeout(() => {
- if (recordAnalytics) {
- trackAnalytics('quick_start.opened', {
- source,
- organization,
- user_clicked: userClicked,
- });
- }
- SidebarPanelStore.activatePanel(SidebarPanelKey.ONBOARDING_WIZARD);
- }, 0);
- },
- [organization]
- );
- return {activateSidebar};
- }
|