diff --git a/src/constants/analytics.ts b/src/constants/analytics.ts index 1c5536a70..c573ed954 100644 --- a/src/constants/analytics.ts +++ b/src/constants/analytics.ts @@ -128,6 +128,7 @@ export const AnalyticsEvents = unionize( }>(), NavigateDialog: ofType<{ type: DialogTypesTypes; + fromDialogType?: DialogTypesTypes; }>(), NavigateDialogClose: ofType<{ type: DialogTypesTypes; diff --git a/src/hooks/useAnalytics.ts b/src/hooks/useAnalytics.ts index cf956f1fd..3a011f5da 100644 --- a/src/hooks/useAnalytics.ts +++ b/src/hooks/useAnalytics.ts @@ -158,17 +158,27 @@ export const useAnalytics = () => { DialogTypesTypes | undefined >(); - useEffect(() => { - if (activeDialog?.type) { - track(AnalyticsEvents.NavigateDialog({ type: activeDialog.type })); - } - - if (previousActiveDialogType) { - track(AnalyticsEvents.NavigateDialogClose({ type: previousActiveDialogType })); - } - - setPreviousActiveDialogType(activeDialog?.type); - }, [activeDialog]); + useEffect( + () => { + if (activeDialog?.type) { + track( + AnalyticsEvents.NavigateDialog({ + type: activeDialog.type, + fromDialogType: previousActiveDialogType, + }) + ); + } + + if (previousActiveDialogType) { + track(AnalyticsEvents.NavigateDialogClose({ type: previousActiveDialogType })); + } + + setPreviousActiveDialogType(activeDialog?.type); + }, + // This effect should only trigger on updates to the current active dialog, not previousActiveDialogType + // eslint-disable-next-line react-hooks/exhaustive-deps + [activeDialog] + ); // AnalyticsEvent.NavigateExternal useEffect(() => {