nativescript-firebase-updated-new
Version:
187 lines • 7.05 kB
JavaScript
import { Application } from "@nativescript/core";
import { ENABLE_ANALYTICS_HINT, validateAnalyticsKey, validateAnalyticsParam } from "./analytics-common";
export function logEvent(options) {
return new Promise((resolve, reject) => {
if (!isAnalyticsAvailable()) {
reject(ENABLE_ANALYTICS_HINT);
return;
}
try {
const validationError = validateAnalyticsKey(options.key);
if (validationError !== undefined) {
reject(validationError);
return;
}
const bundle = new android.os.Bundle();
if (options.parameters !== undefined) {
for (const p in options.parameters) {
const param = options.parameters[p];
const validationParamError = validateAnalyticsParam(param);
if (validationParamError !== undefined) {
reject(validationParamError);
return;
}
if (param.value !== undefined) {
bundle.putString(param.key, param.value);
}
}
}
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).logEvent(options.key, bundle);
resolve();
}
catch (ex) {
console.log("Error in firebase.analytics.logEvent: " + ex);
reject(ex);
}
});
}
export function logComplexEvent(options) {
return new Promise((resolve, reject) => {
if (!isAnalyticsAvailable()) {
reject(ENABLE_ANALYTICS_HINT);
return;
}
try {
if (options.key === undefined) {
reject("Argument 'key' is missing");
return;
}
let bundle = new android.os.Bundle();
if (options.parameters !== undefined) {
bundle = buildBundle(options.parameters);
}
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).logEvent(options.key, bundle);
resolve();
}
catch (ex) {
console.log("Error in firebase.analytics.logEvent: " + ex);
reject(ex);
}
});
}
export function setUserId(arg) {
return new Promise((resolve, reject) => {
if (!isAnalyticsAvailable()) {
reject(ENABLE_ANALYTICS_HINT);
return;
}
try {
if (arg.userId === undefined) {
reject("Argument 'userId' is missing");
return;
}
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).setUserId(arg.userId);
resolve();
}
catch (ex) {
console.log("Error in firebase.analytics.setUserId: " + ex);
reject(ex);
}
});
}
export function setUserProperty(options) {
return new Promise((resolve, reject) => {
if (!isAnalyticsAvailable()) {
reject(ENABLE_ANALYTICS_HINT);
return;
}
try {
if (options.key === undefined) {
reject("Argument 'key' is missing");
return;
}
if (options.value === undefined) {
reject("Argument 'value' is missing");
return;
}
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).setUserProperty(options.key, options.value);
resolve();
}
catch (ex) {
console.log("Error in firebase.analytics.setUserProperty: " + ex);
reject(ex);
}
});
}
export function setScreenName(options) {
return new Promise((resolve, reject) => {
if (!isAnalyticsAvailable()) {
reject(ENABLE_ANALYTICS_HINT);
return;
}
try {
if (options.screenName === undefined) {
reject("Argument 'screenName' is missing");
return;
}
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).setCurrentScreen(Application.android.foregroundActivity, options.screenName, null);
resolve();
}
catch (ex) {
console.log("Error in firebase.analytics.setScreenName: " + ex);
reject(ex);
}
});
}
export function setAnalyticsCollectionEnabled(enabled) {
if (isAnalyticsAvailable()) {
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).setAnalyticsCollectionEnabled(enabled);
}
}
export function setSessionTimeoutDuration(seconds) {
if (isAnalyticsAvailable()) {
com.google.firebase.analytics.FirebaseAnalytics.getInstance(Application.android.context || Application.getNativeApplication()).setSessionTimeoutDuration(seconds * 1000);
}
}
function getArrayList(array) {
let returnArray = new java.util.ArrayList();
for (const p in array) {
const param = array[p];
if (param.parameters !== undefined) {
let bundle = buildBundle(param.parameters);
returnArray.add(bundle);
}
else {
console.log("BE CARREFUL, no parameters into your complex event");
}
}
return returnArray;
}
function buildBundle(params) {
const bundle = new android.os.Bundle();
for (const p in params) {
const param = params[p];
if (param.value !== undefined) {
if (param.type === "string") {
bundle.putString(param.key, param.value);
}
else if (param.type === "double") {
bundle.putDouble(param.key, param.value);
}
else if (param.type === "float") {
bundle.putFloat(param.key, param.value);
}
else if (param.type === "int") {
bundle.putInt(param.key, param.value);
}
else if (param.type === "long") {
bundle.putLong(param.key, param.value);
}
else if (param.type === "boolean") {
bundle.putBoolean(param.key, param.value);
}
else if (param.type === "array") {
bundle.putParcelableArrayList(param.key, getArrayList(param.value));
}
}
}
return bundle;
}
function isAnalyticsAvailable() {
if (typeof (com.google.firebase.analytics) === "undefined" || typeof (com.google.firebase.analytics.FirebaseAnalytics) === "undefined") {
console.log(ENABLE_ANALYTICS_HINT);
return false;
}
return true;
}
//# sourceMappingURL=analytics.android.js.map