@nativescript/firebase-dynamic-links
Version:
NativeScript Firebase - Dynamic Links
448 lines • 14.1 kB
JavaScript
import { Application, AndroidApplication } from '@nativescript/core';
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._builder = new com.google.firebase.dynamiclinks.DynamicLink.GoogleAnalyticsParameters.Builder();
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.GoogleAnalyticsParameters) {
const result = new DynamicLinkAnalyticsParameters();
result._native = link;
return result;
}
return null;
}
get campaign() {
return this._builder.getCampaign();
}
set campaign(value) {
this._builder.setCampaign(value);
}
get content() {
return this._builder.getContent();
}
set content(value) {
this._builder.setContent(value);
}
get medium() {
return this._builder.getMedium();
}
set medium(value) {
this._builder.setMedium(value);
}
get source() {
return this._builder.getSource();
}
set source(value) {
this._builder.setSource(value);
}
get term() {
return this._builder.getTerm();
}
set term(value) {
this._builder.setTerm(value);
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkAndroidParameters {
constructor(packageName) {
const name = packageName || (Application.android.foregroundActivity || Application.android.startActivity).getPackageName?.();
this._packageName = name;
this._builder = new com.google.firebase.dynamiclinks.DynamicLink.AndroidParameters.Builder(name);
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.AndroidParameters) {
const result = new DynamicLinkAndroidParameters();
result._native = link;
return result;
}
return null;
}
get fallbackUrl() {
return this._builder.getFallbackUrl().toString();
}
set fallbackUrl(value) {
try {
this._builder.setFallbackUrl(android.net.Uri.parse(value));
}
catch (error) { }
}
get minimumVersion() {
return this._builder.getMinimumVersion();
}
set minimumVersion(value) {
this._builder.setMinimumVersion(value);
}
get packageName() {
return this._packageName;
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkIOSParameters {
constructor(bundleId) {
this._bundleId = bundleId;
this._builder = new com.google.firebase.dynamiclinks.DynamicLink.IosParameters.Builder(bundleId);
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.IosParameters) {
const result = new DynamicLinkIOSParameters();
result._native = link;
return result;
}
return null;
}
get appStoreId() {
return this._builder?.getAppStoreId?.();
}
set appStoreId(value) {
this._builder?.setAppStoreId?.(value);
}
get bundleId() {
return this._bundleId;
}
get customScheme() {
return this._builder?.getCustomScheme?.();
}
set customScheme(value) {
this._builder?.setCustomScheme?.(value);
}
get fallbackUrl() {
return this._fallbackUrl;
}
set fallbackUrl(value) {
try {
this._builder?.setFallbackUrl?.(android.net.Uri.parse(value));
this._fallbackUrl = value;
}
catch (error) { }
}
get iPadBundleId() {
return this._builder?.getIpadBundleId?.();
}
set iPadBundleId(value) {
this._builder?.setIpadBundleId?.(value);
}
get iPadFallbackUrl() {
return this._builder?.getIpadFallbackUrl?.().toString?.();
}
set iPadFallbackUrl(value) {
try {
this._builder?.setIpadFallbackUrl?.(android.net.Uri.parse(value));
}
catch (error) { }
}
get minimumVersion() {
return this._builder?.getMinimumVersion();
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkITunesParameters {
constructor() {
this._builder = new com.google.firebase.dynamiclinks.DynamicLink.ItunesConnectAnalyticsParameters.Builder();
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.ItunesConnectAnalyticsParameters) {
const result = new DynamicLinkITunesParameters();
result._native = link;
return result;
}
return null;
}
get affiliateToken() {
return this._builder?.getAffiliateToken?.();
}
set affiliateToken(value) {
this._builder?.setAffiliateToken?.(value);
}
get campaignToken() {
return this._builder?.getCampaignToken?.();
}
set campaignToken(value) {
this._builder?.setCampaignToken?.(value);
}
get providerToken() {
return this._builder?.getProviderToken?.();
}
set providerToken(value) {
this._builder.setProviderToken?.(value);
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkNavigationParameters {
constructor() {
this._builder = new com.google.firebase.dynamiclinks.DynamicLink.NavigationInfoParameters.Builder();
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.NavigationInfoParameters) {
const result = new DynamicLinkNavigationParameters();
result._native = link;
return result;
}
return null;
}
get forcedRedirectEnabled() {
return this._builder?.getForcedRedirectEnabled?.();
}
set forcedRedirectEnabled(value) {
this._builder?.setForcedRedirectEnabled?.(value);
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkSocialParameters {
constructor() {
this._builder = new com.google.firebase.dynamiclinks.DynamicLink.SocialMetaTagParameters.Builder();
}
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.SocialMetaTagParameters) {
const result = new DynamicLinkSocialParameters();
result._native = link;
return result;
}
return null;
}
get descriptionText() {
return this._builder?.getDescription?.();
}
set descriptionText(value) {
this._builder?.setDescription?.(value);
}
get imageUrl() {
return this._builder?.getImageUrl?.()?.toString?.();
}
set imageUrl(value) {
try {
this._builder?.setImageUrl?.(android.net.Uri.parse(value));
}
catch (error) { }
}
get title() {
return this._builder?.getTitle?.();
}
set title(value) {
this._builder?.setTitle(value);
}
get native() {
if (!this._native) {
return this._builder.build();
}
return this._native;
}
get android() {
return this.native;
}
}
export class DynamicLinkParameters {
static fromNative(link, shortLinkType = undefined) {
if (link instanceof com.google.firebase.dynamiclinks.DynamicLink.Builder) {
const result = new DynamicLinkParameters();
result._native = link;
result._shortLinkType = shortLinkType;
return result;
}
return null;
}
get native() {
return this._native;
}
_build() {
if (this.analytics) {
this.native.setGoogleAnalyticsParameters(this.analytics.native);
}
if (this.android) {
this.native.setAndroidParameters(this.android.native);
}
if (this.ios) {
this.native.setIosParameters(this.ios.native);
}
if (this.itunes) {
this.native.setItunesConnectAnalyticsParameters(this.itunes.native);
}
if (this.navigation) {
this.native.setNavigationInfoParameters(this.navigation.native);
}
if (this.social) {
this.native.setSocialMetaTagParameters(this.social.native);
}
return this.native;
}
}
export class DynamicLink {
static fromNative(link) {
if (link instanceof com.google.firebase.dynamiclinks.PendingDynamicLinkData) {
const result = new DynamicLink();
result._native = link;
return result;
}
return null;
}
get minimumAppVersion() {
return String(this.native.getMinimumAppVersion());
}
get url() {
return this.native?.getLink?.()?.toString?.();
}
get utmParameters() {
return deserialize(this.native.getUtmParameters());
}
get native() {
return this._native;
}
get android() {
return this.native;
}
toJSON() {
return {
minimumAppVersion: this.minimumAppVersion,
url: this.url,
utmParameters: this.utmParameters,
};
}
}
export class DynamicLinks {
constructor() {
if (defaultDynamicLinks) {
return defaultDynamicLinks;
}
defaultDynamicLinks = this;
if (!DynamicLinks._didInit) {
DynamicLinks._callback = new org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.Callback({
onSuccess(param0) {
if (typeof DynamicLinks._onLink === 'function') {
DynamicLinks._onLink(DynamicLink.fromNative(param0), null);
}
},
onError(param0) {
if (typeof DynamicLinks._onLink === 'function') {
DynamicLinks._onLink(null, FirebaseError.fromNative(param0));
}
console.error('Unknown error occurred when attempting to handle a universal link', param0);
},
});
Application.android.on(AndroidApplication.activityNewIntentEvent, (data) => {
org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.onNewIntent(com.google.firebase.dynamiclinks.FirebaseDynamicLinks.getInstance(), data.intent, DynamicLinks._callback);
});
DynamicLinks._didInit = true;
}
}
buildLink(link) {
return new Promise((resolve, reject) => {
if (link._shortLinkType) {
org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.buildShortLink(link._build(), new org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.Callback({
onSuccess(param0) {
resolve(param0.getShortLink().toString());
},
onError(param0) {
reject(FirebaseError.fromNative(param0));
},
}));
}
else {
resolve(link._build().buildDynamicLink().getUri().toString());
}
});
}
createLink(link, domainUriPrefix) {
const dl = this.native.createDynamicLink();
try {
dl.setLink(android.net.Uri.parse(link));
}
catch (error) { }
dl.setDomainUriPrefix(domainUriPrefix);
return DynamicLinkParameters.fromNative(dl);
}
createShortLink(link, domainUriPrefix, shortLinkType = ShortLinkType.DEFAULT) {
const dl = this.native.createDynamicLink();
try {
dl.setLink(android.net.Uri.parse(link));
}
catch (error) { }
dl.setDomainUriPrefix(domainUriPrefix);
return DynamicLinkParameters.fromNative(dl, shortLinkType);
}
onLink(listener) {
DynamicLinks._onLink = listener;
}
resolveLink(link) {
return new Promise((resolve, reject) => {
org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.resolveLink(this.native, link, new org.nativescript.firebase.dynamic_links.FirebaseDynamicLinks.Callback({
onSuccess(param0) {
resolve(DynamicLink.fromNative(param0));
},
onError(param0) {
reject(FirebaseError.fromNative(param0));
},
}));
});
}
get native() {
if (!this._native) {
this._native = com.google.firebase.dynamiclinks.FirebaseDynamicLinks.getInstance();
}
return this._native;
}
get android() {
return this.native;
}
get app() {
if (!this._app) {
// @ts-ignore
this._app = FirebaseApp.fromNative(com.google.firebase.FirebaseApp.getInstance());
}
return this._app;
}
}
DynamicLinks._didInit = false;
//# sourceMappingURL=index.android.js.map