11import * as appModule from "tns-core-modules/application" ;
22import { LogComplexEventOptions , LogComplexEventParameter , LogEventOptions , SetScreenNameOptions , SetUserPropertyOptions } from "./analytics" ;
3- import { validateAnalyticsKey , validateAnalyticsParam } from "./analytics-common" ;
3+ import { ENABLE_ANALYTICS_HINT , validateAnalyticsKey , validateAnalyticsParam } from "./analytics-common" ;
44
55declare const com : any ;
66
77export function logEvent ( options : LogEventOptions ) : Promise < void > {
88 return new Promise < void > ( ( resolve , reject ) => {
9+ if ( ! isAnalyticsAvailable ( ) ) {
10+ reject ( ENABLE_ANALYTICS_HINT ) ;
11+ return ;
12+ }
13+
914 try {
1015 const validationError = validateAnalyticsKey ( options . key ) ;
1116 if ( validationError !== undefined ) {
@@ -41,48 +46,13 @@ export function logEvent(options: LogEventOptions): Promise<void> {
4146 } ) ;
4247}
4348
44- function getArrayList ( array : Array < LogComplexEventOptions > ) : java . util . ArrayList < android . os . Bundle > {
45- let returnArray = new java . util . ArrayList < android . os . Bundle > ( ) ;
46- for ( const p in array ) {
47- const param = array [ p ] ;
48- if ( param . parameters !== undefined ) {
49- let bundle : android . os . Bundle = buildBundle ( param . parameters ) ;
50- returnArray . add ( bundle ) ;
51- } else {
52- console . log ( "BE CARREFUL, no parameters into your complex event" ) ;
53- }
54- }
55- return returnArray ;
56- }
57-
58- function buildBundle ( params : Array < LogComplexEventParameter > ) : android . os . Bundle {
59- const bundle = new android . os . Bundle ( ) ;
60- for ( const p in params ) {
61- const param = params [ p ] ;
62- if ( param . value !== undefined ) {
63- if ( param . type === "string" ) {
64- bundle . putString ( param . key , param . value ) ;
65- } else if ( param . type === "double" ) {
66- bundle . putDouble ( param . key , param . value ) ;
67- } else if ( param . type === "float" ) {
68- bundle . putFloat ( param . key , param . value ) ;
69- } else if ( param . type === "int" ) {
70- bundle . putInt ( param . key , param . value ) ;
71- } else if ( param . type === "long" ) {
72- bundle . putLong ( param . key , param . value ) ;
73- } else if ( param . type === "boolean" ) {
74- bundle . putBoolean ( param . key , param . value ) ;
75- } else if ( param . type === "array" ) {
76- bundle . putParcelableArrayList ( param . key , getArrayList ( param . value ) ) ;
77- }
78- // bundle.putString(param.key, param.value);
79- }
80- }
81- return bundle ;
82- }
83-
8449export function logComplexEvent ( options : LogComplexEventOptions ) : Promise < void > {
8550 return new Promise < void > ( ( resolve , reject ) => {
51+ if ( ! isAnalyticsAvailable ( ) ) {
52+ reject ( ENABLE_ANALYTICS_HINT ) ;
53+ return ;
54+ }
55+
8656 try {
8757 if ( options . key === undefined ) {
8858 reject ( "Argument 'key' is missing" ) ;
@@ -108,6 +78,11 @@ export function logComplexEvent(options: LogComplexEventOptions): Promise<void>
10878
10979export function setUserId ( arg ) : Promise < void > {
11080 return new Promise < void > ( ( resolve , reject ) => {
81+ if ( ! isAnalyticsAvailable ( ) ) {
82+ reject ( ENABLE_ANALYTICS_HINT ) ;
83+ return ;
84+ }
85+
11186 try {
11287 if ( arg . userId === undefined ) {
11388 reject ( "Argument 'userId' is missing" ) ;
@@ -127,6 +102,11 @@ export function setUserId(arg): Promise<void> {
127102
128103export function setUserProperty ( options : SetUserPropertyOptions ) : Promise < void > {
129104 return new Promise < void > ( ( resolve , reject ) => {
105+ if ( ! isAnalyticsAvailable ( ) ) {
106+ reject ( ENABLE_ANALYTICS_HINT ) ;
107+ return ;
108+ }
109+
130110 try {
131111 if ( options . key === undefined ) {
132112 reject ( "Argument 'key' is missing" ) ;
@@ -151,6 +131,11 @@ export function setUserProperty(options: SetUserPropertyOptions): Promise<void>
151131
152132export function setScreenName ( options : SetScreenNameOptions ) : Promise < void > {
153133 return new Promise < void > ( ( resolve , reject ) => {
134+ if ( ! isAnalyticsAvailable ( ) ) {
135+ reject ( ENABLE_ANALYTICS_HINT ) ;
136+ return ;
137+ }
138+
154139 try {
155140 if ( options . screenName === undefined ) {
156141 reject ( "Argument 'screenName' is missing" ) ;
@@ -170,13 +155,65 @@ export function setScreenName(options: SetScreenNameOptions): Promise<void> {
170155}
171156
172157export function setAnalyticsCollectionEnabled ( enabled : boolean ) : void {
173- com . google . firebase . analytics . FirebaseAnalytics . getInstance (
174- appModule . android . context || com . tns . NativeScriptApplication . getInstance ( )
175- ) . setAnalyticsCollectionEnabled ( enabled ) ;
158+ if ( isAnalyticsAvailable ( ) ) {
159+ com . google . firebase . analytics . FirebaseAnalytics . getInstance (
160+ appModule . android . context || com . tns . NativeScriptApplication . getInstance ( )
161+ ) . setAnalyticsCollectionEnabled ( enabled ) ;
162+ }
176163}
177164
178165export function setSessionTimeoutDuration ( seconds : number ) : void {
179- com . google . firebase . analytics . FirebaseAnalytics . getInstance (
180- appModule . android . context || com . tns . NativeScriptApplication . getInstance ( )
181- ) . setSessionTimeoutDuration ( seconds * 1000 ) ; // Android expects ms
166+ if ( isAnalyticsAvailable ( ) ) {
167+ com . google . firebase . analytics . FirebaseAnalytics . getInstance (
168+ appModule . android . context || com . tns . NativeScriptApplication . getInstance ( )
169+ ) . setSessionTimeoutDuration ( seconds * 1000 ) ; // Android expects ms
170+ }
171+ }
172+
173+ function getArrayList ( array : Array < LogComplexEventOptions > ) : java . util . ArrayList < android . os . Bundle > {
174+ let returnArray = new java . util . ArrayList < android . os . Bundle > ( ) ;
175+ for ( const p in array ) {
176+ const param = array [ p ] ;
177+ if ( param . parameters !== undefined ) {
178+ let bundle : android . os . Bundle = buildBundle ( param . parameters ) ;
179+ returnArray . add ( bundle ) ;
180+ } else {
181+ console . log ( "BE CARREFUL, no parameters into your complex event" ) ;
182+ }
183+ }
184+ return returnArray ;
185+ }
186+
187+ function buildBundle ( params : Array < LogComplexEventParameter > ) : android . os . Bundle {
188+ const bundle = new android . os . Bundle ( ) ;
189+ for ( const p in params ) {
190+ const param = params [ p ] ;
191+ if ( param . value !== undefined ) {
192+ if ( param . type === "string" ) {
193+ bundle . putString ( param . key , param . value ) ;
194+ } else if ( param . type === "double" ) {
195+ bundle . putDouble ( param . key , param . value ) ;
196+ } else if ( param . type === "float" ) {
197+ bundle . putFloat ( param . key , param . value ) ;
198+ } else if ( param . type === "int" ) {
199+ bundle . putInt ( param . key , param . value ) ;
200+ } else if ( param . type === "long" ) {
201+ bundle . putLong ( param . key , param . value ) ;
202+ } else if ( param . type === "boolean" ) {
203+ bundle . putBoolean ( param . key , param . value ) ;
204+ } else if ( param . type === "array" ) {
205+ bundle . putParcelableArrayList ( param . key , getArrayList ( param . value ) ) ;
206+ }
207+ // bundle.putString(param.key, param.value);
208+ }
209+ }
210+ return bundle ;
211+ }
212+
213+ function isAnalyticsAvailable ( ) : boolean {
214+ if ( typeof ( com . google . firebase . analytics ) === "undefined" || typeof ( com . google . firebase . analytics . FirebaseAnalytics ) === "undefined" ) {
215+ console . log ( ENABLE_ANALYTICS_HINT ) ;
216+ return false ;
217+ }
218+ return true ;
182219}
0 commit comments