@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
74 lines (72 loc) • 2.71 kB
JavaScript
/*
* 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