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.
- package/android/build.gradle +1 -1
- package/ios/NativeModule/MoveSdk.swift +9 -5
- package/lib/commonjs/components/LazyMoveSdk.js +5 -1
- package/lib/commonjs/components/LazyMoveSdk.js.map +1 -1
- package/lib/module/components/LazyMoveSdk.js +4 -1
- package/lib/module/components/LazyMoveSdk.js.map +1 -1
- package/package.json +1 -1
- package/react-native-move-sdk.podspec +1 -1
- package/src/components/LazyMoveSdk.tsx +5 -2
package/android/build.gradle
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
611
|
-
scanner
|
|
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
|
-
|
|
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":";;;;;;;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":"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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":"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
|
|