-
Notifications
You must be signed in to change notification settings - Fork 255
/
Copy pathapp.js
55 lines (43 loc) · 1.47 KB
/
app.js
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
const Application = require('expo-application')
const Constants = require('expo-constants').default
const { AppState } = require('react-native')
const appStart = new Date()
module.exports = {
load: client => {
let lastEnteredForeground = appStart
let lastState = AppState.currentState
AppState.addEventListener('change', newState => {
if (newState === 'active' && lastState !== 'active') {
lastEnteredForeground = new Date()
}
lastState = newState
})
let nativeBundleVersion, nativeVersionCode
if (Constants.appOwnership === 'standalone') {
if (Constants.platform.ios) {
nativeBundleVersion = Application.nativeBuildVersion
}
if (Constants.platform.android) {
nativeVersionCode = Application.nativeBuildVersion
}
}
client.addOnSession(session => {
if (Constants.manifest.revisionId) {
session.app.codeBundleId = Constants.manifest.revisionId
}
})
client.addOnError(event => {
const now = new Date()
const inForeground = AppState.currentState === 'active'
event.app.inForeground = inForeground
event.app.duration = now - appStart
if (inForeground) {
event.app.durationInForeground = now - lastEnteredForeground
}
event.addMetadata('app', { nativeBundleVersion, nativeVersionCode })
if (Constants.manifest.revisionId) {
event.app.codeBundleId = Constants.manifest.revisionId
}
}, true)
}
}