From 99e4fe8c246dadd7d6a11c244c1fb7bab7159115 Mon Sep 17 00:00:00 2001 From: Mark Dewey Date: Tue, 27 Feb 2024 15:48:21 -0500 Subject: [PATCH 1/5] (spike) added user to rum --- .../mhv/secure-messaging/containers/App.jsx | 2 +- src/applications/mhv/shared/hooks/useDatadogRum.jsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/applications/mhv/secure-messaging/containers/App.jsx b/src/applications/mhv/secure-messaging/containers/App.jsx index 6a2e0c12e747..d87dec7817ba 100644 --- a/src/applications/mhv/secure-messaging/containers/App.jsx +++ b/src/applications/mhv/secure-messaging/containers/App.jsx @@ -63,7 +63,7 @@ const App = () => { trackLongTasks: true, defaultPrivacyLevel: 'mask-user-input', }; - useDatadogRum(datadogRumConfig); + useDatadogRum(datadogRumConfig, user); if (featureTogglesLoading) { return ( diff --git a/src/applications/mhv/shared/hooks/useDatadogRum.jsx b/src/applications/mhv/shared/hooks/useDatadogRum.jsx index 9dfe4caf2217..8e3afb5f6669 100644 --- a/src/applications/mhv/shared/hooks/useDatadogRum.jsx +++ b/src/applications/mhv/shared/hooks/useDatadogRum.jsx @@ -6,7 +6,7 @@ import environment from '@department-of-veterans-affairs/platform-utilities/envi const initializeDatadogRum = config => { if ( // Prevent RUM from running on local/CI environments. - environment.BASE_URL.indexOf('localhost') < 0 && + // environment.BASE_URL.indexOf('localhost') < 0 && // Prevent re-initializing the SDK. !window.DD_RUM?.getInitConfiguration() && !window.Mocha @@ -20,12 +20,17 @@ const initializeDatadogRum = config => { } }; -const useDatadogRum = config => { +const useDatadogRum = (config, user) => { useEffect( () => { initializeDatadogRum(config); + if (user?.login?.currentlyLoggedIn) { + datadogRum.setUser({ + id: user.profile.accountUUid, + }); + } }, - [config], + [config, user], ); }; From f7ba262ebe2d4aea0db8f5892d4337a5915cbe99 Mon Sep 17 00:00:00 2001 From: Mark Dewey Date: Mon, 4 Mar 2024 12:01:25 -0500 Subject: [PATCH 2/5] (feature) refined user tracking --- .../mhv/secure-messaging/containers/App.jsx | 13 +++++++++++-- src/applications/mhv/shared/hooks/useDatadogRum.jsx | 10 +++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/applications/mhv/secure-messaging/containers/App.jsx b/src/applications/mhv/secure-messaging/containers/App.jsx index ddee7b002b1c..f93dd7e43396 100644 --- a/src/applications/mhv/secure-messaging/containers/App.jsx +++ b/src/applications/mhv/secure-messaging/containers/App.jsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Switch } from 'react-router-dom'; import { selectUser } from '@department-of-veterans-affairs/platform-user/selectors'; @@ -56,7 +56,16 @@ const App = () => { trackLongTasks: true, defaultPrivacyLevel: 'mask-user-input', }; - useDatadogRum(datadogRumConfig, user); + const userDetails = useMemo( + () => { + return { + loggedIn: user.login.currentlyLoggedIn, + accountUuid: user.profile.accountUUid, + }; + }, + [user.login.currentlyLoggedIn, user.profile.accountUUid], + ); + useDatadogRum(datadogRumConfig, userDetails); if (featureTogglesLoading) { return ( diff --git a/src/applications/mhv/shared/hooks/useDatadogRum.jsx b/src/applications/mhv/shared/hooks/useDatadogRum.jsx index 8e3afb5f6669..c7f93cf71ea0 100644 --- a/src/applications/mhv/shared/hooks/useDatadogRum.jsx +++ b/src/applications/mhv/shared/hooks/useDatadogRum.jsx @@ -6,7 +6,7 @@ import environment from '@department-of-veterans-affairs/platform-utilities/envi const initializeDatadogRum = config => { if ( // Prevent RUM from running on local/CI environments. - // environment.BASE_URL.indexOf('localhost') < 0 && + environment.BASE_URL.indexOf('localhost') < 0 && // Prevent re-initializing the SDK. !window.DD_RUM?.getInitConfiguration() && !window.Mocha @@ -20,17 +20,17 @@ const initializeDatadogRum = config => { } }; -const useDatadogRum = (config, user) => { +const useDatadogRum = (config, userInfo) => { useEffect( () => { initializeDatadogRum(config); - if (user?.login?.currentlyLoggedIn) { + if (userInfo.loggedIn && environment.isStaging()) { datadogRum.setUser({ - id: user.profile.accountUUid, + id: userInfo.accountUuid || 'no-account-uuid-found', }); } }, - [config, user], + [config, userInfo], ); }; From fb08af1063c1fce816e41ed0ef0173a4ecef4df9 Mon Sep 17 00:00:00 2001 From: Adrian Rollett Date: Mon, 4 Mar 2024 23:49:10 +0000 Subject: [PATCH 3/5] Fix unit test --- src/applications/mhv/shared/hooks/useDatadogRum.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/applications/mhv/shared/hooks/useDatadogRum.jsx b/src/applications/mhv/shared/hooks/useDatadogRum.jsx index c7f93cf71ea0..031dbc939cff 100644 --- a/src/applications/mhv/shared/hooks/useDatadogRum.jsx +++ b/src/applications/mhv/shared/hooks/useDatadogRum.jsx @@ -24,7 +24,7 @@ const useDatadogRum = (config, userInfo) => { useEffect( () => { initializeDatadogRum(config); - if (userInfo.loggedIn && environment.isStaging()) { + if (userInfo?.loggedIn && environment.isStaging()) { datadogRum.setUser({ id: userInfo.accountUuid || 'no-account-uuid-found', }); From 24467693271df5771e292c46be01544cf02b0b2b Mon Sep 17 00:00:00 2001 From: Mark Dewey Date: Tue, 5 Mar 2024 14:04:14 -0500 Subject: [PATCH 4/5] (refactor) moved to the correct hook --- .../mhv/shared/hooks/useDatadogRum.jsx | 9 +--- src/platform/mhv/hooks/useDatadogRum.jsx | 43 ++++++++++++------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/applications/mhv/shared/hooks/useDatadogRum.jsx b/src/applications/mhv/shared/hooks/useDatadogRum.jsx index 031dbc939cff..9dfe4caf2217 100644 --- a/src/applications/mhv/shared/hooks/useDatadogRum.jsx +++ b/src/applications/mhv/shared/hooks/useDatadogRum.jsx @@ -20,17 +20,12 @@ const initializeDatadogRum = config => { } }; -const useDatadogRum = (config, userInfo) => { +const useDatadogRum = config => { useEffect( () => { initializeDatadogRum(config); - if (userInfo?.loggedIn && environment.isStaging()) { - datadogRum.setUser({ - id: userInfo.accountUuid || 'no-account-uuid-found', - }); - } }, - [config, userInfo], + [config], ); }; diff --git a/src/platform/mhv/hooks/useDatadogRum.jsx b/src/platform/mhv/hooks/useDatadogRum.jsx index 88b8ec7d34d0..f20e7e25d01f 100644 --- a/src/platform/mhv/hooks/useDatadogRum.jsx +++ b/src/platform/mhv/hooks/useDatadogRum.jsx @@ -4,28 +4,39 @@ import { datadogRum } from '@datadog/browser-rum'; import { environment } from '@department-of-veterans-affairs/platform-utilities/exports'; const initializeDatadogRum = config => { - if ( - // Prevent RUM from running on local/CI environments. - environment.BASE_URL.indexOf('localhost') < 0 && - // Prevent re-initializing the SDK. - !window.DD_RUM?.getInitConfiguration() && - !window.Mocha - ) { - const datadogRumConfig = config; - if (!datadogRumConfig.env) { - datadogRumConfig.env = environment.vspEnvironment(); - } - datadogRum.init(datadogRumConfig); - datadogRum.startSessionReplayRecording(); + const datadogRumConfig = config; + if (!datadogRumConfig.env) { + datadogRumConfig.env = environment.vspEnvironment(); } + datadogRum.init(datadogRumConfig); + datadogRum.startSessionReplayRecording(); }; -const useDatadogRum = config => { +const setRumUser = user => { + if (user.loggedIn) { + datadogRum.setUser({ + id: user.accountUuid || 'no-account-uuid-found', + }); + } +}; + +const useDatadogRum = (config, userInfo) => { useEffect( () => { - initializeDatadogRum(config); + if ( + // Prevent RUM from running on local/CI environments. + environment.BASE_URL.indexOf('localhost') < 0 && + // Prevent re-initializing the SDK. + !window.DD_RUM?.getInitConfiguration() && + !window.Mocha + ) { + initializeDatadogRum(config); + if (userInfo) { + setRumUser(userInfo); + } + } }, - [config], + [config, userInfo], ); }; From 4abeecd496028f7a7e272ce92008c0811d6d6a07 Mon Sep 17 00:00:00 2001 From: Mark Dewey Date: Wed, 6 Mar 2024 13:51:58 -0500 Subject: [PATCH 5/5] (feedback) --- src/applications/mhv/secure-messaging/containers/App.jsx | 6 +++--- src/platform/mhv/hooks/useDatadogRum.jsx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/applications/mhv/secure-messaging/containers/App.jsx b/src/applications/mhv/secure-messaging/containers/App.jsx index 2d2f0aaba401..3b4fcd9370de 100644 --- a/src/applications/mhv/secure-messaging/containers/App.jsx +++ b/src/applications/mhv/secure-messaging/containers/App.jsx @@ -84,11 +84,11 @@ const App = () => { const userDetails = useMemo( () => { return { - loggedIn: user.login.currentlyLoggedIn, - accountUuid: user.profile.accountUUid, + loggedIn: user?.login?.currentlyLoggedIn, + accountUuid: user?.profile?.accountUUid, }; }, - [user.login.currentlyLoggedIn, user.profile.accountUUid], + [user], ); useDatadogRum(datadogRumConfig, userDetails); diff --git a/src/platform/mhv/hooks/useDatadogRum.jsx b/src/platform/mhv/hooks/useDatadogRum.jsx index f20e7e25d01f..1562c1b58172 100644 --- a/src/platform/mhv/hooks/useDatadogRum.jsx +++ b/src/platform/mhv/hooks/useDatadogRum.jsx @@ -13,7 +13,7 @@ const initializeDatadogRum = config => { }; const setRumUser = user => { - if (user.loggedIn) { + if (user.loggedIn && environment.isStaging()) { datadogRum.setUser({ id: user.accountUuid || 'no-account-uuid-found', });