UNPKG

@swrve/smarttv-sdk

Version:

Swrve marketing engagement platform SDK for SmartTV OTT devices

266 lines (209 loc) 9.56 kB
import {SwrveInternal} from './SwrveInternal'; import {ResourceManager} from './Resources/ResourceManager'; import {ISwrveCampaign, ISwrveBaseMessage, IUserResource} from './Campaigns/ISwrveCampaign'; import {IUserInfo} from './Profile/IUser'; import ISwrveConfig from "./Config/ISwrveConfig"; import IDictionary from "./utils/IDictionary"; import IReadonlyDictionary from "./utils/IReadonlyDictionary"; import { sdkVersion, GET_INSTANCE_ERROR } from './utils/SwrveConstants'; import IReward from "./WebApi/Events/IReward"; import { ISwrveEmbeddedMessage } from "./Campaigns/ISwrveCampaign"; import { ICampaignState } from './Campaigns/ICampaignState'; import { IPlatform } from './utils/platforms/IPlatform'; let swrveInternal: SwrveInternal | null = null; export type OnResourcesLoadedCallback = (resources: ReadonlyArray<IUserResource> | null) => void; export type OnCampaignLoadedCallback = (error?: Error) => void; export type GetResourcesCallback = (resources: ReadonlyArray<IUserResource>) => void; export type GetUserResourcesDiffCallback = (oldDictionary: IDictionary<IUserResource>, newDictionary: IDictionary<IUserResource>, json: any) => any; export type OnIdentifySuccessCallback = (status: string, swrveUserId: string) => void; export type OnIdentifyErrorCallback = (error: string) => void; export type OnMessageListener = (msg: ISwrveBaseMessage) => void; export type OnIAMDismissed = () => void; export type OnIAMShown = () => void; export type OnCustomButtonClicked = (customString: string) => void; export class SwrveSDK { private static _instance: SwrveSDK|null = null; public static createInstance(config: ISwrveConfig): SwrveSDK { if (config.apiKey.toLowerCase().startsWith("secret-")) { throw Error(`API Key ${config.apiKey} is invalid. It should not start with 'secret-'`); } if (SwrveSDK._instance) { return SwrveSDK._instance; } else { SwrveSDK._instance = new SwrveSDK(config); SwrveSDK._instance.init(); return SwrveSDK._instance; } } private constructor(config: ISwrveConfig) { swrveInternal = new SwrveInternal(config); } public init(): void { SwrveSDK.checkInstance().init(); } private static checkInstance(): SwrveInternal { if (swrveInternal == null) { throw Error(GET_INSTANCE_ERROR); } return swrveInternal; } //******************************** Callbacks ****************************************************// public static onResourcesLoaded(callback: OnResourcesLoadedCallback): void { SwrveSDK.checkInstance().onResourcesLoaded(callback); } public static onCampaignLoaded(callback: OnCampaignLoadedCallback): void { SwrveSDK.checkInstance().onCampaignLoaded(callback); } public static onMessage(callback: OnMessageListener): void { SwrveSDK.checkInstance().onMessage(callback); } public static getResources(callback: GetResourcesCallback): void { SwrveSDK.checkInstance().getResources(callback); } public static getUserResourcesDiff(callback: GetUserResourcesDiffCallback): void { SwrveSDK.checkInstance().getUserResourcesDiff(callback); } public static onIAMDismissed(callback: OnIAMDismissed): void { SwrveSDK.checkInstance().onIAMDismissed(callback); } public static onCustomButtonClicked(callback: OnCustomButtonClicked): void { SwrveSDK.checkInstance().onCustomButtonClicked(callback); } public static onIAMShown(callback: OnIAMShown): void { SwrveSDK.checkInstance().onIAMShown(callback); } //******************************** Accessor methods *********************************************// public static getConfig(): Readonly<ISwrveConfig> { return SwrveSDK.checkInstance().getConfig(); } public static getInstance(): SwrveSDK { if (SwrveSDK._instance == null) { throw new Error(GET_INSTANCE_ERROR); } return SwrveSDK._instance; } public static getResourceManager(): ResourceManager { return SwrveSDK.checkInstance().getResourceManager(); } public static getUserInfo(): IUserInfo { return SwrveSDK.checkInstance().getUserInfo(); } public static getSDKVersion(): string { return sdkVersion; } //******************************** Embedded Campaigns *********************************************// public static embeddedMessageWasShownToUser(message: ISwrveEmbeddedMessage): void { return SwrveSDK.checkInstance().embeddedMessageWasShownToUser(message); } public static embeddedMessageButtonWasPressed( message: ISwrveEmbeddedMessage, buttonName: string, ): void { return SwrveSDK.checkInstance().embeddedMessageButtonWasPressed(message, buttonName); } public static getPersonalizedEmbeddedMessageData( message: ISwrveEmbeddedMessage, personalizationProperties: IDictionary<string>, ): string | null { return SwrveSDK.checkInstance().getPersonalizedEmbeddedMessageData(message, personalizationProperties); } public static getPersonalizedText( text: string, personalizationProperties: IDictionary<string>, ): string | null { return SwrveSDK.checkInstance().getPersonalizedText(text, personalizationProperties); } //*************************************** Event Management ************************************// public static sendEvent(name: string, payload: IDictionary<string|number> = {}): void { SwrveSDK.checkInstance().sendEvent(name, payload); } public static sendUserUpdateWithDate(keyName: string, date: Date): void { SwrveSDK.checkInstance().sendUserUpdateWithDate(keyName, date); } public static sendUserUpdate(attributes: IReadonlyDictionary<string | number | boolean>): void { SwrveSDK.checkInstance().sendUserUpdate(attributes); } public static sendPurchaseEvent(name: string, currency: string, cost: number, quantity: number): void { SwrveSDK.checkInstance().sendPurchaseEvent(name, currency, cost, quantity); } public static sendInAppPurchaseWithoutReceipt(quantity: number, productId: string, productPrice: number, currency: string, rewards: IReadonlyDictionary<IReward>): void { SwrveSDK.checkInstance().sendInAppPurchaseWithoutReceipt(quantity, productId, productPrice, currency, rewards); } public static sendCurrencyGiven(currencyGiven: string, amount: number): void { SwrveSDK.checkInstance().sendCurrencyGiven(currencyGiven, amount); } public static sendQueuedEvents(): void { SwrveSDK.checkInstance().sendQueuedEvents(); } //*************************************** Lifecycle / Account Management ************************************// public static identify( externalUserId: string, onIdentifySuccess: OnIdentifySuccessCallback, onIdentifyError: OnIdentifyErrorCallback, ): void { SwrveSDK.checkInstance().identify( externalUserId, onIdentifySuccess, onIdentifyError, ); } public static start(userId?: string): void { SwrveSDK.checkInstance().start(userId); } public static isStarted(): boolean { return SwrveSDK.checkInstance().isSDKStarted(); } public static shutdown(): void { SwrveSDK.checkInstance().shutdown(); swrveInternal = null; SwrveSDK._instance = null; } public static stop(): void { SwrveSDK.checkInstance().stop(); } //*************************************** Message Center *******************************// public static getMessageCenterCampaigns( personalizationProperties?: IDictionary<string>, ): ISwrveCampaign[] { return SwrveSDK.checkInstance().getMessageCenterCampaigns( personalizationProperties, ); } public static showMessageCenterCampaign( campaign: ISwrveCampaign, personalizationProperties?: IDictionary<string>, ): boolean { return SwrveSDK.checkInstance().showMessageCenterCampaign( campaign, personalizationProperties, ); } public static markMessageCenterCampaignAsSeen( campaign: ISwrveCampaign, ): void { SwrveSDK.checkInstance().markMessageCenterCampaignAsSeen(campaign); } public static removeMessageCenterCampaign(campaign: ISwrveCampaign): void { SwrveSDK.checkInstance().removeMessageCenterCampaign(campaign); } public static getCampaignState(campaignId: string): ICampaignState | undefined { return SwrveSDK.checkInstance().getCampaignState(campaignId); } public static isMessageShowing(): boolean { return SwrveSDK.checkInstance().isMessageShowing(); } //*************************************** Other ************************************// public static saveToStorage(): void { SwrveSDK.checkInstance().saveToStorage(); } public static showCampaign(campaign: ISwrveCampaign): boolean { return SwrveSDK.checkInstance().showCampaign(campaign); } public static getPlatform(): IPlatform { return SwrveSDK.checkInstance().getPlatform(); } }