react-native-move-sdk 2.11.0 → 2.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -27,6 +27,7 @@ function LazyMoveSdk(_ref) {
|
|
|
27
27
|
const prevState = (0, _react.useRef)('terminated');
|
|
28
28
|
const [currentMode, setCurrentMode] = (0, _react.useState)(_reactNative.AppState.currentState);
|
|
29
29
|
const [tripState, setTripState] = (0, _react.useState)();
|
|
30
|
+
const [sdkState, setSdkState] = (0, _react.useState)();
|
|
30
31
|
const [removeUi, setRemoveUi] = (0, _react.useState)(false);
|
|
31
32
|
const [isListener, setIsListener] = (0, _react.useState)(false);
|
|
32
33
|
(0, _react.useEffect)(() => {
|
|
@@ -40,6 +41,8 @@ function LazyMoveSdk(_ref) {
|
|
|
40
41
|
|
|
41
42
|
const tripStateSubscription = _MoveSdk.default.addTripStateListener(setTripState);
|
|
42
43
|
|
|
44
|
+
const sdkStateSubscription = _MoveSdk.default.addSdkStateListener(setSdkState);
|
|
45
|
+
|
|
43
46
|
const checkStatesAndSetTimerToRemoveUi = async () => {
|
|
44
47
|
const removeUiInBackgroundTimeoutId = await _asyncStorage.default.getItem('@removeUiInBackgroundTimeoutId');
|
|
45
48
|
|
|
@@ -71,6 +74,7 @@ function LazyMoveSdk(_ref) {
|
|
|
71
74
|
return () => {
|
|
72
75
|
appStateSubscription.remove();
|
|
73
76
|
tripStateSubscription.remove();
|
|
77
|
+
sdkStateSubscription.remove();
|
|
74
78
|
|
|
75
79
|
if (timer) {
|
|
76
80
|
if (_reactNative.Platform.OS === 'android') {
|
|
@@ -90,7 +94,7 @@ function LazyMoveSdk(_ref) {
|
|
|
90
94
|
}, [currentMode, removeUi]);
|
|
91
95
|
const startedInBackground = prevState.current === 'terminated' && currentMode === 'background' || prevState.current === 'terminated' && currentMode === 'unknown' || prevState.current === 'background' && currentMode === 'background'; // DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS
|
|
92
96
|
|
|
93
|
-
if (startedInBackground && !isListener || removeUi) {
|
|
97
|
+
if (startedInBackground && !isListener && sdkState === _MoveSdk.default.RUNNING || removeUi) {
|
|
94
98
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, null);
|
|
95
99
|
}
|
|
96
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LazyMoveSdk.tsx"],"names":["LazyMoveSdk","children","delayToRemoveUiInBackgroundMs","prevState","currentMode","setCurrentMode","AppState","currentState","tripState","setTripState","removeUi","setRemoveUi","isListener","setIsListener","timer","appStateSubscription","addEventListener","state","current","tripStateSubscription","MoveSdk","addTripStateListener","checkStatesAndSetTimerToRemoveUi","removeUiInBackgroundTimeoutId","AsyncStorage","getItem","DRIVING","Platform","OS","setTimer","setTimeout","setItem","toString","cancelTimer","clearTimeout","removeItem","remove","startedInBackground"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;AAOe,SAASA,WAAT,OAA4F;AAAA,MAAvE;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,6BAA6B,GAAG;AAA5C,GAAuE;AACzG,QAAMC,SAAS,GAAG,mBAAO,YAAP,CAAlB;AACA,QAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,qBAASC,sBAASC,YAAlB,CAAtC;AACA,QAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4B,sBAAlC;AACA,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,qBAAS,KAAT,CAAhC;AACA,QAAM,CAACC,UAAD,EAAaC,aAAb,IAA8B,qBAAS,KAAT,CAApC;AAEA,wBAAU,MAAM;AACd,QAAIC,KAA6D,GAAG,IAApE;;AACA,UAAMC,oBAAoB,
|
|
1
|
+
{"version":3,"sources":["LazyMoveSdk.tsx"],"names":["LazyMoveSdk","children","delayToRemoveUiInBackgroundMs","prevState","currentMode","setCurrentMode","AppState","currentState","tripState","setTripState","sdkState","setSdkState","removeUi","setRemoveUi","isListener","setIsListener","timer","appStateSubscription","addEventListener","state","current","tripStateSubscription","MoveSdk","addTripStateListener","sdkStateSubscription","addSdkStateListener","checkStatesAndSetTimerToRemoveUi","removeUiInBackgroundTimeoutId","AsyncStorage","getItem","DRIVING","Platform","OS","setTimer","setTimeout","setItem","toString","cancelTimer","clearTimeout","removeItem","remove","startedInBackground","RUNNING"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;AAOe,SAASA,WAAT,OAA4F;AAAA,MAAvE;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,6BAA6B,GAAG;AAA5C,GAAuE;AACzG,QAAMC,SAAS,GAAG,mBAAO,YAAP,CAAlB;AACA,QAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,qBAASC,sBAASC,YAAlB,CAAtC;AACA,QAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4B,sBAAlC;AACA,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,sBAAhC;AACA,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,qBAAS,KAAT,CAAhC;AACA,QAAM,CAACC,UAAD,EAAaC,aAAb,IAA8B,qBAAS,KAAT,CAApC;AAEA,wBAAU,MAAM;AACd,QAAIC,KAA6D,GAAG,IAApE;;AACA,UAAMC,oBAAoB,GAAGX,sBAASY,gBAAT,CAA0B,QAA1B,EAAqCC,KAAD,IAA2B;AAC1FJ,MAAAA,aAAa,CAAC,IAAD,CAAb;AACAV,MAAAA,cAAc,CAACc,KAAD,CAAd;AACAhB,MAAAA,SAAS,CAACiB,OAAV,GAAoBD,KAApB;AACD,KAJ4B,CAA7B;;AAKA,UAAME,qBAAqB,GAAGC,iBAAQC,oBAAR,CAA6Bd,YAA7B,CAA9B;;AACA,UAAMe,oBAAoB,GAAGF,iBAAQG,mBAAR,CAA4Bd,WAA5B,CAA7B;;AAEA,UAAMe,gCAAgC,GAAG,YAAY;AACnD,YAAMC,6BAA6B,GAAG,MAAMC,sBAAaC,OAAb,CAAqB,gCAArB,CAA5C;;AACA,UAAIzB,WAAW,KAAK,YAAhB,IAAgCI,SAAS,KAAKc,iBAAQQ,OAAtD,IAAiE,CAACH,6BAAlE,IAAmGX,KAAK,KAAK,IAAjH,EAAuH;AACrH,YAAIe,sBAASC,EAAT,KAAgB,SAApB,EAA+B;AAC7BhB,UAAAA,KAAK,GAAGM,iBAAQW,QAAR,CAAiB,MAAMpB,WAAW,CAAC,IAAD,CAAlC,EAA0CX,6BAA1C,CAAR;AACD,SAFD,MAEO;AACLc,UAAAA,KAAK,GAAGkB,UAAU,CAAC,MAAMrB,WAAW,CAAC,IAAD,CAAlB,EAA0BX,6BAA1B,CAAlB;AACD;;AACD,YAAIc,KAAJ,EAAW;AACTY,gCAAaO,OAAb,CAAqB,gCAArB,EAAuDnB,KAAK,CAACoB,QAAN,EAAvD;AACD;AACF;;AACD,UAAIhC,WAAW,KAAK,QAAhB,IAA4BuB,6BAAhC,EAA+D;AAC7D,YAAII,sBAASC,EAAT,KAAgB,SAApB,EAA+B;AAC7BV,2BAAQe,WAAR,CAAoBV,6BAApB;AACD,SAFD,MAEO;AACLW,UAAAA,YAAY,CAAC,CAACX,6BAAF,CAAZ;AACD;;AACDX,QAAAA,KAAK,GAAG,IAAR;AACA,cAAMY,sBAAaW,UAAb,CAAwB,gCAAxB,CAAN;AACD;AACF,KArBD;;AAsBAb,IAAAA,gCAAgC;AAEhC,WAAO,MAAM;AACXT,MAAAA,oBAAoB,CAACuB,MAArB;AACAnB,MAAAA,qBAAqB,CAACmB,MAAtB;AACAhB,MAAAA,oBAAoB,CAACgB,MAArB;;AACA,UAAIxB,KAAJ,EAAW;AACT,YAAIe,sBAASC,EAAT,KAAgB,SAApB,EAA+B;AAC7BV,2BAAQe,WAAR,CAAoBrB,KAApB;AACD,SAFD,MAEO;AACLsB,UAAAA,YAAY,CAACtB,KAAD,CAAZ;AACD;;AACDA,QAAAA,KAAK,GAAG,IAAR;AACD;AACF,KAZD;AAaD,GA/CD,EA+CG,CAACZ,WAAD,EAAcI,SAAd,EAAyBN,6BAAzB,CA/CH;AAiDA,wBAAU,MAAM;AACd,QAAIE,WAAW,KAAK,QAAhB,IAA4BQ,QAAhC,EAA0C;AACxCC,MAAAA,WAAW,CAAC,KAAD,CAAX;AACD;AACF,GAJD,EAIG,CAACT,WAAD,EAAcQ,QAAd,CAJH;AAMA,QAAM6B,mBAAmB,GACtBtC,SAAS,CAACiB,OAAV,KAAsB,YAAtB,IAAsChB,WAAW,KAAK,YAAvD,IACCD,SAAS,CAACiB,OAAV,KAAsB,YAAtB,IAAsChB,WAAW,KAAK,SADvD,IAECD,SAAS,CAACiB,OAAV,KAAsB,YAAtB,IAAsChB,WAAW,KAAK,YAHzD,CA/DyG,CAoEzG;;AACA,MAAKqC,mBAAmB,IAAI,CAAC3B,UAAxB,IAAsCJ,QAAQ,KAAKY,iBAAQoB,OAA5D,IAAwE9B,QAA5E,EAAsF;AACpF,wBAAO,6BAAC,iBAAD,OAAP;AACD;;AAED,sBAAO,6BAAC,eAAD;AAAU,IAAA,QAAQ,eAAE,6BAAC,iBAAD;AAApB,KAA+BX,QAA/B,CAAP;AACD","sourcesContent":["import React, { Suspense, useEffect, useRef, useState } from 'react';\nimport { AppState, AppStateStatus, Platform, View } from 'react-native';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\n\nimport MoveSdk, { SdkState, TripState } from '../MoveSdk';\n\ntype LazyMoveSdkProps = {\n children: React.ReactNode;\n delayToRemoveUiInBackgroundMs?: number;\n};\n\nexport default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs = 30000 }: LazyMoveSdkProps) {\n const prevState = useRef('terminated');\n const [currentMode, setCurrentMode] = useState(AppState.currentState);\n const [tripState, setTripState] = useState<TripState>();\n const [sdkState, setSdkState] = useState<SdkState>();\n const [removeUi, setRemoveUi] = useState(false);\n const [isListener, setIsListener] = useState(false);\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout> | null | number | string = null;\n const appStateSubscription = AppState.addEventListener('change', (state: AppStateStatus) => {\n setIsListener(true);\n setCurrentMode(state);\n prevState.current = state;\n });\n const tripStateSubscription = MoveSdk.addTripStateListener(setTripState);\n const sdkStateSubscription = MoveSdk.addSdkStateListener(setSdkState);\n\n const checkStatesAndSetTimerToRemoveUi = async () => {\n const removeUiInBackgroundTimeoutId = await AsyncStorage.getItem('@removeUiInBackgroundTimeoutId');\n if (currentMode === 'background' && tripState === MoveSdk.DRIVING && !removeUiInBackgroundTimeoutId && timer === null) {\n if (Platform.OS === 'android') {\n timer = MoveSdk.setTimer(() => setRemoveUi(true), delayToRemoveUiInBackgroundMs);\n } else {\n timer = setTimeout(() => setRemoveUi(true), delayToRemoveUiInBackgroundMs);\n }\n if (timer) {\n AsyncStorage.setItem('@removeUiInBackgroundTimeoutId', timer.toString());\n }\n }\n if (currentMode === 'active' && removeUiInBackgroundTimeoutId) {\n if (Platform.OS === 'android') {\n MoveSdk.cancelTimer(removeUiInBackgroundTimeoutId);\n } else {\n clearTimeout(+removeUiInBackgroundTimeoutId);\n }\n timer = null;\n await AsyncStorage.removeItem('@removeUiInBackgroundTimeoutId');\n }\n };\n checkStatesAndSetTimerToRemoveUi();\n\n return () => {\n appStateSubscription.remove();\n tripStateSubscription.remove();\n sdkStateSubscription.remove();\n if (timer) {\n if (Platform.OS === 'android') {\n MoveSdk.cancelTimer(timer as string);\n } else {\n clearTimeout(timer as number);\n }\n timer = null;\n }\n };\n }, [currentMode, tripState, delayToRemoveUiInBackgroundMs]);\n\n useEffect(() => {\n if (currentMode === 'active' && removeUi) {\n setRemoveUi(false);\n }\n }, [currentMode, removeUi]);\n\n const startedInBackground =\n (prevState.current === 'terminated' && currentMode === 'background') ||\n (prevState.current === 'terminated' && currentMode === 'unknown') ||\n (prevState.current === 'background' && currentMode === 'background');\n\n // DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS\n if ((startedInBackground && !isListener && sdkState === MoveSdk.RUNNING) || removeUi) {\n return <View />;\n }\n\n return <Suspense fallback={<View />}>{children}</Suspense>;\n}\n"]}
|
|
@@ -10,6 +10,7 @@ export default function LazyMoveSdk(_ref) {
|
|
|
10
10
|
const prevState = useRef('terminated');
|
|
11
11
|
const [currentMode, setCurrentMode] = useState(AppState.currentState);
|
|
12
12
|
const [tripState, setTripState] = useState();
|
|
13
|
+
const [sdkState, setSdkState] = useState();
|
|
13
14
|
const [removeUi, setRemoveUi] = useState(false);
|
|
14
15
|
const [isListener, setIsListener] = useState(false);
|
|
15
16
|
useEffect(() => {
|
|
@@ -20,6 +21,7 @@ export default function LazyMoveSdk(_ref) {
|
|
|
20
21
|
prevState.current = state;
|
|
21
22
|
});
|
|
22
23
|
const tripStateSubscription = MoveSdk.addTripStateListener(setTripState);
|
|
24
|
+
const sdkStateSubscription = MoveSdk.addSdkStateListener(setSdkState);
|
|
23
25
|
|
|
24
26
|
const checkStatesAndSetTimerToRemoveUi = async () => {
|
|
25
27
|
const removeUiInBackgroundTimeoutId = await AsyncStorage.getItem('@removeUiInBackgroundTimeoutId');
|
|
@@ -52,6 +54,7 @@ export default function LazyMoveSdk(_ref) {
|
|
|
52
54
|
return () => {
|
|
53
55
|
appStateSubscription.remove();
|
|
54
56
|
tripStateSubscription.remove();
|
|
57
|
+
sdkStateSubscription.remove();
|
|
55
58
|
|
|
56
59
|
if (timer) {
|
|
57
60
|
if (Platform.OS === 'android') {
|
|
@@ -71,7 +74,7 @@ export default function LazyMoveSdk(_ref) {
|
|
|
71
74
|
}, [currentMode, removeUi]);
|
|
72
75
|
const startedInBackground = prevState.current === 'terminated' && currentMode === 'background' || prevState.current === 'terminated' && currentMode === 'unknown' || prevState.current === 'background' && currentMode === 'background'; // DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS
|
|
73
76
|
|
|
74
|
-
if (startedInBackground && !isListener || removeUi) {
|
|
77
|
+
if (startedInBackground && !isListener && sdkState === MoveSdk.RUNNING || removeUi) {
|
|
75
78
|
return /*#__PURE__*/React.createElement(View, null);
|
|
76
79
|
}
|
|
77
80
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LazyMoveSdk.tsx"],"names":["React","Suspense","useEffect","useRef","useState","AppState","Platform","View","AsyncStorage","MoveSdk","LazyMoveSdk","children","delayToRemoveUiInBackgroundMs","prevState","currentMode","setCurrentMode","currentState","tripState","setTripState","removeUi","setRemoveUi","isListener","setIsListener","timer","appStateSubscription","addEventListener","state","current","tripStateSubscription","addTripStateListener","checkStatesAndSetTimerToRemoveUi","removeUiInBackgroundTimeoutId","getItem","DRIVING","OS","setTimer","setTimeout","setItem","toString","cancelTimer","clearTimeout","removeItem","remove","startedInBackground"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,MAArC,EAA6CC,QAA7C,QAA6D,OAA7D;AACA,SAASC,QAAT,EAAmCC,QAAnC,EAA6CC,IAA7C,QAAyD,cAAzD;AACA,OAAOC,YAAP,MAAyB,2CAAzB;AAEA,OAAOC,OAAP,
|
|
1
|
+
{"version":3,"sources":["LazyMoveSdk.tsx"],"names":["React","Suspense","useEffect","useRef","useState","AppState","Platform","View","AsyncStorage","MoveSdk","LazyMoveSdk","children","delayToRemoveUiInBackgroundMs","prevState","currentMode","setCurrentMode","currentState","tripState","setTripState","sdkState","setSdkState","removeUi","setRemoveUi","isListener","setIsListener","timer","appStateSubscription","addEventListener","state","current","tripStateSubscription","addTripStateListener","sdkStateSubscription","addSdkStateListener","checkStatesAndSetTimerToRemoveUi","removeUiInBackgroundTimeoutId","getItem","DRIVING","OS","setTimer","setTimeout","setItem","toString","cancelTimer","clearTimeout","removeItem","remove","startedInBackground","RUNNING"],"mappings":"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","sourcesContent":["import React, { Suspense, useEffect, useRef, useState } from 'react';\nimport { AppState, AppStateStatus, Platform, View } from 'react-native';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\n\nimport MoveSdk, { SdkState, TripState } from '../MoveSdk';\n\ntype LazyMoveSdkProps = {\n children: React.ReactNode;\n delayToRemoveUiInBackgroundMs?: number;\n};\n\nexport default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs = 30000 }: LazyMoveSdkProps) {\n const prevState = useRef('terminated');\n const [currentMode, setCurrentMode] = useState(AppState.currentState);\n const [tripState, setTripState] = useState<TripState>();\n const [sdkState, setSdkState] = useState<SdkState>();\n const [removeUi, setRemoveUi] = useState(false);\n const [isListener, setIsListener] = useState(false);\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout> | null | number | string = null;\n const appStateSubscription = AppState.addEventListener('change', (state: AppStateStatus) => {\n setIsListener(true);\n setCurrentMode(state);\n prevState.current = state;\n });\n const tripStateSubscription = MoveSdk.addTripStateListener(setTripState);\n const sdkStateSubscription = MoveSdk.addSdkStateListener(setSdkState);\n\n const checkStatesAndSetTimerToRemoveUi = async () => {\n const removeUiInBackgroundTimeoutId = await AsyncStorage.getItem('@removeUiInBackgroundTimeoutId');\n if (currentMode === 'background' && tripState === MoveSdk.DRIVING && !removeUiInBackgroundTimeoutId && timer === null) {\n if (Platform.OS === 'android') {\n timer = MoveSdk.setTimer(() => setRemoveUi(true), delayToRemoveUiInBackgroundMs);\n } else {\n timer = setTimeout(() => setRemoveUi(true), delayToRemoveUiInBackgroundMs);\n }\n if (timer) {\n AsyncStorage.setItem('@removeUiInBackgroundTimeoutId', timer.toString());\n }\n }\n if (currentMode === 'active' && removeUiInBackgroundTimeoutId) {\n if (Platform.OS === 'android') {\n MoveSdk.cancelTimer(removeUiInBackgroundTimeoutId);\n } else {\n clearTimeout(+removeUiInBackgroundTimeoutId);\n }\n timer = null;\n await AsyncStorage.removeItem('@removeUiInBackgroundTimeoutId');\n }\n };\n checkStatesAndSetTimerToRemoveUi();\n\n return () => {\n appStateSubscription.remove();\n tripStateSubscription.remove();\n sdkStateSubscription.remove();\n if (timer) {\n if (Platform.OS === 'android') {\n MoveSdk.cancelTimer(timer as string);\n } else {\n clearTimeout(timer as number);\n }\n timer = null;\n }\n };\n }, [currentMode, tripState, delayToRemoveUiInBackgroundMs]);\n\n useEffect(() => {\n if (currentMode === 'active' && removeUi) {\n setRemoveUi(false);\n }\n }, [currentMode, removeUi]);\n\n const startedInBackground =\n (prevState.current === 'terminated' && currentMode === 'background') ||\n (prevState.current === 'terminated' && currentMode === 'unknown') ||\n (prevState.current === 'background' && currentMode === 'background');\n\n // DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS\n if ((startedInBackground && !isListener && sdkState === MoveSdk.RUNNING) || removeUi) {\n return <View />;\n }\n\n return <Suspense fallback={<View />}>{children}</Suspense>;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import React, { Suspense, useEffect, useRef, useState } from 'react';
|
|
|
2
2
|
import { AppState, AppStateStatus, Platform, View } from 'react-native';
|
|
3
3
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
4
4
|
|
|
5
|
-
import MoveSdk, { TripState } from '../MoveSdk';
|
|
5
|
+
import MoveSdk, { SdkState, TripState } from '../MoveSdk';
|
|
6
6
|
|
|
7
7
|
type LazyMoveSdkProps = {
|
|
8
8
|
children: React.ReactNode;
|
|
@@ -13,6 +13,7 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
|
|
|
13
13
|
const prevState = useRef('terminated');
|
|
14
14
|
const [currentMode, setCurrentMode] = useState(AppState.currentState);
|
|
15
15
|
const [tripState, setTripState] = useState<TripState>();
|
|
16
|
+
const [sdkState, setSdkState] = useState<SdkState>();
|
|
16
17
|
const [removeUi, setRemoveUi] = useState(false);
|
|
17
18
|
const [isListener, setIsListener] = useState(false);
|
|
18
19
|
|
|
@@ -24,6 +25,7 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
|
|
|
24
25
|
prevState.current = state;
|
|
25
26
|
});
|
|
26
27
|
const tripStateSubscription = MoveSdk.addTripStateListener(setTripState);
|
|
28
|
+
const sdkStateSubscription = MoveSdk.addSdkStateListener(setSdkState);
|
|
27
29
|
|
|
28
30
|
const checkStatesAndSetTimerToRemoveUi = async () => {
|
|
29
31
|
const removeUiInBackgroundTimeoutId = await AsyncStorage.getItem('@removeUiInBackgroundTimeoutId');
|
|
@@ -52,6 +54,7 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
|
|
|
52
54
|
return () => {
|
|
53
55
|
appStateSubscription.remove();
|
|
54
56
|
tripStateSubscription.remove();
|
|
57
|
+
sdkStateSubscription.remove();
|
|
55
58
|
if (timer) {
|
|
56
59
|
if (Platform.OS === 'android') {
|
|
57
60
|
MoveSdk.cancelTimer(timer as string);
|
|
@@ -75,7 +78,7 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
|
|
|
75
78
|
(prevState.current === 'background' && currentMode === 'background');
|
|
76
79
|
|
|
77
80
|
// DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS
|
|
78
|
-
if ((startedInBackground && !isListener) || removeUi) {
|
|
81
|
+
if ((startedInBackground && !isListener && sdkState === MoveSdk.RUNNING) || removeUi) {
|
|
79
82
|
return <View />;
|
|
80
83
|
}
|
|
81
84
|
|