UNPKG

@datadog/mobile-react-native

Version:

A client-side React Native module to interact with Datadog

74 lines (72 loc) 2.71 kB
/* * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. * This product includes software developed at Datadog (https://www.datadoghq.com/). * Copyright 2016-Present Datadog, Inc. */ import React from 'react'; import { DatadogProviderConfiguration, DdSdkReactNativeConfiguration } from '../../DdSdkReactNativeConfiguration'; import { DdSdkReactNative } from '../../DdSdkReactNative'; import { InternalLog } from '../../InternalLog'; import { SdkVerbosity } from '../../SdkVerbosity'; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; let isInitialized = false; const isConfigurationPartial = configuration => { if (configuration instanceof DatadogProviderConfiguration) { return false; } if (configuration instanceof DdSdkReactNativeConfiguration) { // Not using InternalLog here as it is not yet instantiated console.warn('A DdSdkReactNativeConfiguration was passed to DatadogProvider. Please use DatadogProviderConfiguration instead.'); return false; } return true; }; const initializeDatadog = async (configuration, onInitialization) => { await DdSdkReactNative._initializeFromDatadogProvider(configuration); if (onInitialization) { try { onInitialization(); } catch (error) { InternalLog.log(`Error running onInitialization callback ${error}`, SdkVerbosity.WARN); } } }; /** * Set up the Datadog React Native SDK. */ export const DatadogProvider = ({ children, configuration, onInitialization }) => { if (!isInitialized) { // Here we cannot use a useEffect hook since it would be called after // the first render. Thus, we wouldn't enable auto-instrumentation on // the elements rendered in this first render and what happens during // the first render. if (isConfigurationPartial(configuration)) { DdSdkReactNative._enableFeaturesFromDatadogProvider(configuration); DatadogProvider.onInitialization = onInitialization; } else { initializeDatadog(configuration, onInitialization); } isInitialized = true; } return /*#__PURE__*/_jsx(_Fragment, { children: children }); }; /** * Initialize the Datadog SDK to start sending RUM events, logs and traces, * then execute onInitialization callback if any was provided. */ DatadogProvider.initialize = async configuration => { await DdSdkReactNative._initializeFromDatadogProviderWithConfigurationAsync(configuration); if (DatadogProvider.onInitialization) { DatadogProvider.onInitialization(); } }; export const __internalResetIsInitializedForTesting = () => { isInitialized = false; }; //# sourceMappingURL=DatadogProvider.js.map