🚨 Active Supply Chain Attack:node-ipc Package Compromised.Learn More
Socket
Book a DemoSign in
Socket

@contentpass/react-native-contentpass-cmp-onetrust

Package Overview
Dependencies
Maintainers
3
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@contentpass/react-native-contentpass-cmp-onetrust

Contentpass OneTrust CMP adapter

latest
Source
npmnpm
Version
0.2.2
Version published
Maintainers
3
Created
Source

@contentpass/react-native-contentpass-cmp-onetrust

A OneTrust CMP adapter for @contentpass/react-native-contentpass. Bridges the OneTrust SDK (react-native-onetrust-cmp) to the Contentpass CmpAdapter interface, so the Contentpass consent layer can manage consent through OneTrust.

Installation

npm install @contentpass/react-native-contentpass-cmp-onetrust
# or
yarn add @contentpass/react-native-contentpass-cmp-onetrust

Peer dependencies

  • @contentpass/react-native-contentpass
  • react-native-onetrust-cmp — the OneTrust React Native SDK must be installed and configured in your project

Required patch for react-native-onetrust-cmp

The upstream react-native-onetrust-cmp package does not expose getPreferenceCenterData and getBannerData as native methods, which this adapter requires. You need to apply a patch using patch-package.

  • Install patch-package:
    npm install --save-dev patch-package postinstall-postinstall
    
  • Add a postinstall script to your package.json:
    "scripts": {
      "postinstall": "patch-package"
    }
    
  • Copy the patch file from examples/onetrust/patches/ into a patches/ directory in your project root.
  • Run npm install (or yarn) to apply the patch.

Expo config plugin

This package ships an Expo config plugin that fixes a compatibility issue between react-native-app-auth and Expo SDK 55+. To use it, add both plugins to your app.json:

{
  "expo": {
    "plugins": [
      "react-native-app-auth",
      "@contentpass/react-native-contentpass-cmp-onetrust"
    ]
  }
}

Usage

First, initialize the OneTrust SDK, then create the adapter using createOnetrustCmpAdapter:

import OTPublishersNativeSDK from 'react-native-onetrust-cmp';
import { createOnetrustCmpAdapter } from '@contentpass/react-native-contentpass-cmp-onetrust';
import type { CmpAdapter } from '@contentpass/react-native-contentpass';

// 1. Start the OneTrust SDK
await OTPublishersNativeSDK.startSDK(
  'cdn.cookielaw.org',   // CDN location
  'YOUR_APP_ID',         // OneTrust app ID
  'en',                  // language code
  {},                    // params
  false                  // auto-show banner
);

// 2. Create the CMP adapter
const cmpAdapter: CmpAdapter = await createOnetrustCmpAdapter(OTPublishersNativeSDK);

The returned cmpAdapter can then be passed to ContentpassConsentGate from @contentpass/react-native-contentpass-ui, or used directly via the CmpAdapter interface.

Full example

import { useEffect, useState } from 'react';
import { View, Text } from 'react-native';
import OTPublishersNativeSDK from 'react-native-onetrust-cmp';
import { ContentpassSdkProvider } from '@contentpass/react-native-contentpass';
import { ContentpassConsentGate } from '@contentpass/react-native-contentpass-ui';
import { createOnetrustCmpAdapter } from '@contentpass/react-native-contentpass-cmp-onetrust';
import type { CmpAdapter } from '@contentpass/react-native-contentpass';

export default function App() {
  const [cmpAdapter, setCmpAdapter] = useState<CmpAdapter | null>(null);

  useEffect(() => {
    OTPublishersNativeSDK.startSDK('cdn.cookielaw.org', 'YOUR_APP_ID', 'en', {}, false)
      .then(() => createOnetrustCmpAdapter(OTPublishersNativeSDK))
      .then((adapter) => setCmpAdapter(adapter))
      .catch((error) => console.error('Failed to initialize CMP', error));
  }, []);

  if (!cmpAdapter) {
    return <Text>Loading...</Text>;
  }

  return (
    <ContentpassSdkProvider contentpassConfig={contentpassConfig}>
      <ContentpassConsentGate
        cmpAdapter={cmpAdapter}
        contentpassConfig={contentpassConfig}
      >
        <View>
          <Text>Your app content</Text>
        </View>
      </ContentpassConsentGate>
    </ContentpassSdkProvider>
  );
}

For a complete working example, see the examples/onetrust directory.

API

createOnetrustCmpAdapter(sdk)

Factory function that creates a CmpAdapter from an initialized OneTrust SDK instance.

ParameterTypeDescription
sdkOTPublishersNativeSDKAn initialized OneTrust SDK instance (after startSDK has resolved).

Returns Promise<CmpAdapter>.

The adapter fetches banner and preference center data from the OneTrust SDK during creation, and automatically extracts TCF purpose IDs and the vendor count.

CmpAdapter methods provided

MethodDescription
acceptAll()Saves "accept all" consent via OneTrust.
denyAll()Saves "reject all" consent via OneTrust.
hasFullConsent()Checks whether all consent categories are granted.
onConsentStatusChange(callback)Registers a listener that fires whenever full-consent status changes. Returns an unsubscribe function.
showSecondLayer(view)Opens the OneTrust preference center ('purpose') or vendor list ('vendor') UI. The returned promise resolves when the user dismisses it.
getRequiredPurposes()Returns the list of TCF purpose identifiers extracted from OneTrust.
getNumberOfVendors()Returns the vendor count parsed from the OneTrust banner data.
waitForInit()Resolves immediately (OneTrust initialization is handled before adapter creation).

License

MIT

Keywords

contentpass

FAQs

Package last updated on 14 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts