import NativeTBLRNTTurboModule from '../NativeTBLRNTTurboModule'; import { isValid } from '../utils/TBLValidationUtils'; /** * TemplateJS class for manipulating Taboola's template JavaScript URL and parameters. * This class provides methods to configure various aspects of the Taboola content delivery, * including cache control, campaign targeting, geo targeting, and custom parameters. */ class TemplateJS { tblClassicPageId: string; tblClassicUnit: string; /** * Creates a new TemplateJS instance * @param tblClassicPageId - The ID of the Taboola classic page * @param tblClassicUnitId - The ID of the Taboola classic unit */ constructor(tblClassicPageId: string, tblClassicUnitId: string) { this.tblClassicPageId = tblClassicPageId; this.tblClassicUnit = tblClassicUnitId; } /** * Disables the TRC cache. * Disabling the cache is useful for development and testing purposes. */ disableTRCCache(): void { if (isValid(this.tblClassicPageId, this.tblClassicUnit)) { NativeTBLRNTTurboModule.disableTRCCache( this.tblClassicPageId, this.tblClassicUnit ); } else { console.error('[TemplateJS] Invalid arguments for disableTRCCache'); } } /** * Requests specific campaigns to be included in the fetched content. * @param campaigns - Array of campaign IDs to request */ requestCampaigns(...campaigns: number[]): void { if (isValid(this.tblClassicPageId, this.tblClassicUnit, campaigns)) { NativeTBLRNTTurboModule.requestCampaigns( this.tblClassicPageId, this.tblClassicUnit, campaigns ); } else { console.error('[TemplateJS] Invalid arguments for requestCampaigns'); } } /** * Adds specific geo targeting to the URL request. * @param geo - The geo targeting string (e.g., "c-US_r-CA") */ requestGeo(geo: string): void { if (isValid(this.tblClassicPageId, this.tblClassicUnit, geo)) { NativeTBLRNTTurboModule.requestGeo( this.tblClassicPageId, this.tblClassicUnit, geo ); } else { console.error('[TemplateJS] Invalid arguments for requestGeo'); } } /** * Adds custom query parameters to the template JS URL. * These parameters will be added to the templateJS url as query parameters. * @param queryKey - The key for the query parameter * @param queryValue - The value for the query parameter */ addCustomQueryParams(queryKey: string, queryValue: string): void { if ( isValid(this.tblClassicPageId, this.tblClassicUnit, queryKey, queryValue) ) { NativeTBLRNTTurboModule.addCustomQueryParams( this.tblClassicPageId, this.tblClassicUnit, queryKey, queryValue ); } else { console.error('[TemplateJS] Invalid arguments for addCustomQueryParams'); } } /** * Sets a specific TRC server to route all requests to. * @param trcServerName - The name of the TRC server to use */ setSpecificTRCServer(trcServerName: string): void { if (isValid(this.tblClassicPageId, this.tblClassicUnit, trcServerName)) { NativeTBLRNTTurboModule.setSpecificTRCServer( this.tblClassicPageId, this.tblClassicUnit, trcServerName ); } else { console.error('[TemplateJS] Invalid arguments for setSpecificTRCServer'); } } /** * Forces a random video campaign and sets its format . * If no format is specified, defaults to MP4. * @param videoCampaign - The video campaign format to use */ setVideoCampaignFormat(videoCampaign: string): void { if (isValid(this.tblClassicPageId, this.tblClassicUnit, videoCampaign)) { NativeTBLRNTTurboModule.setVideoCampaignFormat( this.tblClassicPageId, this.tblClassicUnit, videoCampaign ); } else { console.error( '[TemplateJS] Invalid arguments for setVideoCampaignFormat' ); } } /** * Enables or disables TRC debug mode. * When enabled, additional debugging information will be included in the response. * @param shouldEnableTrcDebugMode - Whether to enable TRC debug mode */ setTrcDebugMode(shouldEnableTrcDebugMode: boolean): void { if ( isValid( this.tblClassicPageId, this.tblClassicUnit, shouldEnableTrcDebugMode ) ) { NativeTBLRNTTurboModule.setTrcDebugMode( this.tblClassicPageId, this.tblClassicUnit, shouldEnableTrcDebugMode ); } else { console.error('[TemplateJS] Invalid arguments for setTrcDebugMode'); } } } export default TemplateJS;