@theoplayer/react-native-analytics-adobe
Version:
Adobe analytics connector for @theoplayer/react-native
49 lines (42 loc) • 1.5 kB
text/typescript
import { PlayerEventType, THEOplayer } from 'react-native-theoplayer';
import { RefObject, useEffect, useRef } from 'react';
import { AdobeConnector } from '../AdobeConnector';
import type { AdobeMetaData } from '../../internal/Types';
export function useAdobe(
uri: string,
ecid: string,
sid: string,
trackingUrl: string,
metadata?: AdobeMetaData,
userAgent?: string,
useDebug?: boolean,
useNative: boolean = true,
): [RefObject<AdobeConnector | undefined>, (player: THEOplayer | undefined) => void] {
const connector = useRef<AdobeConnector | undefined>(undefined);
const theoPlayer = useRef<THEOplayer | undefined>(undefined);
const initialize = (player: THEOplayer | undefined) => {
// Optionally destroy existent connector
onDestroy();
theoPlayer.current = player;
if (player) {
connector.current = new AdobeConnector(player, uri, ecid, sid, trackingUrl, metadata, userAgent, useDebug, useNative);
player.addEventListener(PlayerEventType.DESTROY, onDestroy);
} else {
throw new Error('Invalid THEOplayer instance');
}
};
const onDestroy = () => {
if (connector.current) {
if (!theoPlayer.current) {
throw new Error('Invalid THEOplayer instance');
}
theoPlayer.current.removeEventListener(PlayerEventType.DESTROY, onDestroy);
connector.current.destroy();
connector.current = undefined;
}
};
useEffect(() => {
return onDestroy;
}, []);
return [connector, initialize];
}