UNPKG

@bigin/ns-firebase

Version:
176 lines (175 loc) 5.68 kB
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