/** * @flow * Invitation representation wrapper */ import { Platform } from 'react-native'; import AndroidInvitation from './AndroidInvitation'; import type { NativeInvitation } from './types'; export default class Invitation { _android: AndroidInvitation; _androidClientId: string | void; _androidMinimumVersionCode: number | void; _callToActionText: string | void; _customImage: string | void; _deepLink: string | void; _iosClientId: string | void; _message: string; _title: string; constructor(title: string, message: string) { this._android = new AndroidInvitation(this); this._message = message; this._title = title; } get android(): AndroidInvitation { return this._android; } /** * * @param androidClientId * @returns {Invitation} */ setAndroidClientId(androidClientId: string): Invitation { this._androidClientId = androidClientId; return this; } /** * * @param androidMinimumVersionCode * @returns {Invitation} */ setAndroidMinimumVersionCode(androidMinimumVersionCode: number): Invitation { this._androidMinimumVersionCode = androidMinimumVersionCode; return this; } /** * * @param callToActionText * @returns {Invitation} */ setCallToActionText(callToActionText: string): Invitation { this._callToActionText = callToActionText; return this; } /** * * @param customImage * @returns {Invitation} */ setCustomImage(customImage: string): Invitation { this._customImage = customImage; return this; } /** * * @param deepLink * @returns {Invitation} */ setDeepLink(deepLink: string): Invitation { this._deepLink = deepLink; return this; } /** * * @param iosClientId * @returns {Invitation} */ setIOSClientId(iosClientId: string): Invitation { this._iosClientId = iosClientId; return this; } build(): NativeInvitation { if (!this._message) { throw new Error('Invitation: Missing required `message` property'); } else if (!this._title) { throw new Error('Invitation: Missing required `title` property'); } return { android: Platform.OS === 'android' ? this._android.build() : undefined, androidClientId: this._androidClientId, androidMinimumVersionCode: this._androidMinimumVersionCode, callToActionText: this._callToActionText, customImage: this._customImage, deepLink: this._deepLink, iosClientId: this._iosClientId, message: this._message, title: this._title, }; } }