UNPKG

@nativescript/firebase-dynamic-links

Version:

NativeScript Firebase - Dynamic Links

450 lines 12.9 kB
import { deserialize, firebase, FirebaseApp, FirebaseError } from '@nativescript/firebase-core'; import { ShortLinkType } from './common'; let defaultDynamicLinks; const fb = firebase(); Object.defineProperty(fb, 'dynamicLinks', { value: () => { if (!defaultDynamicLinks) { defaultDynamicLinks = new DynamicLinks(); } return defaultDynamicLinks; }, writable: false, }); export { ShortLinkType } from './common'; export class DynamicLinkAnalyticsParameters { constructor() { this._native = FIRDynamicLinkGoogleAnalyticsParameters.parameters(); } static fromNative(link) { if (link instanceof FIRDynamicLinkGoogleAnalyticsParameters) { const result = new DynamicLinkAnalyticsParameters(); result._native = link; return result; } return null; } get campaign() { return this.native.campaign; } set campaign(value) { this.native.campaign = value; } get content() { return this.native.content; } set content(value) { this.native.content = value; } get medium() { return this.native.medium; } set medium(value) { this.native.medium = value; } get source() { return this.native.source; } set source(value) { this.native.source = value; } get term() { return this.native.term; } set term(value) { this.native.term = value; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkAndroidParameters { constructor(packageName) { this._native = FIRDynamicLinkAndroidParameters.parametersWithPackageName(packageName); } static fromNative(link) { if (link instanceof FIRDynamicLinkAndroidParameters) { const result = new DynamicLinkAndroidParameters(); result._native = link; return result; } return null; } get fallbackUrl() { return this.native.fallbackURL?.absoluteString; } set fallbackUrl(value) { this.native.fallbackURL = NSURL.URLWithString(value); } get minimumVersion() { return this.native.minimumVersion; } set minimumVersion(value) { this.native.minimumVersion = value; } get packageName() { return this.native.packageName; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkIOSParameters { constructor(bundleId) { const id = bundleId || NSBundle.mainBundle.bundleIdentifier; this._native = FIRDynamicLinkIOSParameters.parametersWithBundleID(id); } static fromNative(link) { if (link instanceof FIRDynamicLinkIOSParameters) { const result = new DynamicLinkIOSParameters(); result._native = link; return result; } return null; } get appStoreId() { return this.native.appStoreID; } set appStoreId(value) { this.native.appStoreID = value; } get bundleId() { return this.native.bundleID; } get customScheme() { return this.native.customScheme; } set customScheme(value) { this.native.customScheme = value; } get fallbackUrl() { return this.native.fallbackURL?.absoluteString; } set fallbackUrl(value) { this.native.fallbackURL = NSURL.URLWithString(value); } get iPadBundleId() { return this.native.iPadBundleID; } set iPadBundleId(value) { this.native.iPadBundleID = value; } get iPadFallbackUrl() { return this.native.iPadFallbackURL?.absoluteString; } set iPadFallbackUrl(value) { this.native.iPadFallbackURL = NSURL.URLWithString(value); } get minimumVersion() { return this.native.minimumAppVersion; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkITunesParameters { constructor() { this._native = FIRDynamicLinkItunesConnectAnalyticsParameters.parameters(); } static fromNative(link) { if (link instanceof FIRDynamicLinkItunesConnectAnalyticsParameters) { const result = new DynamicLinkITunesParameters(); result._native = link; return result; } return null; } get affiliateToken() { return this.native.affiliateToken; } set affiliateToken(value) { this.native.affiliateToken = value; } get campaignToken() { return this.native.campaignToken; } set campaignToken(value) { this.native.campaignToken = value; } get providerToken() { return this.native.providerToken; } set providerToken(value) { this.native.providerToken = value; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkNavigationParameters { constructor() { this._native = FIRDynamicLinkNavigationInfoParameters.parameters(); } static fromNative(link) { if (link instanceof FIRDynamicLinkNavigationInfoParameters) { const result = new DynamicLinkNavigationParameters(); result._native = link; return result; } return null; } get forcedRedirectEnabled() { return this.native.forcedRedirectEnabled; } set forcedRedirectEnabled(value) { this.native.forcedRedirectEnabled = value; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkSocialParameters { constructor() { this._native = FIRDynamicLinkSocialMetaTagParameters.parameters(); } static fromNative(link) { if (link instanceof FIRDynamicLinkSocialMetaTagParameters) { const result = new DynamicLinkSocialParameters(); result._native = link; return result; } return null; } get descriptionText() { return this.native.descriptionText; } set descriptionText(value) { this.native.descriptionText = value; } get imageUrl() { return this.native.imageURL?.absoluteString; } set imageUrl(value) { this.native.imageURL = NSURL.URLWithString(value); } get title() { return this.native.title; } set title(value) { this.native.title = value; } get native() { return this._native; } get ios() { return this.native; } } export class DynamicLinkParameters { static fromNative(link) { if (link instanceof FIRDynamicLinkComponents) { const result = new DynamicLinkParameters(); result._native = link; return result; } return null; } get analytics() { if (this._analytics) { return this._analytics; } return DynamicLinkAnalyticsParameters.fromNative(this.native.analyticsParameters); } set analytics(value) { this._analytics = value; this.native.analyticsParameters = value?.native; } get android() { if (this._android) { return this._android; } return DynamicLinkAndroidParameters.fromNative(this.native.androidParameters); } set android(value) { this._android = value; this.native.androidParameters = value?.native; } get domainUriPrefix() { return this.native.domain; } get ios() { if (this._ios) { return this._ios; } return DynamicLinkIOSParameters.fromNative(this.native.iOSParameters); } set ios(value) { this._ios = value; this.native.iOSParameters = value?.native; } get itunes() { if (this._itunes) { return this._itunes; } return DynamicLinkITunesParameters.fromNative(this.native.iTunesConnectParameters); } set itunes(value) { this._itunes = value; this.native.iTunesConnectParameters = value?.native; } get link() { return this.native.link?.absoluteString; } set link(value) { this.native.link = NSURL.URLWithString(value); } get navigation() { if (this._navigation) { return this._navigation; } return DynamicLinkNavigationParameters.fromNative(this.native.navigationInfoParameters); } set navigation(value) { this._navigation = value; this.native.navigationInfoParameters = value?.native; } get social() { if (this._social) { return this._social; } return DynamicLinkSocialParameters.fromNative(this.native.socialMetaTagParameters); } set social(value) { this._social = value; this.native.socialMetaTagParameters = value?.native; } get native() { return this._native; } } export class DynamicLink { static fromNative(link) { if (link instanceof FIRDynamicLink) { const result = new DynamicLink(); result._native = link; return result; } return null; } get minimumAppVersion() { return this.native.minimumAppVersion; } get url() { return this.native.url?.absoluteString; } get utmParameters() { return deserialize(this.native.utmParametersDictionary); } get native() { return this._native; } get ios() { return this.native; } toJSON() { return { minimumAppVersion: this.minimumAppVersion, url: this.url, utmParameters: this.utmParameters, }; } } export class DynamicLinks { constructor() { if (defaultDynamicLinks) { return defaultDynamicLinks; } defaultDynamicLinks = this; } createLink(link, domainUriPrefix) { return DynamicLinkParameters.fromNative(FIRDynamicLinkComponents.alloc().initWithLinkDomainURIPrefix(NSURL.URLWithString(link), domainUriPrefix)); } createShortLink(link, domainUriPrefix, shortLinkType = ShortLinkType.DEFAULT) { const nativeLink = FIRDynamicLinkComponents.alloc().initWithLinkDomainURIPrefix(NSURL.URLWithString(link), domainUriPrefix); const options = FIRDynamicLinkComponentsOptions.options(); switch (shortLinkType) { case ShortLinkType.SHORT: options.pathLength = 1 /* FIRShortDynamicLinkPathLength.Short */; break; case ShortLinkType.UNGUESSABLE: options.pathLength = 2 /* FIRShortDynamicLinkPathLength.Unguessable */; break; default: options.pathLength = 0 /* FIRShortDynamicLinkPathLength.Default */; break; } nativeLink.options = options; return DynamicLinkParameters.fromNative(nativeLink); } buildLink(link) { if (link.native.options) { // short link return new Promise((resolve, reject) => { link.native.shortenWithCompletion((url, warnings, error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(url.absoluteString); } }); }); } else { // long link return Promise.resolve(link.native.url.absoluteString); } } onLink(listener) { DynamicLinks._onLink = listener; if (listener) { TNSFirebaseDynamicLinksAppDelegate.onLinkCallback = (link, error) => { listener(DynamicLink.fromNative(link), error && FirebaseError.fromNative(error)); }; } else { TNSFirebaseDynamicLinksAppDelegate.onLinkCallback = null; } } resolveLink(link) { return new Promise((resolve, reject) => { this.native.handleUniversalLinkCompletion(NSURL.URLWithString(link), (dl, error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(DynamicLink.fromNative(dl)); } }); }); } get native() { return FIRDynamicLinks.dynamicLinks(); } get ios() { return this.native; } get app() { if (!this._app) { // @ts-ignore this._app = FirebaseApp.fromNative(FIRApp.defaultApp()); } return this._app; } } //# sourceMappingURL=index.ios.js.map