@datadog/mobile-react-native-code-push
Version:
A client-side React Native module to interact with Appcenter Codepush and Datadog
56 lines (55 loc) • 2.14 kB
JavaScript
import { DatadogProvider, DatadogProviderConfiguration, DdSdkReactNative } from '@datadog/mobile-react-native';
import codePush from 'react-native-code-push';
/**
* Use this class instead of DdSdkReactNative to initialize the Datadog SDK when using AppCenter CodePush.
*/
export const DatadogCodepush = {
async initialize(configuration) {
const codePushUpdateMetadata = await codePush.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
return DdSdkReactNative.initialize(configuration);
}
};
const initializeWithCodepushVersion = async configuration => {
const codePushUpdateMetadata = await codePush.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
DatadogProvider.initialize(configuration);
};
export const DatadogCodepushProvider = ({
configuration,
...rest
}) => {
// We cannot use SYNC or ASYNC initialization modes as we need to asynchronously get the CodePush version.
// We turn it to partial initialization, while in parallel we get the CodePush version and initialize the SDK.
if (configuration instanceof DatadogProviderConfiguration) {
initializeWithCodepushVersion(configuration);
const partialConfiguration = {
trackErrors: configuration.trackErrors,
trackResources: configuration.trackResources,
trackInteractions: configuration.trackInteractions,
firstPartyHosts: configuration.firstPartyHosts,
resourceTracingSamplingRate: configuration.resourceTracingSamplingRate
};
return DatadogProvider({
configuration: partialConfiguration,
...rest
});
} else {
return DatadogProvider({
configuration,
...rest
});
}
};
DatadogCodepushProvider.initialize = async configuration => {
const codePushUpdateMetadata = await codePush.getUpdateMetadata();
if (codePushUpdateMetadata) {
configuration.versionSuffix = `codepush.${codePushUpdateMetadata.label}`;
}
DatadogProvider.initialize(configuration);
};
//# sourceMappingURL=index.js.map