-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Expand file tree
/
Copy pathindex.js
More file actions
103 lines (92 loc) · 3.56 KB
/
Copy pathindex.js
File metadata and controls
103 lines (92 loc) · 3.56 KB
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
/*
* Copyright (c) 2016-present Invertase Limited & Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this library except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* @typedef {import('@firebase/app').FirebaseApp} FirebaseApp
* @typedef {import('..').FirebasePerformanceTypes.Module} Performance
* @typedef {import('..').FirebasePerformanceTypes.Trace} Trace
* @typedef {import('..').FirebasePerformanceTypes.ScreenTrace} ScreenTrace
* @typedef {import('..').FirebasePerformanceTypes.HttpMetric} HttpMetric
*/
import { getApp } from '@react-native-firebase/app';
import { MODULAR_DEPRECATION_ARG } from '@react-native-firebase/app/lib/common';
/**
* Returns a Performance instance for the given app.
* @param app - FirebaseApp. Optional.
* @returns {Performance}
*/
export function getPerformance(app) {
if (app) {
return getApp(app.name).perf();
}
return getApp().perf();
}
/**
* Returns a Performance instance for the given app.
* @param app - FirebaseApp. Required.
* @param settings - Optional PerformanceSettings. Set "dataCollectionEnabled" which will enable/disable Performance collection.
* @returns {Performance}
*/
export async function initializePerformance(app, settings) {
const perf = getApp(app.name).perf();
if (settings && settings.dataCollectionEnabled !== undefined) {
perf.dataCollectionEnabled = settings.dataCollectionEnabled;
}
if (settings && settings.instrumentationEnabled !== undefined) {
perf.instrumentationEnabled = settings.instrumentationEnabled;
}
return perf;
}
/**
* Returns a Trace instance.
* @param perf - Performance instance
* @param identifier - A String to identify the Trace instance
* @returns {Trace}
*/
export function trace(perf, identifier) {
return perf.newTrace.call(perf, identifier, MODULAR_DEPRECATION_ARG);
}
/**
* Returns a HttpMetric instance.
* @param perf - Performance instance
* @param identifier - A String to identify the HttpMetric instance
* @returns {HttpMetric}
*/
export function httpMetric(perf, identifier, httpMethod) {
return perf.newHttpMetric.call(perf, identifier, httpMethod, MODULAR_DEPRECATION_ARG);
}
/**
* Creates a ScreenTrace instance with the given identifier.
* Throws if hardware acceleration is disabled or if Android is 9.0 or 9.1.
* @platform android Android !== 9.0.0 && Android !== 9.1.0
* @param perf - Performance instance
* @param identifier Name of the trace, no leading or trailing whitespace allowed, no leading underscore '_' character allowed, max length is 100.
* @returns {ScreenTrace}
*/
export function newScreenTrace(perf, identifier) {
return perf.newScreenTrace.call(perf, identifier, MODULAR_DEPRECATION_ARG);
}
/**
* Creates a ScreenTrace instance with the given identifier and immediately starts it.
* Throws if hardware acceleration is disabled or if Android is 9.0 or 9.1.
* @platform android Android !== 9.0.0 && Android !== 9.1.0
* @param perf - Performance instance
* @param identifier Name of the screen
* @returns {Promise<ScreenTrace>}
*/
export function startScreenTrace(perf, identifier) {
return perf.startScreenTrace.call(perf, identifier, MODULAR_DEPRECATION_ARG);
}