/** * @flow * IOSParameters representation wrapper */ import type DynamicLink from './DynamicLink'; import type { NativeIOSParameters } from './types'; export default class IOSParameters { _appStoreId: string | void; _bundleId: string | void; _customScheme: string | void; _fallbackUrl: string | void; _iPadBundleId: string | void; _iPadFallbackUrl: string | void; _link: DynamicLink; _minimumVersion: string | void; constructor(link: DynamicLink) { this._link = link; } /** * * @param appStoreId * @returns {DynamicLink} */ setAppStoreId(appStoreId: string): DynamicLink { this._appStoreId = appStoreId; return this._link; } /** * * @param bundleId * @returns {DynamicLink} */ setBundleId(bundleId: string): DynamicLink { this._bundleId = bundleId; return this._link; } /** * * @param customScheme * @returns {DynamicLink} */ setCustomScheme(customScheme: string): DynamicLink { this._customScheme = customScheme; return this._link; } /** * * @param fallbackUrl * @returns {DynamicLink} */ setFallbackUrl(fallbackUrl: string): DynamicLink { this._fallbackUrl = fallbackUrl; return this._link; } /** * * @param iPadBundleId * @returns {DynamicLink} */ setIPadBundleId(iPadBundleId: string): DynamicLink { this._iPadBundleId = iPadBundleId; return this._link; } /** * * @param iPadFallbackUrl * @returns {DynamicLink} */ setIPadFallbackUrl(iPadFallbackUrl: string): DynamicLink { this._iPadFallbackUrl = iPadFallbackUrl; return this._link; } /** * * @param minimumVersion * @returns {DynamicLink} */ setMinimumVersion(minimumVersion: string): DynamicLink { this._minimumVersion = minimumVersion; return this._link; } build(): NativeIOSParameters { if ( (this._appStoreId || this._customScheme || this._fallbackUrl || this._iPadBundleId || this._iPadFallbackUrl || this._minimumVersion) && !this._bundleId ) { throw new Error('IOSParameters: Missing required `bundleId` property'); } return { appStoreId: this._appStoreId, bundleId: this._bundleId, customScheme: this._customScheme, fallbackUrl: this._fallbackUrl, iPadBundleId: this._iPadBundleId, iPadFallbackUrl: this._iPadFallbackUrl, minimumVersion: this._minimumVersion, }; } }