react-native-move-sdk 2.11.0 → 2.12.0

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.
@@ -144,7 +144,7 @@ dependencies {
144
144
  // noinspection GradleDynamicVersion
145
145
 
146
146
  implementation "com.facebook.react:react-native:+"
147
- api "io.dolphin.move:move-sdk:2.11.1.91"
147
+ api "io.dolphin.move:move-sdk:2.12.0.92"
148
148
 
149
149
  testImplementation 'junit:junit:4.13.2'
150
150
  testImplementation "androidx.test:core:1.4.0"
@@ -607,11 +607,13 @@ class RCTMoveSdk: RCTEventEmitter {
607
607
  /// - manufacturerId: iBeacon manufacturerId. Unused.
608
608
  @objc
609
609
  func startScanningDevices(_ filter: [String], uuid: String?, manufacturerId: Any?) {
610
- if scanner == nil {
611
- scanner = MoveSdkDeviceScanner()
610
+ DispatchQueue.main.async {
611
+ if self.scanner == nil {
612
+ self.scanner = MoveSdkDeviceScanner()
613
+ }
614
+ self.scanner?.delegate = self
615
+ self.scanner?.startScanning(filter: filter, uuid: uuid)
612
616
  }
613
- scanner?.delegate = self
614
- scanner?.startScanning(filter: filter, uuid: uuid)
615
617
  }
616
618
 
617
619
  /// Wrapper for `MoveSDK.register(devices)`.
@@ -645,7 +647,9 @@ class RCTMoveSdk: RCTEventEmitter {
645
647
  /// Device scanner stop scanning.
646
648
  @objc
647
649
  func stopScanningDevices() {
648
- scanner?.stopScanning()
650
+ DispatchQueue.main.async {
651
+ self.scanner?.stopScanning()
652
+ }
649
653
  }
650
654
 
651
655
  /// Wrapper for `MoveSDK.resolveSDKStateError()`.
@@ -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":"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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, { 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 [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\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 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) || removeUi) {\n return <View />;\n }\n\n return <Suspense fallback={<View />}>{children}</Suspense>;\n}\n"]}
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":"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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"]}
@@ -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":"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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, { 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 [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\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 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) || removeUi) {\n return <View />;\n }\n\n return <Suspense fallback={<View />}>{children}</Suspense>;\n}\n"]}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-move-sdk",
3
- "version": "2.11.0",
3
+ "version": "2.12.0",
4
4
  "description": "React Native library for MOVE SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -18,5 +18,5 @@ Pod::Spec.new do |s|
18
18
  s.source_files = "ios/**/*.{h,m,mm,swift}"
19
19
 
20
20
  s.dependency 'React'
21
- s.dependency 'DolphinMoveSDK', '2.11.0.309'
21
+ s.dependency 'DolphinMoveSDK', '2.12.0.310'
22
22
  end
@@ -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