@iterable/react-native-sdk
Version:
Iterable SDK for React Native.
141 lines (122 loc) • 4.15 kB
text/typescript
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
export interface Spec extends TurboModule {
// Initialization
initializeWithApiKey(
apiKey: string,
config: { [key: string]: string | number | boolean | undefined | string[] },
version: string
): Promise<boolean>;
initialize2WithApiKey(
apiKey: string,
config: { [key: string]: string | number | boolean | undefined | string[] },
version: string,
apiEndPointOverride: string
): Promise<boolean>;
// User management
setEmail(email: string | null, authToken?: string | null): void;
getEmail(): Promise<string | null>;
setUserId(userId?: string | null, authToken?: string | null): void;
getUserId(): Promise<string | null | undefined>;
// In-app messaging
setInAppShowResponse(number: number): void;
getInAppMessages(): Promise<{ [key: string]: string | number | boolean }[]>;
getInboxMessages(): Promise<{ [key: string]: string | number | boolean }[]>;
getUnreadInboxMessagesCount(): Promise<number>;
showMessage(messageId: string, consume: boolean): Promise<string | null>;
removeMessage(messageId: string, location: number, source: number): void;
setReadForMessage(messageId: string, read: boolean): void;
setAutoDisplayPaused(autoDisplayPaused: boolean): void;
// Tracking
trackEvent(
name: string,
dataFields?: { [key: string]: string | number | boolean }
): void;
trackPushOpenWithCampaignId(
campaignId: number,
templateId: number | null,
messageId: string,
appAlreadyRunning: boolean,
dataFields?: { [key: string]: string | number | boolean }
): void;
trackInAppOpen(messageId: string, location: number): void;
trackInAppClick(
messageId: string,
location: number,
clickedUrl: string
): void;
trackInAppClose(
messageId: string,
location: number,
source: number,
clickedUrl?: string | null
): void;
inAppConsume(messageId: string, location: number, source: number): void;
// Commerce
updateCart(items: { [key: string]: string | number | boolean }[]): void;
trackPurchase(
total: number,
items: { [key: string]: string | number | boolean }[],
dataFields?: { [key: string]: string | number | boolean }
): void;
// User data
updateUser(
dataFields: { [key: string]: string | number | boolean },
mergeNestedObjects: boolean
): void;
updateEmail(email: string, authToken?: string): void;
// Attribution
getAttributionInfo(): Promise<{
[key: string]: string | number | boolean;
} | null>;
setAttributionInfo(
dict: { [key: string]: string | number | boolean } | null
): void;
// Device management
disableDeviceForCurrentUser(): void;
getLastPushPayload(): Promise<{
[key: string]: string | number | boolean;
} | null>;
// Content
getHtmlInAppContentForMessage(
messageId: string
): Promise<{ [key: string]: string | number | boolean }>;
// App links
handleAppLink(appLink: string): Promise<boolean>;
// Subscriptions
updateSubscriptions(
emailListIds: number[] | null,
unsubscribedChannelIds: number[] | null,
unsubscribedMessageTypeIds: number[] | null,
subscribedMessageTypeIds: number[] | null,
campaignId: number,
templateId: number
): void;
// Session tracking
startSession(
visibleRows: { [key: string]: string | number | boolean }[]
): void;
endSession(): void;
updateVisibleRows(
visibleRows: { [key: string]: string | number | boolean }[]
): void;
// Auth
passAlongAuthToken(authToken?: string | null): void;
pauseAuthRetries(pauseRetry: boolean): void;
// Wake app -- android only
wakeApp(): void;
// REQUIRED for RCTEventEmitter
addListener(eventName: string): void;
removeListeners(count: number): void;
}
// Check if we're in a test environment
const isTestEnvironment = () => {
return (
typeof jest !== 'undefined' ||
process.env.NODE_ENV === 'test' ||
process.env.JEST_WORKER_ID !== undefined
);
};
export default isTestEnvironment()
? undefined
: TurboModuleRegistry.getEnforcing<Spec>('RNIterableAPI');