-
-
Notifications
You must be signed in to change notification settings - Fork 50
/
Copy pathindex.ios.ts
116 lines (97 loc) · 2.77 KB
/
index.ios.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import { EventParameter, IAnalytics } from './common';
import { firebase, FirebaseApp, serialize } from '@nativescript/firebase-core';
import { ConsentStatus, ConsentType } from '.';
export * from './common';
declare const FIRApp;
let defaultAnalytics: Analytics;
const fb = firebase();
Object.defineProperty(fb, 'analytics', {
value: () => {
if (!defaultAnalytics) {
defaultAnalytics = new Analytics();
}
return defaultAnalytics;
},
writable: false,
});
export class Analytics implements IAnalytics {
_app: FirebaseApp;
constructor() {
if (defaultAnalytics) {
return defaultAnalytics;
}
defaultAnalytics = this;
}
handleOpenURL(url: string): void {
try {
FIRAnalytics.handleOpenURL(NSURL.URLWithString(url));
} catch (e) {}
}
handleUserActivity(userActivity: any): void {
FIRAnalytics.handleUserActivity(userActivity);
}
get app(): FirebaseApp {
if (!this._app) {
// @ts-ignore
this._app = FirebaseApp.fromNative(FIRApp.defaultApp());
}
return this._app;
}
get appInstanceId(): string {
return FIRAnalytics?.appInstanceID?.();
}
setSessionTimeoutInterval(sessionTimeoutInterval: number): void {
FIRAnalytics.setSessionTimeoutInterval(sessionTimeoutInterval);
}
setUserProperty(key: string, value: string): void {
FIRAnalytics.setUserPropertyStringForName(value, key);
}
setAnalyticsCollectionEnabled(analyticsCollectionEnabled: boolean): void {
FIRAnalytics.setAnalyticsCollectionEnabled(analyticsCollectionEnabled);
}
setUserId(userId: string): void {
FIRAnalytics.setUserID(userId);
}
logEvent(name: string, parameters: EventParameter): void {
FIRAnalytics.logEventWithNameParameters(name, serialize(parameters));
}
resetAnalyticsData(): void {
FIRAnalytics.resetAnalyticsData();
}
setDefaultEventParameters(parameters: EventParameter): void {
FIRAnalytics.setDefaultEventParameters(serialize(parameters));
}
setConsent(consentSettings: Map<ConsentType, ConsentStatus>): void {
const dictionary = {};
consentSettings.forEach((value, key) => {
let nativeKey;
let nativeValue;
switch (key) {
case ConsentType.Ad_Storage:
nativeKey = FIRConsentTypeAdStorage;
break;
case ConsentType.Analytics_Storage:
nativeKey = FIRConsentTypeAnalyticsStorage;
break;
case ConsentType.Ad_User_Data:
nativeKey = FIRConsentTypeAdUserData;
break;
case ConsentType.Ad_Personalization:
nativeKey = FIRConsentTypeAdPersonalization;
break;
}
switch (value) {
case ConsentStatus.Denied:
nativeValue = FIRConsentStatusDenied;
break;
case ConsentStatus.Granted:
nativeValue = FIRConsentStatusGranted;
break;
}
if (nativeKey && nativeValue) {
dictionary[nativeKey] = nativeValue;
}
});
FIRAnalytics.setConsent(dictionary as any);
}
}