@nativescript/firebase-dynamic-links
Version:
NativeScript Firebase - Dynamic Links
450 lines • 12.9 kB
JavaScript
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