UNPKG

@intercom/intercom-react-native

Version:

React Native wrapper to bridge our iOS and Android SDK

284 lines 10.3 kB
import { type EmitterSubscription } from 'react-native'; export declare enum Visibility { GONE = "GONE", VISIBLE = "VISIBLE" } type VisibilityType = keyof typeof Visibility; export declare enum LogLevel { ASSERT = "ASSERT", DEBUG = "DEBUG", DISABLED = "DISABLED", ERROR = "ERROR", INFO = "INFO", VERBOSE = "VERBOSE", WARN = "WARN" } type LogLevelType = keyof typeof LogLevel; export declare const IntercomEvents: { IntercomUnreadCountDidChange: any; IntercomWindowDidHide: any; IntercomWindowDidShow: any; IntercomHelpCenterWindowDidShow: any; IntercomHelpCenterWindowDidHide: any; }; type EventType = 'IntercomUnreadConversationCountDidChangeNotification' | 'IntercomWindowDidHideNotification' | 'IntercomWindowDidShowNotification'; export type CustomAttributes = { [key: string]: boolean | string | number; }; export type MetaData = { [key: string]: any; }; export type UserAttributes = { companies?: Company[]; customAttributes?: CustomAttributes; email?: string; languageOverride?: string; name?: string; phone?: string; signedUpAt?: number; unsubscribedFromEmails?: boolean; userId?: string; }; export type Company = { createdAt?: number; customAttributes?: CustomAttributes; id: string; monthlySpend?: number; name?: string; plan?: string; }; export type HelpCenterArticle = { it: string; title: string; }; export type HelpCenterSection = { title: string; articles: HelpCenterArticle; }; export type HelpCenterCollectionItem = { id: string; title: string; summary: string; }; export type HelpCenterCollectionContent = { id: string; title: string; summary: string; articles: HelpCenterArticle[]; sections: HelpCenterSection[]; }; export type HelpCenterArticleSearchResult = { id: string; title: string; matchingSnippet: string; summary: string; }; export declare enum Space { home = "HOME", helpCenter = "HELP_CENTER", messages = "MESSAGES", tickets = "TICKETS" } export type IntercomType = { /** * Login a unidentified user. * This is a user that doesn't have any identifiable information such as a `userId` or `email`. * @return {Promise<boolean>} A promise to the token. */ loginUnidentifiedUser: () => Promise<boolean>; /** * Login a user with identifiable information. * Valid identifiers are `userId` and `email` which must be set in the {@link UserAttributes} object. * @param params The {@link UserAttributes} object that contains the user's `email` or `userId`. */ loginUserWithUserAttributes: (params: UserAttributes) => Promise<boolean>; /** * Log a user out of their Intercom session. * This will dismiss any Intercom UI and clear Intercom's local cache. */ logout(): Promise<boolean>; /** * Set `hash` string if you are using Identity Verification for your Intercom workspace. * @note This should be called before any user login takes place. * * Identity Verification helps to make sure that conversations between you and your users are kept private, and that one * user can't impersonate another. If Identity Verification is enabled for your app, Intercom for iOS will sign all requests * going to the Intercom servers with tokens. It requires your mobile application to have its own server which authenticates the app's users, * and which can store a secret. * * @see More information on Identity Verification can be found {@link https://developers.intercom.com/installing-intercom/docs/react-native-identity-verification here} * @param hash A HMAC digest of the user ID or email. */ setUserHash(hash: string): Promise<boolean>; /** * Update a user in Intercom with data specified in {@link UserAttributes}. * Full details of the data data attributes that can be stored on a user can be found in {@link UserAttributes}. * * @param userAttributes The {@link UserAttributes} object with the user data. */ updateUser(userAttributes: UserAttributes): Promise<boolean>; /** * Determines if there is currently a user logged in. */ isUserLoggedIn(): Promise<boolean>; /** * Gets a logged in user's attributes * * @return {Promise<UserAttributes>} A promise to the user's attributes with `email`and/or `userId` populated.. */ fetchLoggedInUserAttributes: () => Promise<UserAttributes>; /** * Log an event with a given name and metaData. * You can log events in Intercom based on user actions in your app. * * @param eventName The name of the event. * @param metaData Metadata Objects support a few simple types that Intercom can present on your behalf, * see the @{https://developers.intercom.com/intercom-api-reference/reference/event-model Intercom API docs} */ logEvent(eventName: string, metaData?: MetaData): Promise<boolean>; /** * Present Intercom as a modal overlay in your app. * The `Home` space is displayed by default. */ present(): Promise<boolean>; /** * Present an Intercom `space` as a modal overlay in your app * @see {@link Space} for a list of valid spaces. * * @param space The Intercom space to be presented. */ presentSpace(space: Space): Promise<boolean>; /** * Present Intercom content. * * An {@link IntercomContent} object. */ presentContent(content: Content): Promise<boolean>; /** * Present the message composer. * * @param initialMessage An optional message that is used to pre-populate the composer with some text. */ presentMessageComposer(initialMessage?: string): Promise<boolean>; /** * Fetch all Help Center collections. * * @return {Promise<Array<HelpCenterCollectionItem>>} An array of {@link HelpCenterCollectionItem} objects. */ fetchHelpCenterCollections: () => Promise<Array<HelpCenterCollectionItem>>; /** * Fetch the contents of a Help Center collection. * * @param id The ID of the Help Center collection. * * @return {Promise<HelpCenterCollectionContent>} A {@link HelpCenterCollectionContent} object. */ fetchHelpCenterCollection: (id: string) => Promise<HelpCenterCollectionContent>; /** * Search the Help Center. * * @param term The search term. * * @return {Promise<HelpCenterArticleSearchResult>} An array of {@link HelpCenterArticleSearchResult} objects. */ searchHelpCenter: (term: string) => Promise<Array<HelpCenterArticleSearchResult>>; /** * Fetch the current number of unread conversations for the logged in User. * @return {Promise<number>} the number of unread conversations. */ getUnreadConversationCount(): Promise<number>; /** * Hide all Intercom windows that are currently displayed. * This will hide the Messenger, Help Center, Articles, and in-product messages (eg. Mobile Carousels, chats, and posts). */ hideIntercom(): Promise<boolean>; /** * Set a fixed bottom padding for in app messages and the Intercom Launcher. * @param bottomPadding The size of the bottom padding in points. */ setBottomPadding(bottomPadding: number): Promise<boolean>; /** * Show or hide the Intercom InApp Messages in your app. * @note All InApp Messages are visible by default. * * @param visibility A boolean indicating if the InApps should be visible. */ setInAppMessageVisibility(visibility: VisibilityType): Promise<boolean>; /** * Show or hide the Intercom Launcher in your app. * @note The Launcher is hidden by default. * * @param visibility A boolean indicating if the Intercom Launcher should be visible. */ setLauncherVisibility(visibility: VisibilityType): Promise<boolean>; /** * Change the Status Bar's style or visibility while an Intercom notification is on * screen. * Call this method so that Intercom's window can reflect your app's status bar accordingly. */ setNeedsStatusBarAppearanceUpdate(): Promise<boolean>; /** * Handle an Android push notification payload sent by Intercom. * * @note Android only. iOS handles push notifications automatically. */ handlePushMessage(): Promise<boolean>; /** * Send a device token to Intercom to enable push notifications to be sent to the User. * @param token The device token to send to the server. */ sendTokenToIntercom(token: string): Promise<boolean>; /** * Enable logging for Intercom. * @param logLevel The logging level to set. * * @note iOS will ignore the logging level and by default shows `DEBUG` logging. */ setLogLevel(logLevel: LogLevelType): Promise<boolean>; /** * Add an event listener for the supported event types. */ addEventListener: (event: EventType, callback: (response: { count?: number; visible: boolean; }) => void) => EmitterSubscription; }; declare const Intercom: IntercomType; export default Intercom; export declare enum ContentType { Article = "ARTICLE", Carousel = "CAROUSEL", Survey = "SURVEY", HelpCenterCollections = "HELP_CENTER_COLLECTIONS", Conversation = "CONVERSATION" } export interface Content { type: ContentType; } export interface Article extends Content { id: string; } interface Carousel extends Content { id: string; } interface Survey extends Content { id: string; } interface HelpCenterCollections extends Content { ids: string[]; } interface Conversation extends Content { id: string; } export type IntercomContentType = { /** * Create */ articleWithArticleId: (articleId: string) => Article; carouselWithCarouselId: (carouselId: string) => Carousel; surveyWithSurveyId: (surveyId: string) => Survey; helpCenterCollectionsWithIds: (collectionIds: string[]) => HelpCenterCollections; conversationWithConversationId: (conversationId: string) => Conversation; }; export declare const IntercomContent: IntercomContentType; //# sourceMappingURL=index.d.ts.map