react-native-move-sdk 2.13.0 → 2.14.0-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.
- package/android/build.gradle.kts +42 -0
- package/android/gradle.properties +16 -6
- package/android/settings.gradle.kts +35 -0
- package/android/src/{main/java/in/dolph/move/sdk → legacy}/MoveSdkModule.kt +30 -195
- package/android/src/main/AndroidManifest.xml +1 -11
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/DeviceScanner.kt +19 -21
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/Mapper.kt +3 -2
- package/android/src/main/java/com/movesdk/MoveExtensions.kt +188 -0
- package/android/src/main/java/{in/dolph/move/sdk/MoveSdkRepository.kt → com/movesdk/MoveSdkConfigRepository.kt} +3 -1
- package/android/src/main/java/com/movesdk/MoveSdkPackage.kt +32 -0
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/NativeMoveSdkWrapper.kt +201 -61
- package/android/src/main/java/com/movesdk/extentions/ConnectionExt.kt +52 -0
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/extentions/PermissionUtils.kt +1 -1
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/extentions/SharedPreferencesExt.kt +1 -1
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/metadata/MetadataStorage.kt +1 -1
- package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/metadata/MetadataStorageImpl.kt +2 -2
- package/android/src/main/java/com/movesdk/shared/Constants.kt +39 -0
- package/android/src/turbo/MoveSdkModule.kt +422 -0
- package/ios/MoveSdk.h +13 -0
- package/ios/MoveSdk.mm +717 -0
- package/ios/MoveSdk.swift +1022 -0
- package/ios/{NativeModule/MoveSdkDeviceScanner.swift → MoveSdkDeviceScanner.swift} +1 -1
- package/lib/commonjs/NativeMoveSdk.js +21 -0
- package/lib/commonjs/NativeMoveSdk.js.map +1 -0
- package/lib/commonjs/components/LazyMoveSdk.js +22 -41
- package/lib/commonjs/components/LazyMoveSdk.js.map +1 -1
- package/lib/commonjs/index.js +331 -25
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/module/NativeMoveSdk.js +17 -0
- package/lib/module/NativeMoveSdk.js.map +1 -0
- package/lib/module/components/LazyMoveSdk.js +15 -20
- package/lib/module/components/LazyMoveSdk.js.map +1 -1
- package/lib/module/index.js +337 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/example/src/App.d.ts +2 -0
- package/lib/typescript/commonjs/example/src/App.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeMoveSdk.d.ts +133 -0
- package/lib/typescript/commonjs/src/NativeMoveSdk.d.ts.map +1 -0
- package/lib/typescript/{components → commonjs/src/components}/LazyMoveSdk.d.ts +2 -1
- package/lib/typescript/commonjs/src/components/LazyMoveSdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +84 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/example/src/App.d.ts +2 -0
- package/lib/typescript/module/example/src/App.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeMoveSdk.d.ts +133 -0
- package/lib/typescript/module/src/NativeMoveSdk.d.ts.map +1 -0
- package/lib/typescript/module/src/components/LazyMoveSdk.d.ts +8 -0
- package/lib/typescript/module/src/components/LazyMoveSdk.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +84 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/package.json +197 -138
- package/react-native-move-sdk.podspec +30 -9
- package/src/NativeMoveSdk.ts +227 -0
- package/src/components/LazyMoveSdk.tsx +2 -2
- package/src/{MoveSdk.ts → index.tsx} +131 -199
- package/android/.project +0 -17
- package/android/build.gradle +0 -153
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -8
- package/android/gradlew +0 -183
- package/android/gradlew.bat +0 -100
- package/android/src/main/java/in/dolph/move/sdk/MoveExtensions.kt +0 -72
- package/android/src/main/java/in/dolph/move/sdk/MoveSdkPackage.kt +0 -19
- package/android/src/main/java/in/dolph/move/sdk/WrapperBtConnectionsReceiver.kt +0 -99
- package/android/src/main/res/drawable-anydpi-v24/ic_notification.xml +0 -13
- package/android/src/main/res/drawable-hdpi/ic_notification.png +0 -0
- package/android/src/main/res/drawable-mdpi/ic_notification.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_notification.png +0 -0
- package/android/src/main/res/drawable-xxhdpi/ic_notification.png +0 -0
- package/android/src/main/res/values/strings.xml +0 -9
- package/android/src/main/strings.xml +0 -0
- package/android/src/test/java/io/dolphin/move/MoveWrapperTest.kt +0 -190
- package/ios/MoveSdk-Bridging-Header.h +0 -3
- package/ios/MoveSdk.xcodeproj/project.pbxproj +0 -287
- package/ios/MoveSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
- package/ios/MoveSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/NativeModule/MoveSdk.h +0 -144
- package/ios/NativeModule/MoveSdk.swift +0 -1359
- package/lib/commonjs/MoveSdk.js +0 -443
- package/lib/commonjs/MoveSdk.js.map +0 -1
- package/lib/module/MoveSdk.js +0 -432
- package/lib/module/MoveSdk.js.map +0 -1
- package/lib/typescript/MoveSdk.d.ts +0 -158
- package/lib/typescript/index.d.ts +0 -3
- package/src/index.ts +0 -3
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
package com.movesdk.extentions
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import android.bluetooth.BluetoothDevice
|
|
5
|
+
import android.bluetooth.BluetoothManager
|
|
6
|
+
import android.bluetooth.BluetoothProfile
|
|
7
|
+
import android.content.Context
|
|
8
|
+
import kotlin.coroutines.resume
|
|
9
|
+
import kotlin.coroutines.suspendCoroutine
|
|
10
|
+
|
|
11
|
+
private val btProfiles =
|
|
12
|
+
listOf<Int>(
|
|
13
|
+
BluetoothProfile.A2DP,
|
|
14
|
+
BluetoothProfile.HEADSET,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
@SuppressLint("MissingPermission")
|
|
18
|
+
suspend fun Context.getConnectedDevices(): List<BluetoothDevice> {
|
|
19
|
+
val connectedDevices = mutableSetOf<BluetoothDevice>()
|
|
20
|
+
val profileIterator = btProfiles.iterator()
|
|
21
|
+
while (profileIterator.hasNext()) {
|
|
22
|
+
val profile = profileIterator.next()
|
|
23
|
+
connectedDevices.addAll(
|
|
24
|
+
getConnectedDevices(profile),
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
val bluetoothManager = getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager
|
|
28
|
+
bluetoothManager?.getConnectedDevices(BluetoothProfile.GATT)?.let(connectedDevices::addAll)
|
|
29
|
+
return connectedDevices.toList()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private suspend fun Context.getConnectedDevices(profile: Int): List<BluetoothDevice> =
|
|
33
|
+
suspendCoroutine { continuation ->
|
|
34
|
+
val adapter = getSystemService(BluetoothManager::class.java)?.adapter
|
|
35
|
+
adapter?.getProfileProxy(
|
|
36
|
+
this,
|
|
37
|
+
object : BluetoothProfile.ServiceListener {
|
|
38
|
+
override fun onServiceConnected(
|
|
39
|
+
profile: Int,
|
|
40
|
+
proxy: BluetoothProfile?,
|
|
41
|
+
) {
|
|
42
|
+
continuation.resume(proxy?.connectedDevices ?: emptyList())
|
|
43
|
+
adapter.closeProfileProxy(profile, proxy)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
override fun onServiceDisconnected(profile: Int) {}
|
|
47
|
+
},
|
|
48
|
+
profile,
|
|
49
|
+
) ?: {
|
|
50
|
+
continuation.resume(emptyList())
|
|
51
|
+
}
|
|
52
|
+
}
|
package/android/src/main/java/{in/dolph/move/sdk → com/movesdk}/metadata/MetadataStorageImpl.kt
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
package
|
|
1
|
+
package com.movesdk.metadata
|
|
2
2
|
|
|
3
3
|
import android.content.SharedPreferences
|
|
4
4
|
import android.util.Log
|
|
5
5
|
import com.google.gson.Gson
|
|
6
6
|
import com.google.gson.reflect.TypeToken
|
|
7
|
-
import
|
|
7
|
+
import com.movesdk.extentions.stringNullable
|
|
8
8
|
|
|
9
9
|
class MetadataStorageImpl(
|
|
10
10
|
sharedPreferences: SharedPreferences,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
package com.movesdk.shared
|
|
2
|
+
|
|
3
|
+
const val EVENT_INIT_ERROR = "MoveSdk-InitError"
|
|
4
|
+
const val EVENT_MOVE_STATE = "MoveSdk-State"
|
|
5
|
+
const val EVENT_TRIP_STATE = "MoveSdk-TripState"
|
|
6
|
+
const val EVENT_AUTH_STATE = "MoveSdk-AuthState"
|
|
7
|
+
const val EVENT_ERRORS = "MoveSdk-Errors"
|
|
8
|
+
const val EVENT_WARNINGS = "MoveSdk-Warnings"
|
|
9
|
+
const val EVENT_MOVE_DEVICES = "MoveSdk-Devices"
|
|
10
|
+
const val EVENT_AUTH_BATTERY_PERMISSION = "MoveSdk-Permission-BatteryOptimization"
|
|
11
|
+
const val EVENT_AUTH_OVERLAY_PERMISSION = "MoveSdk-Permission-Overlay"
|
|
12
|
+
const val EVENT_MOVE_SCAN_RESULT = "MOVE_SDK_SCAN_RESULT"
|
|
13
|
+
const val EVENT_MOVE_SDK_APP = "MOVE_SDK_APP_EVENT"
|
|
14
|
+
const val EVENT_MOVE_CONFIG_UPDATE = "MOVE_SDK_CONFIG_UPDATE"
|
|
15
|
+
const val EVENT_MOVE_SDK_TRIP_START = "MOVE_SDK_TRIP_START"
|
|
16
|
+
const val EVENT_MOVE_SDK_DEVICE_STATE = "MOVE_SDK_DEVICE_STATE"
|
|
17
|
+
const val EVENT_MOVE_SDK_LOG = "MOVE_SDK_LOG"
|
|
18
|
+
const val EVENT_MOVE_SDK_HEALTH = "MOVE_SDK_HEALTH"
|
|
19
|
+
|
|
20
|
+
const val ARGUMENT_ACCESS_TOKEN = "accessToken"
|
|
21
|
+
const val ARGUMENT_REFRESH_TOKEN = "refreshToken"
|
|
22
|
+
const val ARGUMENT_STATE = "state"
|
|
23
|
+
const val ARGUMENT_ERROR = "errors"
|
|
24
|
+
const val ARGUMENT_ERRORS = "errors"
|
|
25
|
+
const val ARGUMENT_WARNINGS = "warnings"
|
|
26
|
+
const val ARGUMENT_LOG = "log"
|
|
27
|
+
const val ARGUMENT_WARNING = "warnings"
|
|
28
|
+
const val ARGUMENT_ERROR_REASON = "errorReason"
|
|
29
|
+
const val ARGUMENT_DEVICES = "devices"
|
|
30
|
+
const val ARGUMENT_SCAN_RESULTS = "results"
|
|
31
|
+
const val ARGUMENT_MOVE_SERVICES = "services"
|
|
32
|
+
const val ARGUMENT_MOVE_HEALTH = "health"
|
|
33
|
+
|
|
34
|
+
const val PROMISE_OK = "OK"
|
|
35
|
+
const val LOG_TAG = "MOVE_SDK"
|
|
36
|
+
const val ERROR_CODE = "MOVE_SDK_ERROR"
|
|
37
|
+
|
|
38
|
+
const val OVERLAY_REQUEST_CODE = 1
|
|
39
|
+
const val BATTERY_OPTIMIZATION_REQUEST_CODE = 2
|
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
package com.movesdk
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import android.content.Intent
|
|
5
|
+
import android.provider.Settings
|
|
6
|
+
import android.util.Log
|
|
7
|
+
import com.facebook.react.bridge.ActivityEventListener
|
|
8
|
+
import com.facebook.react.bridge.Callback
|
|
9
|
+
import com.facebook.react.bridge.Promise
|
|
10
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
11
|
+
import com.facebook.react.bridge.ReadableArray
|
|
12
|
+
import com.facebook.react.bridge.ReadableMap
|
|
13
|
+
import com.movesdk.shared.ARGUMENT_STATE
|
|
14
|
+
import com.movesdk.shared.BATTERY_OPTIMIZATION_REQUEST_CODE
|
|
15
|
+
import com.movesdk.shared.EVENT_AUTH_BATTERY_PERMISSION
|
|
16
|
+
import com.movesdk.shared.EVENT_AUTH_OVERLAY_PERMISSION
|
|
17
|
+
import com.movesdk.shared.LOG_TAG
|
|
18
|
+
import com.movesdk.shared.OVERLAY_REQUEST_CODE
|
|
19
|
+
import io.dolphin.move.MoveSdk
|
|
20
|
+
import io.dolphin.move.MoveServiceWarning
|
|
21
|
+
|
|
22
|
+
class MoveSdkModule internal constructor(context: ReactApplicationContext) :
|
|
23
|
+
NativeMoveSdkSpec(context), ActivityEventListener {
|
|
24
|
+
|
|
25
|
+
companion object {
|
|
26
|
+
const val NAME = "MoveSdk"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private val reactContext: ReactApplicationContext = context
|
|
30
|
+
|
|
31
|
+
private val nativeSdkWrapper = NativeMoveSdkWrapper.getInstance(context)
|
|
32
|
+
|
|
33
|
+
init {
|
|
34
|
+
nativeSdkWrapper.applyDelegate(this)
|
|
35
|
+
|
|
36
|
+
// **** PERMISSIONS MODULE START *****
|
|
37
|
+
reactContext.addActivityEventListener(this)
|
|
38
|
+
// **** PERMISSIONS MODULE START *****
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun getName(): String {
|
|
42
|
+
return NAME
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override fun addListener(eventType: String?) {
|
|
46
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun removeListeners(count: Double) {
|
|
50
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
override fun cancelTimer(key: String?) {
|
|
54
|
+
nativeSdkWrapper.cancelTimer(key = key)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
override fun canDrawOverlays(promise: Promise) {
|
|
58
|
+
promise.resolve(Settings.canDrawOverlays(reactContext))
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
override fun finishCurrentTrip() {
|
|
62
|
+
nativeSdkWrapper.finishCurrentTrip()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun forceTripRecognition(duration: Double) {
|
|
66
|
+
nativeSdkWrapper.forceTripRecognition(duration.toLong())
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
override fun getAuthState(promise: Promise) {
|
|
70
|
+
nativeSdkWrapper.getAuthState(promise)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
override fun getBluetoothPermission(promise: Promise) {
|
|
74
|
+
promise.resolve(nativeSdkWrapper.hasDiscoveryPermissions())
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
override fun getBluetoothState(promise: Promise) {
|
|
78
|
+
promise.resolve(nativeSdkWrapper.isBluetoothEnabled())
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
override fun getDeviceQualifier(promise: Promise) {
|
|
82
|
+
promise.resolve(nativeSdkWrapper.getDeviceQualifier())
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
override fun getErrors(promise: Promise?) {
|
|
86
|
+
nativeSdkWrapper.getErrors(promise)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
override fun geocode(
|
|
90
|
+
latitude: Double,
|
|
91
|
+
longitude: Double,
|
|
92
|
+
promise: Promise
|
|
93
|
+
) {
|
|
94
|
+
nativeSdkWrapper.geocode(latitude, longitude, promise)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
override fun getRegisteredDevices(promise: Promise) {
|
|
98
|
+
nativeSdkWrapper.getRegisteredDevices(promise)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
override fun getState(promise: Promise) {
|
|
102
|
+
nativeSdkWrapper.getState(promise)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
override fun getTripState(promise: Promise) {
|
|
106
|
+
nativeSdkWrapper.getTripState(promise)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
override fun getWarnings(promise: Promise) {
|
|
110
|
+
val warnings: List<MoveServiceWarning> = nativeSdkWrapper.getWarnings() ?: emptyList()
|
|
111
|
+
promise.resolve(warnings.warningsToArray().toWritableArray())
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
override fun ignoreCurrentTrip() {
|
|
115
|
+
nativeSdkWrapper.ignoreCurrentTrip()
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
override fun initiateAssistanceCall(promise: Promise) {
|
|
119
|
+
nativeSdkWrapper.initiateAssistanceCall(promise)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
override fun isAppIgnoringBatteryOptimization(promise: Promise?) {
|
|
123
|
+
promise?.resolve(reactContext.isAppIgnoringBatteryOptimization())
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
override fun requestAppIgnoringBatteryOptimization() {
|
|
127
|
+
nativeSdkWrapper.requestAppIgnoringBatteryOptimization(reactContext)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
override fun isAuthValid(promise: Promise) {
|
|
131
|
+
nativeSdkWrapper.isAuthValid(promise)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
override fun keepActive(enabled: Boolean) {
|
|
135
|
+
nativeSdkWrapper.keepActive(enabled)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
override fun keepInForeground(enabled: Boolean) {
|
|
139
|
+
nativeSdkWrapper.keepInForeground(enabled)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
override fun mockLocations(allow: Boolean) {
|
|
143
|
+
nativeSdkWrapper.allowMockLocations(allow)
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
override fun registerDevices(
|
|
147
|
+
devices: ReadableArray?,
|
|
148
|
+
promise: Promise
|
|
149
|
+
) {
|
|
150
|
+
try {
|
|
151
|
+
nativeSdkWrapper.registerDevices(
|
|
152
|
+
rawData = devices?.toArrayList() as? ArrayList<Map<String, String>>,
|
|
153
|
+
promise = promise,
|
|
154
|
+
)
|
|
155
|
+
} catch (t: Throwable) {
|
|
156
|
+
Log.e("SDK Module", t.message, t)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
override fun requestBluetoothAlwaysUsagePermission() {
|
|
161
|
+
// Stub
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
override fun requestDrawOverlaysPermission() {
|
|
165
|
+
nativeSdkWrapper.requestDrawOverlaysPermission(reactContext)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
override fun requestMotionPermission() {
|
|
169
|
+
// Stub
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
override fun resolveError() {
|
|
173
|
+
nativeSdkWrapper.resolveError()
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
override fun setAssistanceMetaData(data: String?) {
|
|
177
|
+
nativeSdkWrapper.setAssistanceMetaData(data)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
override fun setLiveLocationTag(
|
|
181
|
+
tag: String?,
|
|
182
|
+
promise: Promise?
|
|
183
|
+
) {
|
|
184
|
+
if (nativeSdkWrapper.setLiveLocationTag(tag)) {
|
|
185
|
+
promise?.resolve(true)
|
|
186
|
+
} else {
|
|
187
|
+
promise?.reject(Exception("Can't set location tag, check Move SDK logs for more information"))
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
override fun setTimer(callback: Callback, delay: Double) {
|
|
192
|
+
nativeSdkWrapper.setTimer(
|
|
193
|
+
delay = delay.toInt(),
|
|
194
|
+
key = "key",
|
|
195
|
+
callback = callback
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
override fun setTripMetadata(metadata: ReadableMap?) {
|
|
200
|
+
val metadataMap = metadata?.toHashMap()?.mapValues { it.value.toString() }
|
|
201
|
+
nativeSdkWrapper.setTripMetadata(metadataMap)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
override fun setup(
|
|
205
|
+
auth: ReadableMap?,
|
|
206
|
+
config: ReadableMap?,
|
|
207
|
+
options: ReadableMap?,
|
|
208
|
+
platformParams: ReadableArray?,
|
|
209
|
+
promise: Promise?
|
|
210
|
+
) {
|
|
211
|
+
try {
|
|
212
|
+
val authMap = auth?.toHashMap() ?: throw IllegalArgumentException("Auth object is null")
|
|
213
|
+
val userId = authMap["userId"] as String
|
|
214
|
+
val accessToken = authMap["accessToken"] as String
|
|
215
|
+
val refreshToken = authMap["refreshToken"] as String
|
|
216
|
+
val projectId = authMap["projectId"] as Int
|
|
217
|
+
|
|
218
|
+
config ?: throw IllegalArgumentException("Config object is null")
|
|
219
|
+
val timelineDetectionServices = config.getArray("timelineDetectionServices")!!
|
|
220
|
+
val drivingServices = config.getArray("drivingServices")!!
|
|
221
|
+
val walkingServices = config.getArray("walkingServices")!!
|
|
222
|
+
|
|
223
|
+
val platformParamsIterator = platformParams?.toArrayList()?.iterator()
|
|
224
|
+
?: throw IllegalArgumentException("Platform Params object is null")
|
|
225
|
+
val recognitionNotificationTitle = platformParamsIterator.next() as String
|
|
226
|
+
val recognitionNotificationText = platformParamsIterator.next() as String
|
|
227
|
+
val tripNotificationTitle = platformParamsIterator.next() as String
|
|
228
|
+
val tripNotificationText = platformParamsIterator.next() as String
|
|
229
|
+
|
|
230
|
+
nativeSdkWrapper.setup(
|
|
231
|
+
userId = userId,
|
|
232
|
+
accessToken = accessToken,
|
|
233
|
+
refreshToken = refreshToken,
|
|
234
|
+
projectId = projectId,
|
|
235
|
+
timelineDetectionServices = timelineDetectionServices,
|
|
236
|
+
drivingServices = drivingServices,
|
|
237
|
+
walkingServices = walkingServices,
|
|
238
|
+
options = options,
|
|
239
|
+
recognitionNotificationTitle = recognitionNotificationTitle,
|
|
240
|
+
recognitionNotificationText = recognitionNotificationText,
|
|
241
|
+
tripNotificationTitle = tripNotificationTitle,
|
|
242
|
+
tripNotificationText = tripNotificationText,
|
|
243
|
+
promise = promise
|
|
244
|
+
)
|
|
245
|
+
} catch (e: Exception) {
|
|
246
|
+
Log.e(LOG_TAG, "Error during setup", e)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
override fun setupWithCode(
|
|
251
|
+
code: String?,
|
|
252
|
+
config: ReadableMap?,
|
|
253
|
+
options: ReadableMap?,
|
|
254
|
+
platformParams: ReadableArray?,
|
|
255
|
+
promise: Promise?
|
|
256
|
+
) {
|
|
257
|
+
try {
|
|
258
|
+
code ?: throw IllegalArgumentException("Code is null")
|
|
259
|
+
config ?: throw IllegalArgumentException("Config object is null")
|
|
260
|
+
val timelineDetectionServices = config.getArray("timelineDetectionServices")!!
|
|
261
|
+
val drivingServices = config.getArray("drivingServices")!!
|
|
262
|
+
val walkingServices = config.getArray("walkingServices")!!
|
|
263
|
+
|
|
264
|
+
val platformParamsIterator = platformParams?.toArrayList()?.iterator()
|
|
265
|
+
?: throw IllegalArgumentException("Platform Params object is null")
|
|
266
|
+
val recognitionNotificationTitle = platformParamsIterator.next() as String
|
|
267
|
+
val recognitionNotificationText = platformParamsIterator.next() as String
|
|
268
|
+
val tripNotificationTitle = platformParamsIterator.next() as String
|
|
269
|
+
val tripNotificationText = platformParamsIterator.next() as String
|
|
270
|
+
|
|
271
|
+
nativeSdkWrapper.setup(
|
|
272
|
+
code = code,
|
|
273
|
+
timelineDetectionServices = timelineDetectionServices,
|
|
274
|
+
drivingServices = drivingServices,
|
|
275
|
+
walkingServices = walkingServices,
|
|
276
|
+
options = options,
|
|
277
|
+
recognitionNotificationTitle = recognitionNotificationTitle,
|
|
278
|
+
recognitionNotificationText = recognitionNotificationText,
|
|
279
|
+
tripNotificationTitle = tripNotificationTitle,
|
|
280
|
+
tripNotificationText = tripNotificationText,
|
|
281
|
+
promise = promise
|
|
282
|
+
)
|
|
283
|
+
} catch (e: Exception) {
|
|
284
|
+
Log.e(LOG_TAG, "Error during setup", e)
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
override fun shutdown(force: Boolean, promise: Promise?) {
|
|
289
|
+
nativeSdkWrapper.shutdown(force = force == true, promise = promise)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
override fun startAutomaticDetection(promise: Promise?) {
|
|
293
|
+
promise?.resolve(nativeSdkWrapper.startAutomaticDetection())
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
override fun startScanningDevices(
|
|
297
|
+
filter: ReadableArray?,
|
|
298
|
+
uuid: String?,
|
|
299
|
+
manufacturerId: Double?
|
|
300
|
+
) {
|
|
301
|
+
Log.i("MODULE_SCAN_DEVICE", "startScanningDevices: ${filter}")
|
|
302
|
+
val filters = try {
|
|
303
|
+
filter?.toArrayList()?.map { it.toString() }.orEmpty()
|
|
304
|
+
} catch (e: Exception) {
|
|
305
|
+
emptyList<String>()
|
|
306
|
+
}
|
|
307
|
+
nativeSdkWrapper.startScanningDevices(filters, manufacturerId?.toInt(), uuid)
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
override fun startTrip(
|
|
311
|
+
metadata: ReadableMap?,
|
|
312
|
+
promise: Promise?
|
|
313
|
+
) {
|
|
314
|
+
val metadataMap = metadata?.toHashMap()?.mapValues { it.value.toString() }
|
|
315
|
+
promise?.resolve(MoveSdk.get()?.startTrip(metadataMap) == true)
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
override fun stopAutomaticDetection(promise: Promise?) {
|
|
319
|
+
promise?.resolve(nativeSdkWrapper.stopAutomaticDetection())
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
override fun stopScanningDevices() {
|
|
323
|
+
nativeSdkWrapper.stopScanningDevices()
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
override fun synchronizeUserData(promise: Promise) {
|
|
327
|
+
nativeSdkWrapper.synchronizeUserData(promise)
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
override fun unregisterDevices(
|
|
331
|
+
devices: ReadableArray?,
|
|
332
|
+
promise: Promise
|
|
333
|
+
) {
|
|
334
|
+
try {
|
|
335
|
+
nativeSdkWrapper.unregisterDevices(
|
|
336
|
+
rawData = devices?.toArrayList() as? ArrayList<Map<String, String>>,
|
|
337
|
+
promise = promise,
|
|
338
|
+
)
|
|
339
|
+
} catch (t: Throwable) {
|
|
340
|
+
Log.e("SDK Module", t.message, t)
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
override fun updateAuth(
|
|
345
|
+
auth: ReadableMap?,
|
|
346
|
+
promise: Promise?
|
|
347
|
+
) {
|
|
348
|
+
try {
|
|
349
|
+
val authMap = auth?.toHashMap() ?: throw IllegalArgumentException("Auth object is null")
|
|
350
|
+
val contractId = authMap["contractId"] as String
|
|
351
|
+
val accessToken = authMap["accessToken"] as String
|
|
352
|
+
val refreshToken = authMap["refreshToken"] as String
|
|
353
|
+
val productId = authMap["productId"] as Int
|
|
354
|
+
nativeSdkWrapper.updateAuth(contractId, accessToken, refreshToken, productId)
|
|
355
|
+
} catch (e: Exception) {
|
|
356
|
+
Log.e(LOG_TAG, "Error updating auth", e)
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
override fun updateConfig(
|
|
361
|
+
config: ReadableMap?,
|
|
362
|
+
options: ReadableMap?
|
|
363
|
+
) {
|
|
364
|
+
try {
|
|
365
|
+
nativeSdkWrapper.updateConfig(
|
|
366
|
+
timelineDetectionServices = config?.getArray("timelineDetectionServices")!!,
|
|
367
|
+
drivingServices = config.getArray("drivingServices")!!,
|
|
368
|
+
walkingServices = config.getArray("walkingServices")!!,
|
|
369
|
+
options
|
|
370
|
+
)
|
|
371
|
+
} catch (e: Exception) {
|
|
372
|
+
Log.e(LOG_TAG, "Error updating config", e)
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
fun emitDeviceEvent(eventName: String, data: Array<Any>) {
|
|
377
|
+
reactContext.emitDeviceArrayEvent(eventName, data)
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
fun emitDeviceEvent(eventName: String, data: Map<*, *>) {
|
|
381
|
+
reactContext.emitDeviceMapEvent(eventName, data)
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
fun emitDeviceEvent(eventName: String, data: String) {
|
|
385
|
+
reactContext.emitDeviceStringEvent(eventName, data)
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
override fun onActivityResult(
|
|
389
|
+
activity: Activity,
|
|
390
|
+
requestCode: Int,
|
|
391
|
+
resultCode: Int,
|
|
392
|
+
data: Intent?
|
|
393
|
+
) {
|
|
394
|
+
if (requestCode == OVERLAY_REQUEST_CODE) {
|
|
395
|
+
val eventData = mutableMapOf<Any, Any>()
|
|
396
|
+
eventData[ARGUMENT_STATE] = Settings.canDrawOverlays(reactContext)
|
|
397
|
+
emitDeviceEvent(EVENT_AUTH_OVERLAY_PERMISSION, eventData)
|
|
398
|
+
} else if (requestCode == BATTERY_OPTIMIZATION_REQUEST_CODE) {
|
|
399
|
+
val eventData = mutableMapOf<Any, Any>()
|
|
400
|
+
eventData[ARGUMENT_STATE] = reactContext.isAppIgnoringBatteryOptimization()
|
|
401
|
+
emitDeviceEvent(EVENT_AUTH_BATTERY_PERMISSION, eventData)
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
override fun onNewIntent(intent: Intent) {
|
|
406
|
+
// Stub
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
override fun getConstants(): Map<String, Any>? {
|
|
410
|
+
val constants = mutableMapOf<String, Any>()
|
|
411
|
+
constants["version"] = MoveSdk.version
|
|
412
|
+
return constants.toMap()
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
override fun startNativeSdkStateListener() {
|
|
416
|
+
nativeSdkWrapper.addSdkStateListener()
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
override fun requestHealthPermissions(promise: Promise?) {
|
|
420
|
+
nativeSdkWrapper.requestHealthPermissions(promise)
|
|
421
|
+
}
|
|
422
|
+
}
|
package/ios/MoveSdk.h
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#import <React/RCTEventEmitter.h>
|
|
2
|
+
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
#import "RNMoveSdkSpec.h"
|
|
5
|
+
|
|
6
|
+
@interface MoveSdk : RCTEventEmitter <NativeMoveSdkSpec>
|
|
7
|
+
#else
|
|
8
|
+
#import <React/RCTBridgeModule.h>
|
|
9
|
+
|
|
10
|
+
@interface MoveSdk : RCTEventEmitter <RCTBridgeModule>
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
@end
|