import TBLClassicPage from './classic/TBLClassicPage'; import NativeTBLRNTTurboModule from './NativeTBLRNTTurboModule'; import { type TBLExtraProperties, TBLLogLevel, convertToPlatformLogLevel, } from './types'; import { isValid } from './utils/TBLValidationUtils'; import { getReactNativePlatformVersionExtraProperties } from './utils/TBLExtraPropertiesUtils'; class Taboola { /** * init Taboola on the app, use this function as soon as the app launches. * @param {string} publisherName */ static init(publisherName: string) { if (!isValid(publisherName)) { console.error('Taboola initialization requires a valid publisher name'); return; } NativeTBLRNTTurboModule.init(publisherName); //Add RN plugin version and platform NativeTBLRNTTurboModule.setGlobalExtraProperties( getReactNativePlatformVersionExtraProperties() ); } /** * create a ClassicPage instance. * @constructor * @param {string} pageUrl - The url of the page. * @param {string} pageType - The type of the page. */ static getClassicPage(pageUrl: string, pageType: string): TBLClassicPage { return new TBLClassicPage(pageUrl, pageType); } /** * Removes the page from native hashMap. */ static removeClassicPage(pageId: string): void { if (!isValid(pageId)) { console.error('removeClassicPage requires a valid pageId'); return; } NativeTBLRNTTurboModule.removePage(pageId); } /************************ * Global functionality * ************************/ static setGlobalExtraProperties(extraProperties: TBLExtraProperties): void { if (!isValid(extraProperties)) { console.log( 'Taboola setGlobalExtraProperties requires a valid properties object' ); return; } // Merge new properties with existing ones since iOS override the extra properties old value NativeTBLRNTTurboModule.setGlobalExtraProperties({ ...getReactNativePlatformVersionExtraProperties(), ...extraProperties, }); } /********** * Logger * **********/ static setLogLevel(logLevel: TBLLogLevel): void { if (!Object.values(TBLLogLevel).includes(logLevel)) { console.error('setLogLevel requires a valid logLevel'); return; } const platformLogLevel = convertToPlatformLogLevel(logLevel); NativeTBLRNTTurboModule.setLogLevel(platformLogLevel); } } export default Taboola;