src/applications/caregivers/hooks/useBrowserMonitoring.jsx
import { useEffect } from 'react';
import { useSelector } from 'react-redux';
import { datadogRum } from '@datadog/browser-rum';
import environment from '@department-of-veterans-affairs/platform-utilities/environment';
import { selectFeatureToggles } from '../utils/selectors/feature-toggles';
const initializeRealUserMonitoring = () => {
// Prevent RUM from re-initializing the SDK OR running on local/CI environments.
if (
!environment.BASE_URL.includes('localhost') &&
!window.DD_RUM?.getInitConfiguration()
) {
datadogRum.init({
applicationId: '0dce7846-1a1f-4509-a0d9-d689d453151f',
clientToken: 'pub70168626b5b3bf45d38f686506b60915',
site: 'ddog-gov.com',
service: '10-10cg',
env: environment.vspEnvironment(),
sampleRate: 100,
sessionReplaySampleRate: 1,
trackInteractions: true,
trackFrustrations: true,
trackResources: true,
trackLongTasks: true,
defaultPrivacyLevel: 'mask',
});
// If sessionReplaySampleRate > 0, we need to manually start the recording
datadogRum.startSessionReplayRecording();
}
};
const useBrowserMonitoring = () => {
// Retrieve feature flag values to control behavior
const featureToggles = useSelector(selectFeatureToggles);
const { isBrowserMonitoringEnabled, isLoadingFeatureFlags } = featureToggles;
useEffect(
() => {
if (isLoadingFeatureFlags) return;
if (isBrowserMonitoringEnabled) {
initializeRealUserMonitoring();
} else {
delete window.DD_RUM;
}
},
[isBrowserMonitoringEnabled, isLoadingFeatureFlags],
);
};
export { useBrowserMonitoring };