react-native-move-sdk 2.10.3 → 2.11.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.10.1.88"
147
+ api "io.dolphin.move:move-sdk:2.11.1.91"
148
148
 
149
149
  testImplementation 'junit:junit:4.13.2'
150
150
  testImplementation "androidx.test:core:1.4.0"
@@ -1,6 +1,10 @@
1
1
  package `in`.dolph.move.sdk
2
2
 
3
+ import android.util.Log
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import io.dolphin.move.DeviceDiscovery
3
6
  import io.dolphin.move.MoveDevice
7
+ import io.dolphin.move.MoveOptions
4
8
  import io.dolphin.move.MoveScanResult
5
9
 
6
10
  fun List<MoveScanResult>.toScanResultArray(): Array<Any> {
@@ -26,3 +30,33 @@ fun List<MoveDevice>.toMoveDeviceTypedArray(): Array<Any> {
26
30
  }
27
31
  return devices.toTypedArray()
28
32
  }
33
+
34
+ fun extractMoveOptions(options: ReadableMap): MoveOptions? {
35
+ val featureOptions = options.toHashMap()
36
+ return try {
37
+ val motionPermissionMandatory = featureOptions["motionPermissionMandatory"] as? Boolean
38
+ val useBackendConfig = featureOptions["useBackendConfig"] as? Boolean
39
+ val backgroundLocationPermissionMandatory = featureOptions["backgroundLocationPermissionMandatory"] as? Boolean
40
+ val overlayPermissionMandatory = featureOptions["overlayPermissionMandatory"] as? Boolean
41
+ val deviceDiscovery = featureOptions["deviceDiscovery"] as? Map<String, Any>
42
+ val startDelay = deviceDiscovery?.get("startDelay") as? Double
43
+ val duration = deviceDiscovery?.get("duration") as? Double
44
+ val interval = deviceDiscovery?.get("interval") as? Double
45
+ val stopScanOnFirstDiscovered = deviceDiscovery?.get("stopScanOnFirstDiscovered") as? Boolean
46
+ MoveOptions(
47
+ motionPermissionRequired = motionPermissionMandatory ?: false,
48
+ useBackendConfig = useBackendConfig ?: false,
49
+ backgroundLocationPermissionMandatory = backgroundLocationPermissionMandatory ?: false,
50
+ overlayPermissionMandatory = overlayPermissionMandatory ?: true,
51
+ deviceDiscovery = DeviceDiscovery(
52
+ startDelay = startDelay?.toLong(),
53
+ duration = duration?.toLong(),
54
+ interval = interval?.toLong(),
55
+ stopScanOnFirstDiscovered = stopScanOnFirstDiscovered ?: false,
56
+ ),
57
+ )
58
+ } catch (e: Exception) {
59
+ Log.e(MoveSdkModule.LOG_TAG, "Error extractions Move options from JS map: ${e.message}", e)
60
+ null
61
+ }
62
+ }
@@ -44,6 +44,7 @@ internal const val EVENT_MOVE_CONFIG_UPDATE = "MOVE_SDK_CONFIG_UPDATE"
44
44
  internal const val EVENT_MOVE_SDK_TRIP_START = "MOVE_SDK_TRIP_START"
45
45
  internal const val EVENT_MOVE_SDK_DEVICE_STATE = "MOVE_SDK_DEVICE_STATE"
46
46
  internal const val EVENT_MOVE_SDK_LOG = "MOVE_SDK_LOG"
47
+ internal const val EVENT_MOVE_SDK_HEALTH = "MOVE_SDK_HEALTH"
47
48
 
48
49
  internal const val ARGUMENT_ACCESS_TOKEN = "accessToken"
49
50
  internal const val ARGUMENT_REFRESH_TOKEN = "refreshToken"
@@ -57,6 +58,7 @@ internal const val ARGUMENT_ERROR_REASON = "errorReason"
57
58
  internal const val ARGUMENT_DEVICES = "devices"
58
59
  internal const val ARGUMENT_SCAN_RESULTS = "results"
59
60
  internal const val ARGUMENT_MOVE_SERVICES = "services"
61
+ internal const val ARGUMENT_MOVE_HEALTH = "health"
60
62
 
61
63
  internal const val PROMISE_OK = "OK"
62
64
 
@@ -425,11 +427,13 @@ class MoveSdkModule(context: ReactApplicationContext) : ReactContextBaseJavaModu
425
427
  timelineDetectionServices: ReadableArray,
426
428
  drivingServices: ReadableArray,
427
429
  walkingServices: ReadableArray,
430
+ options: ReadableMap?,
428
431
  ) {
429
432
  nativeSdkWrapper.updateConfig(
430
433
  timelineDetectionServices,
431
434
  drivingServices,
432
435
  walkingServices,
436
+ options
433
437
  )
434
438
  }
435
439
 
@@ -458,6 +462,11 @@ class MoveSdkModule(context: ReactApplicationContext) : ReactContextBaseJavaModu
458
462
  promise.resolve(nativeSdkWrapper.hasDiscoveryPermissions())
459
463
  }
460
464
 
465
+ @ReactMethod
466
+ fun startNativeSdkStateListener() {
467
+ nativeSdkWrapper.addSdkStateListener()
468
+ }
469
+
461
470
  // region PERMISSIONS MODULE
462
471
  @SuppressLint("NewApi")
463
472
  override fun onActivityResult(
@@ -24,6 +24,7 @@ import io.dolphin.move.MoveConfig
24
24
  import io.dolphin.move.MoveConfigurationError
25
25
  import io.dolphin.move.MoveDetectionService
26
26
  import io.dolphin.move.MoveDevice
27
+ import io.dolphin.move.MoveHealthScore
27
28
  import io.dolphin.move.MoveNotification
28
29
  import io.dolphin.move.MoveOptions
29
30
  import io.dolphin.move.MoveScanResult
@@ -46,7 +47,7 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
46
47
  MoveSdk.InitializeListener, MoveSdk.TripStateListener, MoveSdk.AuthStateUpdateListener,
47
48
  MoveSdk.MoveLogCallback, MoveSdk.MoveErrorListener, MoveSdk.MoveWarningListener,
48
49
  MoveSdk.DeviceDiscoveryListener, MoveSdk.RemoteConfigChangeListener, MoveSdk.TripStartListener,
49
- MoveSdk.TripMetadataProvider, MoveSdk.MoveDeviceStateListener {
50
+ MoveSdk.TripMetadataProvider, MoveSdk.MoveDeviceStateListener, MoveSdk.MoveHealthScoreListener {
50
51
 
51
52
  companion object {
52
53
 
@@ -77,7 +78,6 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
77
78
  fun init(context: Context) {
78
79
  val moveSdk = MoveSdk.init(context.applicationContext)
79
80
 
80
- moveSdk.sdkStateListener(this)
81
81
  moveSdk.tripStateListener(this)
82
82
  moveSdk.authStateUpdateListener(this)
83
83
  moveSdk.initializationListener(this)
@@ -93,6 +93,7 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
93
93
  moveSdk.metadataProvider(this)
94
94
 
95
95
  moveSdk.setDeviceStateListener(this)
96
+ moveSdk.setMoveHealthScoreListener(this)
96
97
 
97
98
  // Initialize notifications by default (might be overwritten by setup)
98
99
  // TODO remove notification setup in init when VIG1-1620 will be fixed
@@ -168,33 +169,7 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
168
169
  )
169
170
  }
170
171
 
171
- val featureOptions = options?.toHashMap()
172
- val moveOptions = try {
173
- val motionPermissionMandatory = featureOptions?.get("motionPermissionMandatory") as? Boolean
174
- val useBackendConfig = featureOptions?.get("useBackendConfig") as? Boolean
175
- val backgroundLocationPermissionMandatory = featureOptions?.get("backgroundLocationPermissionMandatory") as? Boolean
176
- val overlayPermissionMandatory = featureOptions?.get("overlayPermissionMandatory") as? Boolean
177
- val deviceDiscovery = featureOptions?.get("deviceDiscovery") as? Map<String, Any>
178
- val startDelay = deviceDiscovery?.get("startDelay") as? Double
179
- val duration = deviceDiscovery?.get("duration") as? Double
180
- val interval = deviceDiscovery?.get("interval") as? Double
181
- val stopScanOnFirstDiscovered = deviceDiscovery?.get("stopScanOnFirstDiscovered") as? Boolean
182
- MoveOptions(
183
- motionPermissionRequired = motionPermissionMandatory ?: false,
184
- useBackendConfig = useBackendConfig ?: false,
185
- backgroundLocationPermissionMandatory = backgroundLocationPermissionMandatory ?: false,
186
- overlayPermissionMandatory = overlayPermissionMandatory ?: true,
187
- deviceDiscovery = DeviceDiscovery(
188
- startDelay = startDelay?.toLong(),
189
- duration = duration?.toLong(),
190
- interval = interval?.toLong(),
191
- stopScanOnFirstDiscovered = stopScanOnFirstDiscovered ?: false,
192
- ),
193
- )
194
- } catch (e: Exception) {
195
- Log.e(MoveSdkModule.LOG_TAG, "setup: ${e.message}", e)
196
- null
197
- }
172
+ val moveOptions = options?.let(::extractMoveOptions)
198
173
 
199
174
  try {
200
175
  Log.d(MoveSdkModule.LOG_TAG, "MOVE SDK Version " + MoveSdk.version)
@@ -676,6 +651,7 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
676
651
  timelineDetectionServices: ReadableArray,
677
652
  drivingServices: ReadableArray,
678
653
  walkingServices: ReadableArray,
654
+ options: ReadableMap?,
679
655
  ) {
680
656
  val timelineDetectionServicesToUse = mutableListOf<MoveDetectionService>()
681
657
  val drivingServicesToUse = mutableListOf<DrivingService>()
@@ -707,7 +683,11 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
707
683
  )
708
684
  )
709
685
  }
710
- MoveSdk.get()?.updateConfig(MoveConfig(timelineDetectionServicesToUse))
686
+ val moveOptions = options?.let(::extractMoveOptions)
687
+ MoveSdk.get()?.updateConfig(
688
+ config = MoveConfig(timelineDetectionServicesToUse),
689
+ options = moveOptions,
690
+ )
711
691
  }
712
692
 
713
693
  override fun provideMetadata(start: Long, end: Long): Map<String, String> {
@@ -754,6 +734,28 @@ class NativeMoveSdkWrapper(private val context: Context) : MoveSdk.StateListener
754
734
  }
755
735
  return hasPermissions
756
736
  }
737
+
738
+ fun addSdkStateListener() {
739
+ MoveSdk.get()?.sdkStateListener(this)
740
+ }
741
+
742
+ override fun onMoveHealthScoreChanged(score: MoveHealthScore) {
743
+ try {
744
+ val data = mutableMapOf<Any, Any>()
745
+ val health = mutableListOf<Any>()
746
+ val healthItem = mutableMapOf<String, Any?>()
747
+ if (score.reason.isNotEmpty()) {
748
+ healthItem["reason"] = score.reason.first()
749
+ healthItem["description"] = score.toJsonString()
750
+ health.add(healthItem)
751
+ data[ARGUMENT_MOVE_HEALTH] = health
752
+ emitDeviceEvent(EVENT_MOVE_SDK_HEALTH, data)
753
+ Log.d(MoveSdkModule.LOG_TAG, "onMoveHealthScoreChanged $data")
754
+ }
755
+ } catch (e: Exception) {
756
+ Log.e(MoveSdkModule.LOG_TAG, "Exception in Health listener", e)
757
+ }
758
+ }
757
759
  }
758
760
 
759
761
  fun List<MoveServiceFailure>.failuresToArray(): Array<Any> {
@@ -43,7 +43,8 @@ RCT_EXTERN_METHOD(setupWithCode: (NSString *)authCode
43
43
 
44
44
  RCT_EXTERN_METHOD(updateConfig: (NSArray<NSString> *)timelineDetectionServices
45
45
  drivingServices: (NSArray<NSString> *)drivingServices
46
- walkingServices: (NSArray<NSString> *)walkingServices)
46
+ walkingServices: (NSArray<NSString> *)walkingServices
47
+ options: (id)options)
47
48
 
48
49
  RCT_EXTERN_METHOD(getState: (RCTPromiseResolveBlock)resolve
49
50
  rejecter: (RCTPromiseRejectBlock)reject)
@@ -183,9 +183,16 @@ class RCTMoveSdk: RCTEventEmitter {
183
183
  @objc
184
184
  func updateConfig(_ timelineDetectionServices: Array<String>,
185
185
  drivingServices: Array<String>,
186
- walkingServices: Array<String>) {
186
+ walkingServices: Array<String>,
187
+ options: Any?) {
188
+
187
189
  if let sdkConfig = try? convert(timelineDetectionServices: timelineDetectionServices, drivingServices: drivingServices, walkingServices: walkingServices) {
188
- MoveSDK.shared.update(config: sdkConfig)
190
+ if let options {
191
+ let moveOptions = convert(options: options)
192
+ MoveSDK.shared.update(config: sdkConfig, options: moveOptions)
193
+ } else {
194
+ MoveSDK.shared.update(config: sdkConfig)
195
+ }
189
196
  }
190
197
  }
191
198
 
@@ -783,6 +790,8 @@ internal class MoveSDKLauncher {
783
790
  case tripStart = "MOVE_SDK_TRIP_START"
784
791
  /// Log event.
785
792
  case logEvent = "MOVE_SDK_LOG"
793
+ /// SDK health listener event.
794
+ case health = "MOVE_SDK_HEALTH"
786
795
  }
787
796
 
788
797
  /// User defaults kets.
@@ -888,6 +897,13 @@ internal class MoveSDKLauncher {
888
897
  self.send(event: .logEvent, data: data)
889
898
  }
890
899
  }
900
+
901
+ sdk.setHealthScoreListener { items in
902
+ let data: [[String: String]] = items.map {
903
+ ["reason": $0.reason.rawValue.snakeCased(), "description": $0.description]
904
+ }
905
+ self.send(event: .health, data: data)
906
+ }
891
907
  }
892
908
 
893
909
  /// Send event to observer.
@@ -1324,3 +1340,16 @@ struct OldConfig: Codable {
1324
1340
  return DolphinMoveSDK.MoveConfig(detectionService: services + otherServices)
1325
1341
  }
1326
1342
  }
1343
+
1344
+ extension String {
1345
+ func snakeCased() -> String {
1346
+ let pattern = "([a-z0-9])([A-Z])"
1347
+
1348
+ if let regex = try? NSRegularExpression(pattern: pattern, options: []) {
1349
+ let range = NSRange(location: 0, length: count)
1350
+ return regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: "$1_$2").uppercased()
1351
+ }
1352
+
1353
+ return uppercased()
1354
+ }
1355
+ }
@@ -57,8 +57,9 @@ internal class MoveSdkDeviceScanner: NSObject {
57
57
 
58
58
  func startScanning(filter: [String], uuid uuidString: String? = nil) {
59
59
  devices = []
60
+ let audioFilter = Set(["paired", "connected"])
60
61
 
61
- if filter.contains("paired") {
62
+ if !audioFilter.intersection(filter).isEmpty {
62
63
  self.scanAudioPorts()
63
64
 
64
65
  let timer = Timer(timeInterval: 1.0, repeats: true) { _ in
@@ -240,7 +240,13 @@ class MoveSdk {
240
240
 
241
241
  static addRemoteConfigChangeListener(configChangeReceived) {
242
242
  return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', config => {
243
- configChangeReceived(config);
243
+ configChangeReceived(config.services);
244
+ });
245
+ }
246
+
247
+ static addHealthListener(scoreReceived) {
248
+ return eventEmitter.addListener('MOVE_SDK_HEALTH', health => {
249
+ scoreReceived(health);
244
250
  });
245
251
  }
246
252
 
@@ -386,13 +392,13 @@ class MoveSdk {
386
392
  return await NativeMoveSdk.startTrip(metadata);
387
393
  }
388
394
 
389
- static updateConfig(config) {
395
+ static updateConfig(config, options) {
390
396
  const {
391
397
  timelineDetectionServices,
392
398
  drivingServices,
393
399
  walkingServices
394
400
  } = config;
395
- NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices);
401
+ NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices, options);
396
402
  }
397
403
 
398
404
  static setTripMetadata(metadata) {
@@ -403,6 +409,10 @@ class MoveSdk {
403
409
  return await NativeMoveSdk.setLiveLocationTag(tag);
404
410
  }
405
411
 
412
+ static startNativeSdkStateListener() {
413
+ NativeMoveSdk.startNativeSdkStateListener();
414
+ }
415
+
406
416
  }
407
417
 
408
418
  exports.default = MoveSdk;
@@ -1 +1 @@
1
- {"version":3,"sources":["MoveSdk.ts"],"names":["MoveSdk","NativeMoveSdk","NativeModules","eventEmitter","NativeEventEmitter","sdkStateFromNative","sdkState","UNINITIALIZED","READY","RUNNING","includes","tripStateFromNative","nativeTripState","UNKNOWN","DRIVING","HALT","IDLE","IGNORED","authStateFromNative","nativeAuthState","AUTH_VALID","AUTH_EXPIRED","AUTH_INVALID","AUTH_UNKNOWN","setup","config","auth","android","options","timelineDetectionServices","drivingServices","walkingServices","userId","projectId","accessToken","refreshToken","platformParams","Platform","OS","notifications","tripNotification","recognitionNotification","Error","title","text","setupWithCode","code","allowMockLocations","init","resolveError","updateAuth","startAutomaticDetection","stopAutomaticDetection","forceTripRecognition","duration","keepInForeground","enabled","console","warn","keepActive","synchronizeUserData","getAuthState","authState","getState","state","getTripState","tripState","getErrors","getWarnings","initiateAssistanceCall","setAssistanceMetaData","data","addTripStateListener","tripStateChanged","addListener","event","addTripStartListener","tripStartTriggered","start","Date","Number","addSdkStateListener","sdkStateChanged","addAuthStateListener","authStateChanged","transformedEvent","addErrorsListener","errorsReceived","errors","addWarningsListener","warningsReceived","warnings","addAppEventListener","appEventReceived","addLogListener","logReceived","addRemoteConfigChangeListener","configChangeReceived","version","getConstants","finishCurrentTrip","ignoreCurrentTrip","requestMotionPermission","getBluetoothPermission","getBluetoothState","shutdown","force","getDeviceQualifier","geocode","latitude","longitude","isAuthValid","canDrawOverlays","requestDrawOverlaysPermission","isAppIgnoringBatteryOptimization","requestAppIgnoringBatteryOptimization","startScanningDevices","sdkDevicesDetected","filter","uuid","manufacturerId","subscription","devices","subscriptionRemove","remove","stopScanningDevices","getRegisteredDevices","registerDevices","unregisterDevices","requestBluetoothAlwaysUsagePermission","addDeviceDiscoveryListener","onScanResult","results","addDeviceStateListener","setTimer","callback","delay","key","now","toString","cancelTimer","startTrip","metadata","updateConfig","setTripMetadata","setLiveLocationTag","tag"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform, EmitterSubscription } from 'react-native';\n\nexport type SdkState = 'UNINITIALIZED' | 'READY' | 'RUNNING';\nexport type TripState = 'UNKNOWN' | 'DRIVING' | 'HALT' | 'IDLE' | 'IGNORED';\nexport type AuthState = 'UNKNOWN' | 'VALID' | 'EXPIRED' | 'INVALID';\nexport type DrivingService = 'DISTRACTION_FREE_DRIVING' | 'DRIVING_BEHAVIOUR' | 'DEVICE_DISCOVERY';\nexport type WalkingService = 'WALKING_LOCATION';\nexport type OtherService = 'POINTS_OF_INTEREST';\nexport type TimelineDetectionService = 'DRIVING' | 'CYCLING' | 'WALKING' | 'PLACES' | 'PUBLIC_TRANSPORT' | 'AUTOMATIC_IMPACT_DETECTION' | 'ASSISTANCE_CALL' | 'POINTS_OF_INTEREST';\n\nexport type ErrorReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_PERMISSION_MISSING'\n | 'UNAUTHORIZED'\n | 'INTERNET_PERMISSION_MISSING'\n | 'PHONE_PERMISSION_MISSING'\n | 'OVERLAY_PERMISSION_MISSING'\n | 'NOTIFICATION_MISSING'\n | 'ACCELEROMETER_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'PRECISE_LOCATION_PERMISSION_MISSING';\n\nexport type WarningReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_OPTIMIZATION'\n | 'BLUETOOTH_TURNED_OFF'\n | 'BLUETOOTH_SCAN_PERMISSION_MISSING'\n | 'BLUETOOTH_CONNECT_PERMISSION_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'NOTIFICATION_PERMISSION_MISSING'\n | 'FINE_LOCATION_PERMISSION_MISSING'\n | 'BLUETOOTH_PERMISSION_MISSING'\n | 'GPS_OFF'\n | 'OFFLINE'\n | 'GO_EDITION'\n | 'ROOTED'\n | 'NO_SIM'\n | 'BACKGROUND_RESTRICTED'\n | 'MOCK_PROVIDER_LOCATION'\n | 'MOCK_PROVIDER'\n | 'LOCATION_MODE'\n | 'PLAY_SERVICES_MISSING'\n | 'LOCATION_POWER_MODE(0)'\n | 'LOCATION_POWER_MODE(1)'\n | 'LOCATION_POWER_MODE(2)'\n | 'LOCATION_POWER_MODE(3)'\n | 'LOCATION_POWER_MODE(4)'\n | 'ENERGY_SAVER';\n\nexport type IssueListService = TimelineDetectionService | DrivingService | WalkingService;\n\nexport type IssueListItem<ReasonsType> = {\n reasons: Array<ReasonsType>;\n service?: IssueListService;\n};\n\nexport type ErrorListType = Array<IssueListItem<ErrorReasons>>;\n\nexport type WarningListType = Array<IssueListItem<WarningReasons>>;\n\nexport type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';\n\nexport type MoveSdkConfig = {\n timelineDetectionServices: Array<TimelineDetectionService>;\n drivingServices: Array<DrivingService>;\n walkingServices: Array<WalkingService>;\n};\n\nexport type MoveSdkDeviceDiscovery = {\n startDelay?: number;\n duration?: number;\n interval?: number;\n stopScanOnFirstDiscovered?: boolean;\n};\n\nexport type MoveSdkOptions = {\n motionPermissionMandatory?: boolean;\n backgroundLocationPermissionMandatory?: boolean;\n overlayPermissionMandatory?: boolean;\n useBackendConfig?: boolean;\n deviceDiscovery?: MoveSdkDeviceDiscovery;\n};\n\nexport type MoveSdkAuth = {\n userId: string;\n accessToken: string;\n refreshToken: string;\n projectId: number;\n};\n\nexport type NotificationConfig = {\n title: string;\n text: string;\n};\n\nexport type MoveSdkAndroidConfig = {\n notifications: {\n recognitionNotification: NotificationConfig;\n tripNotification: NotificationConfig;\n };\n};\n\nexport type ListenerSubscription = EmitterSubscription;\n\nexport type AuthStateEvent = {\n state: AuthState;\n accessToken?: string;\n refreshToken?: string;\n};\n\nexport type MoveSdkDeviceFilter = 'beacon' | 'paired' | 'connected';\n\nexport type MoveSdkDevice = {\n name: string;\n data: string;\n id: string;\n isConnected?: boolean;\n};\n\nexport type MoveScanResult = {\n isDiscovered: boolean;\n device: MoveSdkDevice;\n name: string;\n};\n\nexport type MoveSdkLog = {\n message: string;\n value?: string;\n};\n\nconst { MoveSdk: NativeMoveSdk } = NativeModules;\nconst eventEmitter = new NativeEventEmitter(NativeMoveSdk);\n\nexport default class MoveSdk {\n static READY: SdkState = 'READY';\n static RUNNING: SdkState = 'RUNNING';\n static UNINITIALIZED: SdkState = 'UNINITIALIZED';\n\n static AUTH_EXPIRED: AuthState = 'EXPIRED';\n static AUTH_VALID: AuthState = 'VALID';\n static AUTH_UNKNOWN: AuthState = 'UNKNOWN';\n static AUTH_INVALID: AuthState = 'INVALID';\n\n static UNKNOWN: TripState = 'UNKNOWN';\n static DRIVING: TripState = 'DRIVING';\n static HALT: TripState = 'HALT';\n static IDLE: TripState = 'IDLE';\n static IGNORED: TripState = 'IGNORED';\n\n static sdkStateFromNative(sdkState: SdkState): SdkState {\n if ([MoveSdk.UNINITIALIZED, MoveSdk.READY, MoveSdk.RUNNING, MoveSdk.UNINITIALIZED].includes(sdkState)) {\n return sdkState;\n }\n\n return MoveSdk.UNINITIALIZED;\n }\n\n static tripStateFromNative(nativeTripState: TripState): TripState {\n if ([MoveSdk.UNKNOWN, MoveSdk.DRIVING, MoveSdk.HALT, MoveSdk.IDLE, MoveSdk.IGNORED].includes(nativeTripState)) {\n return nativeTripState;\n }\n\n return MoveSdk.UNKNOWN;\n }\n\n static authStateFromNative(nativeAuthState: AuthState): AuthState {\n if ([MoveSdk.AUTH_VALID, MoveSdk.AUTH_EXPIRED, MoveSdk.AUTH_INVALID].includes(nativeAuthState)) {\n return nativeAuthState;\n }\n\n return MoveSdk.AUTH_UNKNOWN;\n }\n\n static async setup(config: MoveSdkConfig, auth: MoveSdkAuth, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n const { userId, projectId, accessToken, refreshToken } = auth;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setup(\n userId,\n accessToken,\n refreshToken,\n projectId,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static async setupWithCode(code: string, config: MoveSdkConfig, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setupWithCode(\n code,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static allowMockLocations(allowMockLocations: boolean) {\n NativeMoveSdk.allowMockLocations(allowMockLocations);\n }\n\n /* Deprecated */\n static init() {\n NativeMoveSdk.init();\n }\n\n static resolveError() {\n NativeMoveSdk.resolveError();\n }\n\n static async updateAuth(auth: MoveSdkAuth): Promise<void> {\n const { userId, projectId, accessToken, refreshToken } = auth;\n return await NativeMoveSdk.updateAuth(userId, accessToken, refreshToken, projectId);\n }\n\n static async startAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.startAutomaticDetection();\n }\n\n static async stopAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.stopAutomaticDetection();\n }\n\n static forceTripRecognition(duration: number = 60000) {\n NativeMoveSdk.forceTripRecognition(duration);\n }\n\n static keepInForeground(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepInForeground(enabled);\n } else {\n console.warn('MoveSdk.keepInForeground() is Android OS only.');\n }\n }\n\n static keepActive(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepActive(enabled);\n } else {\n console.warn('MoveSdk.keepActive() is Android OS only.');\n }\n }\n\n static async synchronizeUserData(): Promise<boolean> {\n return await NativeMoveSdk.synchronizeUserData();\n }\n\n static async getAuthState(): Promise<AuthState> {\n const authState = await NativeMoveSdk.getAuthState();\n return MoveSdk.authStateFromNative(authState);\n }\n\n static async getState(): Promise<SdkState> {\n const state = await NativeMoveSdk.getState();\n return MoveSdk.sdkStateFromNative(state);\n }\n\n static async getTripState(): Promise<TripState> {\n const tripState = await NativeMoveSdk.getTripState();\n return MoveSdk.tripStateFromNative(tripState);\n }\n\n static async getErrors(): Promise<ErrorListType> {\n return await NativeMoveSdk.getErrors();\n }\n\n static async getWarnings(): Promise<WarningListType> {\n return await NativeMoveSdk.getWarnings();\n }\n\n static async initiateAssistanceCall(): Promise<boolean> {\n return await NativeMoveSdk.initiateAssistanceCall();\n }\n\n static setAssistanceMetaData(data: string) {\n NativeMoveSdk.setAssistanceMetaData(data);\n }\n\n static addTripStateListener(tripStateChanged: (state: TripState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_STATE', (event) => tripStateChanged(MoveSdk.tripStateFromNative(event.state)));\n }\n\n static addTripStartListener(tripStartTriggered: (start: Date) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_START', (start) => tripStartTriggered(new Date(Number(start))));\n }\n\n static addSdkStateListener(sdkStateChanged: (state: SdkState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_STATE', (event) => {\n sdkStateChanged(MoveSdk.sdkStateFromNative(event.state));\n });\n }\n\n static addAuthStateListener(authStateChanged: (event: AuthStateEvent) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_AUTH_STATE', (event) => {\n const transformedEvent = {\n ...event,\n state: MoveSdk.authStateFromNative(event.state),\n };\n authStateChanged(transformedEvent);\n });\n }\n\n static addErrorsListener(errorsReceived: (errors: ErrorListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_ERRORS', (event) => {\n errorsReceived(event.errors);\n });\n }\n\n static addWarningsListener(warningsReceived: (warnings: WarningListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_WARNINGS', (event) => {\n warningsReceived(event.warnings);\n });\n }\n\n static addAppEventListener(appEventReceived: (event: string) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_APP_EVENT', (event) => {\n appEventReceived(event);\n });\n }\n\n static addLogListener(logReceived: (event: MoveSdkLog) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_LOG', (event) => {\n logReceived(event);\n });\n }\n\n static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', (config) => {\n configChangeReceived(config);\n });\n }\n\n static version(): string {\n return Platform.OS === 'android' ? NativeMoveSdk.getConstants().version : 'Unknown';\n }\n\n static finishCurrentTrip() {\n NativeMoveSdk.finishCurrentTrip();\n }\n\n static ignoreCurrentTrip() {\n NativeMoveSdk.ignoreCurrentTrip();\n }\n\n static requestMotionPermission() {\n if (Platform.OS === 'ios') {\n NativeMoveSdk.requestMotionPermission();\n } else {\n console.warn('MoveSdk.requestMotionPermission() is iOS only.');\n }\n }\n\n static async getBluetoothPermission(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothPermission();\n }\n\n static async getBluetoothState(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothState();\n }\n\n static async shutdown(force: boolean = true): Promise<ShutdownReturnType> {\n return await NativeMoveSdk.shutdown(force);\n }\n\n static async getDeviceQualifier(): Promise<string | null> {\n return NativeMoveSdk.getDeviceQualifier();\n }\n\n static async geocode(latitude: number, longitude: number): Promise<string> {\n return await NativeMoveSdk.geocode(latitude, longitude);\n }\n\n static async isAuthValid(): Promise<boolean> {\n return await NativeMoveSdk.isAuthValid();\n }\n\n // **** PERMISSIONS MODULE START *****\n\n static async canDrawOverlays(): Promise<boolean> {\n return await NativeMoveSdk.canDrawOverlays();\n }\n\n static requestDrawOverlaysPermission() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestDrawOverlaysPermission();\n } else {\n console.warn('MoveSdk.requestDrawOverlaysPermission() is Android OS only.');\n }\n }\n\n static async isAppIgnoringBatteryOptimization(): Promise<boolean> {\n return await NativeMoveSdk.isAppIgnoringBatteryOptimization();\n }\n\n static requestAppIgnoringBatteryOptimization() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestAppIgnoringBatteryOptimization();\n } else {\n console.warn('MoveSdk.requestAppIgnoringBatteryOptimization() is Android OS only.');\n }\n }\n\n // **** PERMISSIONS MODULE END *****\n\n static startScanningDevices(sdkDevicesDetected: (state: Array<MoveSdkDevice>) => void, filter: MoveSdkDeviceFilter[] = ['paired'], uuid?: string, manufacturerId?: number): ListenerSubscription {\n const subscription = eventEmitter.addListener('MOVE_SDK_DEVICES', (devices) => {\n sdkDevicesDetected(devices);\n });\n const subscriptionRemove = subscription.remove;\n subscription.remove = () => {\n NativeMoveSdk.stopScanningDevices();\n subscriptionRemove();\n };\n\n NativeMoveSdk.startScanningDevices(filter, uuid, manufacturerId ?? -1);\n return subscription;\n }\n\n static async getRegisteredDevices(): Promise<Array<MoveSdkDevice>> {\n return await NativeMoveSdk.getRegisteredDevices();\n }\n\n static async registerDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.registerDevices(devices);\n }\n\n static async unregisterDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.unregisterDevices(devices);\n }\n\n static requestBluetoothAlwaysUsagePermission(): void {\n NativeMoveSdk.requestBluetoothAlwaysUsagePermission();\n }\n\n static addDeviceDiscoveryListener(onScanResult: (state: Array<MoveScanResult>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_SCAN_RESULT', (results) => {\n onScanResult(results);\n });\n }\n\n static addDeviceStateListener(onScanResult: (results: Array<MoveSdkDevice>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_DEVICE_STATE', (results) => {\n onScanResult(results);\n });\n }\n\n static setTimer(callback: () => void, delay: number = 60000): string {\n if (Platform.OS === 'android') {\n const key = Date.now().toString();\n NativeMoveSdk.setTimer(delay, key, callback);\n return key;\n } else {\n console.warn('MoveSdk.setTimer() is Android OS only.');\n return '';\n }\n }\n\n static cancelTimer(key: string) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.cancelTimer(key);\n } else {\n console.warn('MoveSdk.cancelTimer() is Android OS only.');\n }\n }\n\n static async startTrip(metadata?: { [key: string]: string }): Promise<boolean> {\n return await NativeMoveSdk.startTrip(metadata);\n }\n\n static updateConfig(config: MoveSdkConfig) {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices);\n }\n\n static setTripMetadata(metadata?: { [key: string]: string }) {\n NativeMoveSdk.setTripMetadata(metadata);\n }\n\n static async setLiveLocationTag(tag?: string): Promise<boolean> {\n return await NativeMoveSdk.setLiveLocationTag(tag);\n }\n}\n"]}
1
+ {"version":3,"sources":["MoveSdk.ts"],"names":["MoveSdk","NativeMoveSdk","NativeModules","eventEmitter","NativeEventEmitter","sdkStateFromNative","sdkState","UNINITIALIZED","READY","RUNNING","includes","tripStateFromNative","nativeTripState","UNKNOWN","DRIVING","HALT","IDLE","IGNORED","authStateFromNative","nativeAuthState","AUTH_VALID","AUTH_EXPIRED","AUTH_INVALID","AUTH_UNKNOWN","setup","config","auth","android","options","timelineDetectionServices","drivingServices","walkingServices","userId","projectId","accessToken","refreshToken","platformParams","Platform","OS","notifications","tripNotification","recognitionNotification","Error","title","text","setupWithCode","code","allowMockLocations","init","resolveError","updateAuth","startAutomaticDetection","stopAutomaticDetection","forceTripRecognition","duration","keepInForeground","enabled","console","warn","keepActive","synchronizeUserData","getAuthState","authState","getState","state","getTripState","tripState","getErrors","getWarnings","initiateAssistanceCall","setAssistanceMetaData","data","addTripStateListener","tripStateChanged","addListener","event","addTripStartListener","tripStartTriggered","start","Date","Number","addSdkStateListener","sdkStateChanged","addAuthStateListener","authStateChanged","transformedEvent","addErrorsListener","errorsReceived","errors","addWarningsListener","warningsReceived","warnings","addAppEventListener","appEventReceived","addLogListener","logReceived","addRemoteConfigChangeListener","configChangeReceived","services","addHealthListener","scoreReceived","health","version","getConstants","finishCurrentTrip","ignoreCurrentTrip","requestMotionPermission","getBluetoothPermission","getBluetoothState","shutdown","force","getDeviceQualifier","geocode","latitude","longitude","isAuthValid","canDrawOverlays","requestDrawOverlaysPermission","isAppIgnoringBatteryOptimization","requestAppIgnoringBatteryOptimization","startScanningDevices","sdkDevicesDetected","filter","uuid","manufacturerId","subscription","devices","subscriptionRemove","remove","stopScanningDevices","getRegisteredDevices","registerDevices","unregisterDevices","requestBluetoothAlwaysUsagePermission","addDeviceDiscoveryListener","onScanResult","results","addDeviceStateListener","setTimer","callback","delay","key","now","toString","cancelTimer","startTrip","metadata","updateConfig","setTripMetadata","setLiveLocationTag","tag","startNativeSdkStateListener"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform, EmitterSubscription } from 'react-native';\n\nexport type SdkState = 'UNINITIALIZED' | 'READY' | 'RUNNING';\nexport type TripState = 'UNKNOWN' | 'DRIVING' | 'HALT' | 'IDLE' | 'IGNORED';\nexport type AuthState = 'UNKNOWN' | 'VALID' | 'EXPIRED' | 'INVALID';\nexport type DrivingService = 'DISTRACTION_FREE_DRIVING' | 'DRIVING_BEHAVIOUR' | 'DEVICE_DISCOVERY';\nexport type WalkingService = 'WALKING_LOCATION';\nexport type OtherService = 'POINTS_OF_INTEREST';\nexport type TimelineDetectionService = 'DRIVING' | 'CYCLING' | 'WALKING' | 'PLACES' | 'PUBLIC_TRANSPORT' | 'AUTOMATIC_IMPACT_DETECTION' | 'ASSISTANCE_CALL' | 'POINTS_OF_INTEREST';\n\nexport type ErrorReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_PERMISSION_MISSING'\n | 'UNAUTHORIZED'\n | 'INTERNET_PERMISSION_MISSING'\n | 'PHONE_PERMISSION_MISSING'\n | 'OVERLAY_PERMISSION_MISSING'\n | 'NOTIFICATION_MISSING'\n | 'ACCELEROMETER_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'PRECISE_LOCATION_PERMISSION_MISSING';\n\nexport type WarningReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_OPTIMIZATION'\n | 'BLUETOOTH_TURNED_OFF'\n | 'BLUETOOTH_SCAN_PERMISSION_MISSING'\n | 'BLUETOOTH_CONNECT_PERMISSION_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'NOTIFICATION_PERMISSION_MISSING'\n | 'FINE_LOCATION_PERMISSION_MISSING'\n | 'BLUETOOTH_PERMISSION_MISSING'\n | 'GPS_OFF'\n | 'OFFLINE'\n | 'GO_EDITION'\n | 'ROOTED'\n | 'NO_SIM'\n | 'BACKGROUND_RESTRICTED'\n | 'MOCK_PROVIDER_LOCATION'\n | 'MOCK_PROVIDER'\n | 'LOCATION_MODE'\n | 'PLAY_SERVICES_MISSING'\n | 'LOCATION_POWER_MODE(0)'\n | 'LOCATION_POWER_MODE(1)'\n | 'LOCATION_POWER_MODE(2)'\n | 'LOCATION_POWER_MODE(3)'\n | 'LOCATION_POWER_MODE(4)'\n | 'ENERGY_SAVER';\n\nexport type IssueListService = TimelineDetectionService | DrivingService | WalkingService;\n\nexport type IssueListItem<ReasonsType> = {\n reasons: Array<ReasonsType>;\n service?: IssueListService;\n};\n\nexport type ErrorListType = Array<IssueListItem<ErrorReasons>>;\n\nexport type WarningListType = Array<IssueListItem<WarningReasons>>;\n\nexport type HealthReasons =\n | 'BATTERY_LEVEL'\n | 'CPU_USAGE'\n | 'DISK_USAGE'\n | 'INTERNET_USAGE'\n | 'MEMORY_USAGE'\n | 'NEW_VERSION'\n | 'UNIMPLEMENTED_LISTENERS';\n\nexport type HealthListItem = {\n reason: HealthReasons;\n description: string;\n};\n\nexport type MoveHealthScore = Array<HealthListItem>;\n\nexport type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';\n\nexport type MoveSdkConfig = {\n timelineDetectionServices: Array<TimelineDetectionService>;\n drivingServices: Array<DrivingService>;\n walkingServices: Array<WalkingService>;\n};\n\nexport type MoveSdkDeviceDiscovery = {\n startDelay?: number;\n duration?: number;\n interval?: number;\n stopScanOnFirstDiscovered?: boolean;\n};\n\nexport type MoveSdkOptions = {\n motionPermissionMandatory?: boolean;\n backgroundLocationPermissionMandatory?: boolean;\n overlayPermissionMandatory?: boolean;\n useBackendConfig?: boolean;\n deviceDiscovery?: MoveSdkDeviceDiscovery;\n};\n\nexport type MoveSdkAuth = {\n userId: string;\n accessToken: string;\n refreshToken: string;\n projectId: number;\n};\n\nexport type NotificationConfig = {\n title: string;\n text: string;\n};\n\nexport type MoveSdkAndroidConfig = {\n notifications: {\n recognitionNotification: NotificationConfig;\n tripNotification: NotificationConfig;\n };\n};\n\nexport type ListenerSubscription = EmitterSubscription;\n\nexport type AuthStateEvent = {\n state: AuthState;\n accessToken?: string;\n refreshToken?: string;\n};\n\nexport type MoveSdkDeviceFilter = 'beacon' | 'paired' | 'connected';\n\nexport type MoveSdkDevice = {\n name: string;\n data: string;\n id: string;\n isConnected?: boolean;\n};\n\nexport type MoveScanResult = {\n isDiscovered: boolean;\n device: MoveSdkDevice;\n name: string;\n};\n\nexport type MoveSdkLog = {\n message: string;\n value?: string;\n};\n\nconst { MoveSdk: NativeMoveSdk } = NativeModules;\nconst eventEmitter = new NativeEventEmitter(NativeMoveSdk);\n\nexport default class MoveSdk {\n static READY: SdkState = 'READY';\n static RUNNING: SdkState = 'RUNNING';\n static UNINITIALIZED: SdkState = 'UNINITIALIZED';\n\n static AUTH_EXPIRED: AuthState = 'EXPIRED';\n static AUTH_VALID: AuthState = 'VALID';\n static AUTH_UNKNOWN: AuthState = 'UNKNOWN';\n static AUTH_INVALID: AuthState = 'INVALID';\n\n static UNKNOWN: TripState = 'UNKNOWN';\n static DRIVING: TripState = 'DRIVING';\n static HALT: TripState = 'HALT';\n static IDLE: TripState = 'IDLE';\n static IGNORED: TripState = 'IGNORED';\n\n static sdkStateFromNative(sdkState: SdkState): SdkState {\n if ([MoveSdk.UNINITIALIZED, MoveSdk.READY, MoveSdk.RUNNING, MoveSdk.UNINITIALIZED].includes(sdkState)) {\n return sdkState;\n }\n\n return MoveSdk.UNINITIALIZED;\n }\n\n static tripStateFromNative(nativeTripState: TripState): TripState {\n if ([MoveSdk.UNKNOWN, MoveSdk.DRIVING, MoveSdk.HALT, MoveSdk.IDLE, MoveSdk.IGNORED].includes(nativeTripState)) {\n return nativeTripState;\n }\n\n return MoveSdk.UNKNOWN;\n }\n\n static authStateFromNative(nativeAuthState: AuthState): AuthState {\n if ([MoveSdk.AUTH_VALID, MoveSdk.AUTH_EXPIRED, MoveSdk.AUTH_INVALID].includes(nativeAuthState)) {\n return nativeAuthState;\n }\n\n return MoveSdk.AUTH_UNKNOWN;\n }\n\n static async setup(config: MoveSdkConfig, auth: MoveSdkAuth, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n const { userId, projectId, accessToken, refreshToken } = auth;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setup(\n userId,\n accessToken,\n refreshToken,\n projectId,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static async setupWithCode(code: string, config: MoveSdkConfig, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setupWithCode(\n code,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static allowMockLocations(allowMockLocations: boolean) {\n NativeMoveSdk.allowMockLocations(allowMockLocations);\n }\n\n /* Deprecated */\n static init() {\n NativeMoveSdk.init();\n }\n\n static resolveError() {\n NativeMoveSdk.resolveError();\n }\n\n static async updateAuth(auth: MoveSdkAuth): Promise<void> {\n const { userId, projectId, accessToken, refreshToken } = auth;\n return await NativeMoveSdk.updateAuth(userId, accessToken, refreshToken, projectId);\n }\n\n static async startAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.startAutomaticDetection();\n }\n\n static async stopAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.stopAutomaticDetection();\n }\n\n static forceTripRecognition(duration: number = 60000) {\n NativeMoveSdk.forceTripRecognition(duration);\n }\n\n static keepInForeground(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepInForeground(enabled);\n } else {\n console.warn('MoveSdk.keepInForeground() is Android OS only.');\n }\n }\n\n static keepActive(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepActive(enabled);\n } else {\n console.warn('MoveSdk.keepActive() is Android OS only.');\n }\n }\n\n static async synchronizeUserData(): Promise<boolean> {\n return await NativeMoveSdk.synchronizeUserData();\n }\n\n static async getAuthState(): Promise<AuthState> {\n const authState = await NativeMoveSdk.getAuthState();\n return MoveSdk.authStateFromNative(authState);\n }\n\n static async getState(): Promise<SdkState> {\n const state = await NativeMoveSdk.getState();\n return MoveSdk.sdkStateFromNative(state);\n }\n\n static async getTripState(): Promise<TripState> {\n const tripState = await NativeMoveSdk.getTripState();\n return MoveSdk.tripStateFromNative(tripState);\n }\n\n static async getErrors(): Promise<ErrorListType> {\n return await NativeMoveSdk.getErrors();\n }\n\n static async getWarnings(): Promise<WarningListType> {\n return await NativeMoveSdk.getWarnings();\n }\n\n static async initiateAssistanceCall(): Promise<boolean> {\n return await NativeMoveSdk.initiateAssistanceCall();\n }\n\n static setAssistanceMetaData(data: string) {\n NativeMoveSdk.setAssistanceMetaData(data);\n }\n\n static addTripStateListener(tripStateChanged: (state: TripState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_STATE', (event) => tripStateChanged(MoveSdk.tripStateFromNative(event.state)));\n }\n\n static addTripStartListener(tripStartTriggered: (start: Date) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_START', (start) => tripStartTriggered(new Date(Number(start))));\n }\n\n static addSdkStateListener(sdkStateChanged: (state: SdkState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_STATE', (event) => {\n sdkStateChanged(MoveSdk.sdkStateFromNative(event.state));\n });\n }\n\n static addAuthStateListener(authStateChanged: (event: AuthStateEvent) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_AUTH_STATE', (event) => {\n const transformedEvent = {\n ...event,\n state: MoveSdk.authStateFromNative(event.state),\n };\n authStateChanged(transformedEvent);\n });\n }\n\n static addErrorsListener(errorsReceived: (errors: ErrorListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_ERRORS', (event) => {\n errorsReceived(event.errors);\n });\n }\n\n static addWarningsListener(warningsReceived: (warnings: WarningListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_WARNINGS', (event) => {\n warningsReceived(event.warnings);\n });\n }\n\n static addAppEventListener(appEventReceived: (event: string) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_APP_EVENT', (event) => {\n appEventReceived(event);\n });\n }\n\n static addLogListener(logReceived: (event: MoveSdkLog) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_LOG', (event) => {\n logReceived(event);\n });\n }\n\n static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', (config) => {\n configChangeReceived(config.services);\n });\n }\n\n static addHealthListener(scoreReceived: (health: MoveHealthScore) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_HEALTH', (health) => {\n scoreReceived(health);\n });\n }\n\n static version(): string {\n return Platform.OS === 'android' ? NativeMoveSdk.getConstants().version : 'Unknown';\n }\n\n static finishCurrentTrip() {\n NativeMoveSdk.finishCurrentTrip();\n }\n\n static ignoreCurrentTrip() {\n NativeMoveSdk.ignoreCurrentTrip();\n }\n\n static requestMotionPermission() {\n if (Platform.OS === 'ios') {\n NativeMoveSdk.requestMotionPermission();\n } else {\n console.warn('MoveSdk.requestMotionPermission() is iOS only.');\n }\n }\n\n static async getBluetoothPermission(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothPermission();\n }\n\n static async getBluetoothState(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothState();\n }\n\n static async shutdown(force: boolean = true): Promise<ShutdownReturnType> {\n return await NativeMoveSdk.shutdown(force);\n }\n\n static async getDeviceQualifier(): Promise<string | null> {\n return NativeMoveSdk.getDeviceQualifier();\n }\n\n static async geocode(latitude: number, longitude: number): Promise<string> {\n return await NativeMoveSdk.geocode(latitude, longitude);\n }\n\n static async isAuthValid(): Promise<boolean> {\n return await NativeMoveSdk.isAuthValid();\n }\n\n // **** PERMISSIONS MODULE START *****\n\n static async canDrawOverlays(): Promise<boolean> {\n return await NativeMoveSdk.canDrawOverlays();\n }\n\n static requestDrawOverlaysPermission() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestDrawOverlaysPermission();\n } else {\n console.warn('MoveSdk.requestDrawOverlaysPermission() is Android OS only.');\n }\n }\n\n static async isAppIgnoringBatteryOptimization(): Promise<boolean> {\n return await NativeMoveSdk.isAppIgnoringBatteryOptimization();\n }\n\n static requestAppIgnoringBatteryOptimization() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestAppIgnoringBatteryOptimization();\n } else {\n console.warn('MoveSdk.requestAppIgnoringBatteryOptimization() is Android OS only.');\n }\n }\n\n // **** PERMISSIONS MODULE END *****\n\n static startScanningDevices(sdkDevicesDetected: (state: Array<MoveSdkDevice>) => void, filter: MoveSdkDeviceFilter[] = ['paired'], uuid?: string, manufacturerId?: number): ListenerSubscription {\n const subscription = eventEmitter.addListener('MOVE_SDK_DEVICES', (devices) => {\n sdkDevicesDetected(devices);\n });\n const subscriptionRemove = subscription.remove;\n subscription.remove = () => {\n NativeMoveSdk.stopScanningDevices();\n subscriptionRemove();\n };\n\n NativeMoveSdk.startScanningDevices(filter, uuid, manufacturerId ?? -1);\n return subscription;\n }\n\n static async getRegisteredDevices(): Promise<Array<MoveSdkDevice>> {\n return await NativeMoveSdk.getRegisteredDevices();\n }\n\n static async registerDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.registerDevices(devices);\n }\n\n static async unregisterDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.unregisterDevices(devices);\n }\n\n static requestBluetoothAlwaysUsagePermission(): void {\n NativeMoveSdk.requestBluetoothAlwaysUsagePermission();\n }\n\n static addDeviceDiscoveryListener(onScanResult: (state: Array<MoveScanResult>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_SCAN_RESULT', (results) => {\n onScanResult(results);\n });\n }\n\n static addDeviceStateListener(onScanResult: (results: Array<MoveSdkDevice>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_DEVICE_STATE', (results) => {\n onScanResult(results);\n });\n }\n\n static setTimer(callback: () => void, delay: number = 60000): string {\n if (Platform.OS === 'android') {\n const key = Date.now().toString();\n NativeMoveSdk.setTimer(delay, key, callback);\n return key;\n } else {\n console.warn('MoveSdk.setTimer() is Android OS only.');\n return '';\n }\n }\n\n static cancelTimer(key: string) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.cancelTimer(key);\n } else {\n console.warn('MoveSdk.cancelTimer() is Android OS only.');\n }\n }\n\n static async startTrip(metadata?: { [key: string]: string }): Promise<boolean> {\n return await NativeMoveSdk.startTrip(metadata);\n }\n\n static updateConfig(config: MoveSdkConfig, options?: MoveSdkOptions) {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices, options);\n }\n\n static setTripMetadata(metadata?: { [key: string]: string }) {\n NativeMoveSdk.setTripMetadata(metadata);\n }\n\n static async setLiveLocationTag(tag?: string): Promise<boolean> {\n return await NativeMoveSdk.setLiveLocationTag(tag);\n }\n\n static startNativeSdkStateListener() {\n NativeMoveSdk.startNativeSdkStateListener();\n }\n}\n"]}
@@ -28,10 +28,12 @@ function LazyMoveSdk(_ref) {
28
28
  const [currentMode, setCurrentMode] = (0, _react.useState)(_reactNative.AppState.currentState);
29
29
  const [tripState, setTripState] = (0, _react.useState)();
30
30
  const [removeUi, setRemoveUi] = (0, _react.useState)(false);
31
+ const [isListener, setIsListener] = (0, _react.useState)(false);
31
32
  (0, _react.useEffect)(() => {
32
33
  let timer = null;
33
34
 
34
35
  const appStateSubscription = _reactNative.AppState.addEventListener('change', state => {
36
+ setIsListener(true);
35
37
  setCurrentMode(state);
36
38
  prevState.current = state;
37
39
  });
@@ -88,7 +90,7 @@ function LazyMoveSdk(_ref) {
88
90
  }, [currentMode, removeUi]);
89
91
  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
90
92
 
91
- if (startedInBackground || removeUi) {
93
+ if (startedInBackground && !isListener || removeUi) {
92
94
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, null);
93
95
  }
94
96
 
@@ -1 +1 @@
1
- {"version":3,"sources":["LazyMoveSdk.tsx"],"names":["LazyMoveSdk","children","delayToRemoveUiInBackgroundMs","prevState","currentMode","setCurrentMode","AppState","currentState","tripState","setTripState","removeUi","setRemoveUi","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\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout> | null | number | string = null;\n const appStateSubscription = AppState.addEventListener('change', (state: AppStateStatus) => {\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 || 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","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"]}
@@ -231,7 +231,13 @@ export default class MoveSdk {
231
231
 
232
232
  static addRemoteConfigChangeListener(configChangeReceived) {
233
233
  return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', config => {
234
- configChangeReceived(config);
234
+ configChangeReceived(config.services);
235
+ });
236
+ }
237
+
238
+ static addHealthListener(scoreReceived) {
239
+ return eventEmitter.addListener('MOVE_SDK_HEALTH', health => {
240
+ scoreReceived(health);
235
241
  });
236
242
  }
237
243
 
@@ -377,13 +383,13 @@ export default class MoveSdk {
377
383
  return await NativeMoveSdk.startTrip(metadata);
378
384
  }
379
385
 
380
- static updateConfig(config) {
386
+ static updateConfig(config, options) {
381
387
  const {
382
388
  timelineDetectionServices,
383
389
  drivingServices,
384
390
  walkingServices
385
391
  } = config;
386
- NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices);
392
+ NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices, options);
387
393
  }
388
394
 
389
395
  static setTripMetadata(metadata) {
@@ -394,6 +400,10 @@ export default class MoveSdk {
394
400
  return await NativeMoveSdk.setLiveLocationTag(tag);
395
401
  }
396
402
 
403
+ static startNativeSdkStateListener() {
404
+ NativeMoveSdk.startNativeSdkStateListener();
405
+ }
406
+
397
407
  }
398
408
 
399
409
  _defineProperty(MoveSdk, "READY", 'READY');
@@ -1 +1 @@
1
- {"version":3,"sources":["MoveSdk.ts"],"names":["NativeModules","NativeEventEmitter","Platform","MoveSdk","NativeMoveSdk","eventEmitter","sdkStateFromNative","sdkState","UNINITIALIZED","READY","RUNNING","includes","tripStateFromNative","nativeTripState","UNKNOWN","DRIVING","HALT","IDLE","IGNORED","authStateFromNative","nativeAuthState","AUTH_VALID","AUTH_EXPIRED","AUTH_INVALID","AUTH_UNKNOWN","setup","config","auth","android","options","timelineDetectionServices","drivingServices","walkingServices","userId","projectId","accessToken","refreshToken","platformParams","OS","notifications","tripNotification","recognitionNotification","Error","title","text","setupWithCode","code","allowMockLocations","init","resolveError","updateAuth","startAutomaticDetection","stopAutomaticDetection","forceTripRecognition","duration","keepInForeground","enabled","console","warn","keepActive","synchronizeUserData","getAuthState","authState","getState","state","getTripState","tripState","getErrors","getWarnings","initiateAssistanceCall","setAssistanceMetaData","data","addTripStateListener","tripStateChanged","addListener","event","addTripStartListener","tripStartTriggered","start","Date","Number","addSdkStateListener","sdkStateChanged","addAuthStateListener","authStateChanged","transformedEvent","addErrorsListener","errorsReceived","errors","addWarningsListener","warningsReceived","warnings","addAppEventListener","appEventReceived","addLogListener","logReceived","addRemoteConfigChangeListener","configChangeReceived","version","getConstants","finishCurrentTrip","ignoreCurrentTrip","requestMotionPermission","getBluetoothPermission","getBluetoothState","shutdown","force","getDeviceQualifier","geocode","latitude","longitude","isAuthValid","canDrawOverlays","requestDrawOverlaysPermission","isAppIgnoringBatteryOptimization","requestAppIgnoringBatteryOptimization","startScanningDevices","sdkDevicesDetected","filter","uuid","manufacturerId","subscription","devices","subscriptionRemove","remove","stopScanningDevices","getRegisteredDevices","registerDevices","unregisterDevices","requestBluetoothAlwaysUsagePermission","addDeviceDiscoveryListener","onScanResult","results","addDeviceStateListener","setTimer","callback","delay","key","now","toString","cancelTimer","startTrip","metadata","updateConfig","setTripMetadata","setLiveLocationTag","tag"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform, EmitterSubscription } from 'react-native';\n\nexport type SdkState = 'UNINITIALIZED' | 'READY' | 'RUNNING';\nexport type TripState = 'UNKNOWN' | 'DRIVING' | 'HALT' | 'IDLE' | 'IGNORED';\nexport type AuthState = 'UNKNOWN' | 'VALID' | 'EXPIRED' | 'INVALID';\nexport type DrivingService = 'DISTRACTION_FREE_DRIVING' | 'DRIVING_BEHAVIOUR' | 'DEVICE_DISCOVERY';\nexport type WalkingService = 'WALKING_LOCATION';\nexport type OtherService = 'POINTS_OF_INTEREST';\nexport type TimelineDetectionService = 'DRIVING' | 'CYCLING' | 'WALKING' | 'PLACES' | 'PUBLIC_TRANSPORT' | 'AUTOMATIC_IMPACT_DETECTION' | 'ASSISTANCE_CALL' | 'POINTS_OF_INTEREST';\n\nexport type ErrorReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_PERMISSION_MISSING'\n | 'UNAUTHORIZED'\n | 'INTERNET_PERMISSION_MISSING'\n | 'PHONE_PERMISSION_MISSING'\n | 'OVERLAY_PERMISSION_MISSING'\n | 'NOTIFICATION_MISSING'\n | 'ACCELEROMETER_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'PRECISE_LOCATION_PERMISSION_MISSING';\n\nexport type WarningReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_OPTIMIZATION'\n | 'BLUETOOTH_TURNED_OFF'\n | 'BLUETOOTH_SCAN_PERMISSION_MISSING'\n | 'BLUETOOTH_CONNECT_PERMISSION_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'NOTIFICATION_PERMISSION_MISSING'\n | 'FINE_LOCATION_PERMISSION_MISSING'\n | 'BLUETOOTH_PERMISSION_MISSING'\n | 'GPS_OFF'\n | 'OFFLINE'\n | 'GO_EDITION'\n | 'ROOTED'\n | 'NO_SIM'\n | 'BACKGROUND_RESTRICTED'\n | 'MOCK_PROVIDER_LOCATION'\n | 'MOCK_PROVIDER'\n | 'LOCATION_MODE'\n | 'PLAY_SERVICES_MISSING'\n | 'LOCATION_POWER_MODE(0)'\n | 'LOCATION_POWER_MODE(1)'\n | 'LOCATION_POWER_MODE(2)'\n | 'LOCATION_POWER_MODE(3)'\n | 'LOCATION_POWER_MODE(4)'\n | 'ENERGY_SAVER';\n\nexport type IssueListService = TimelineDetectionService | DrivingService | WalkingService;\n\nexport type IssueListItem<ReasonsType> = {\n reasons: Array<ReasonsType>;\n service?: IssueListService;\n};\n\nexport type ErrorListType = Array<IssueListItem<ErrorReasons>>;\n\nexport type WarningListType = Array<IssueListItem<WarningReasons>>;\n\nexport type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';\n\nexport type MoveSdkConfig = {\n timelineDetectionServices: Array<TimelineDetectionService>;\n drivingServices: Array<DrivingService>;\n walkingServices: Array<WalkingService>;\n};\n\nexport type MoveSdkDeviceDiscovery = {\n startDelay?: number;\n duration?: number;\n interval?: number;\n stopScanOnFirstDiscovered?: boolean;\n};\n\nexport type MoveSdkOptions = {\n motionPermissionMandatory?: boolean;\n backgroundLocationPermissionMandatory?: boolean;\n overlayPermissionMandatory?: boolean;\n useBackendConfig?: boolean;\n deviceDiscovery?: MoveSdkDeviceDiscovery;\n};\n\nexport type MoveSdkAuth = {\n userId: string;\n accessToken: string;\n refreshToken: string;\n projectId: number;\n};\n\nexport type NotificationConfig = {\n title: string;\n text: string;\n};\n\nexport type MoveSdkAndroidConfig = {\n notifications: {\n recognitionNotification: NotificationConfig;\n tripNotification: NotificationConfig;\n };\n};\n\nexport type ListenerSubscription = EmitterSubscription;\n\nexport type AuthStateEvent = {\n state: AuthState;\n accessToken?: string;\n refreshToken?: string;\n};\n\nexport type MoveSdkDeviceFilter = 'beacon' | 'paired' | 'connected';\n\nexport type MoveSdkDevice = {\n name: string;\n data: string;\n id: string;\n isConnected?: boolean;\n};\n\nexport type MoveScanResult = {\n isDiscovered: boolean;\n device: MoveSdkDevice;\n name: string;\n};\n\nexport type MoveSdkLog = {\n message: string;\n value?: string;\n};\n\nconst { MoveSdk: NativeMoveSdk } = NativeModules;\nconst eventEmitter = new NativeEventEmitter(NativeMoveSdk);\n\nexport default class MoveSdk {\n static READY: SdkState = 'READY';\n static RUNNING: SdkState = 'RUNNING';\n static UNINITIALIZED: SdkState = 'UNINITIALIZED';\n\n static AUTH_EXPIRED: AuthState = 'EXPIRED';\n static AUTH_VALID: AuthState = 'VALID';\n static AUTH_UNKNOWN: AuthState = 'UNKNOWN';\n static AUTH_INVALID: AuthState = 'INVALID';\n\n static UNKNOWN: TripState = 'UNKNOWN';\n static DRIVING: TripState = 'DRIVING';\n static HALT: TripState = 'HALT';\n static IDLE: TripState = 'IDLE';\n static IGNORED: TripState = 'IGNORED';\n\n static sdkStateFromNative(sdkState: SdkState): SdkState {\n if ([MoveSdk.UNINITIALIZED, MoveSdk.READY, MoveSdk.RUNNING, MoveSdk.UNINITIALIZED].includes(sdkState)) {\n return sdkState;\n }\n\n return MoveSdk.UNINITIALIZED;\n }\n\n static tripStateFromNative(nativeTripState: TripState): TripState {\n if ([MoveSdk.UNKNOWN, MoveSdk.DRIVING, MoveSdk.HALT, MoveSdk.IDLE, MoveSdk.IGNORED].includes(nativeTripState)) {\n return nativeTripState;\n }\n\n return MoveSdk.UNKNOWN;\n }\n\n static authStateFromNative(nativeAuthState: AuthState): AuthState {\n if ([MoveSdk.AUTH_VALID, MoveSdk.AUTH_EXPIRED, MoveSdk.AUTH_INVALID].includes(nativeAuthState)) {\n return nativeAuthState;\n }\n\n return MoveSdk.AUTH_UNKNOWN;\n }\n\n static async setup(config: MoveSdkConfig, auth: MoveSdkAuth, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n const { userId, projectId, accessToken, refreshToken } = auth;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setup(\n userId,\n accessToken,\n refreshToken,\n projectId,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static async setupWithCode(code: string, config: MoveSdkConfig, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setupWithCode(\n code,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static allowMockLocations(allowMockLocations: boolean) {\n NativeMoveSdk.allowMockLocations(allowMockLocations);\n }\n\n /* Deprecated */\n static init() {\n NativeMoveSdk.init();\n }\n\n static resolveError() {\n NativeMoveSdk.resolveError();\n }\n\n static async updateAuth(auth: MoveSdkAuth): Promise<void> {\n const { userId, projectId, accessToken, refreshToken } = auth;\n return await NativeMoveSdk.updateAuth(userId, accessToken, refreshToken, projectId);\n }\n\n static async startAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.startAutomaticDetection();\n }\n\n static async stopAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.stopAutomaticDetection();\n }\n\n static forceTripRecognition(duration: number = 60000) {\n NativeMoveSdk.forceTripRecognition(duration);\n }\n\n static keepInForeground(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepInForeground(enabled);\n } else {\n console.warn('MoveSdk.keepInForeground() is Android OS only.');\n }\n }\n\n static keepActive(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepActive(enabled);\n } else {\n console.warn('MoveSdk.keepActive() is Android OS only.');\n }\n }\n\n static async synchronizeUserData(): Promise<boolean> {\n return await NativeMoveSdk.synchronizeUserData();\n }\n\n static async getAuthState(): Promise<AuthState> {\n const authState = await NativeMoveSdk.getAuthState();\n return MoveSdk.authStateFromNative(authState);\n }\n\n static async getState(): Promise<SdkState> {\n const state = await NativeMoveSdk.getState();\n return MoveSdk.sdkStateFromNative(state);\n }\n\n static async getTripState(): Promise<TripState> {\n const tripState = await NativeMoveSdk.getTripState();\n return MoveSdk.tripStateFromNative(tripState);\n }\n\n static async getErrors(): Promise<ErrorListType> {\n return await NativeMoveSdk.getErrors();\n }\n\n static async getWarnings(): Promise<WarningListType> {\n return await NativeMoveSdk.getWarnings();\n }\n\n static async initiateAssistanceCall(): Promise<boolean> {\n return await NativeMoveSdk.initiateAssistanceCall();\n }\n\n static setAssistanceMetaData(data: string) {\n NativeMoveSdk.setAssistanceMetaData(data);\n }\n\n static addTripStateListener(tripStateChanged: (state: TripState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_STATE', (event) => tripStateChanged(MoveSdk.tripStateFromNative(event.state)));\n }\n\n static addTripStartListener(tripStartTriggered: (start: Date) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_START', (start) => tripStartTriggered(new Date(Number(start))));\n }\n\n static addSdkStateListener(sdkStateChanged: (state: SdkState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_STATE', (event) => {\n sdkStateChanged(MoveSdk.sdkStateFromNative(event.state));\n });\n }\n\n static addAuthStateListener(authStateChanged: (event: AuthStateEvent) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_AUTH_STATE', (event) => {\n const transformedEvent = {\n ...event,\n state: MoveSdk.authStateFromNative(event.state),\n };\n authStateChanged(transformedEvent);\n });\n }\n\n static addErrorsListener(errorsReceived: (errors: ErrorListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_ERRORS', (event) => {\n errorsReceived(event.errors);\n });\n }\n\n static addWarningsListener(warningsReceived: (warnings: WarningListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_WARNINGS', (event) => {\n warningsReceived(event.warnings);\n });\n }\n\n static addAppEventListener(appEventReceived: (event: string) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_APP_EVENT', (event) => {\n appEventReceived(event);\n });\n }\n\n static addLogListener(logReceived: (event: MoveSdkLog) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_LOG', (event) => {\n logReceived(event);\n });\n }\n\n static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', (config) => {\n configChangeReceived(config);\n });\n }\n\n static version(): string {\n return Platform.OS === 'android' ? NativeMoveSdk.getConstants().version : 'Unknown';\n }\n\n static finishCurrentTrip() {\n NativeMoveSdk.finishCurrentTrip();\n }\n\n static ignoreCurrentTrip() {\n NativeMoveSdk.ignoreCurrentTrip();\n }\n\n static requestMotionPermission() {\n if (Platform.OS === 'ios') {\n NativeMoveSdk.requestMotionPermission();\n } else {\n console.warn('MoveSdk.requestMotionPermission() is iOS only.');\n }\n }\n\n static async getBluetoothPermission(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothPermission();\n }\n\n static async getBluetoothState(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothState();\n }\n\n static async shutdown(force: boolean = true): Promise<ShutdownReturnType> {\n return await NativeMoveSdk.shutdown(force);\n }\n\n static async getDeviceQualifier(): Promise<string | null> {\n return NativeMoveSdk.getDeviceQualifier();\n }\n\n static async geocode(latitude: number, longitude: number): Promise<string> {\n return await NativeMoveSdk.geocode(latitude, longitude);\n }\n\n static async isAuthValid(): Promise<boolean> {\n return await NativeMoveSdk.isAuthValid();\n }\n\n // **** PERMISSIONS MODULE START *****\n\n static async canDrawOverlays(): Promise<boolean> {\n return await NativeMoveSdk.canDrawOverlays();\n }\n\n static requestDrawOverlaysPermission() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestDrawOverlaysPermission();\n } else {\n console.warn('MoveSdk.requestDrawOverlaysPermission() is Android OS only.');\n }\n }\n\n static async isAppIgnoringBatteryOptimization(): Promise<boolean> {\n return await NativeMoveSdk.isAppIgnoringBatteryOptimization();\n }\n\n static requestAppIgnoringBatteryOptimization() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestAppIgnoringBatteryOptimization();\n } else {\n console.warn('MoveSdk.requestAppIgnoringBatteryOptimization() is Android OS only.');\n }\n }\n\n // **** PERMISSIONS MODULE END *****\n\n static startScanningDevices(sdkDevicesDetected: (state: Array<MoveSdkDevice>) => void, filter: MoveSdkDeviceFilter[] = ['paired'], uuid?: string, manufacturerId?: number): ListenerSubscription {\n const subscription = eventEmitter.addListener('MOVE_SDK_DEVICES', (devices) => {\n sdkDevicesDetected(devices);\n });\n const subscriptionRemove = subscription.remove;\n subscription.remove = () => {\n NativeMoveSdk.stopScanningDevices();\n subscriptionRemove();\n };\n\n NativeMoveSdk.startScanningDevices(filter, uuid, manufacturerId ?? -1);\n return subscription;\n }\n\n static async getRegisteredDevices(): Promise<Array<MoveSdkDevice>> {\n return await NativeMoveSdk.getRegisteredDevices();\n }\n\n static async registerDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.registerDevices(devices);\n }\n\n static async unregisterDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.unregisterDevices(devices);\n }\n\n static requestBluetoothAlwaysUsagePermission(): void {\n NativeMoveSdk.requestBluetoothAlwaysUsagePermission();\n }\n\n static addDeviceDiscoveryListener(onScanResult: (state: Array<MoveScanResult>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_SCAN_RESULT', (results) => {\n onScanResult(results);\n });\n }\n\n static addDeviceStateListener(onScanResult: (results: Array<MoveSdkDevice>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_DEVICE_STATE', (results) => {\n onScanResult(results);\n });\n }\n\n static setTimer(callback: () => void, delay: number = 60000): string {\n if (Platform.OS === 'android') {\n const key = Date.now().toString();\n NativeMoveSdk.setTimer(delay, key, callback);\n return key;\n } else {\n console.warn('MoveSdk.setTimer() is Android OS only.');\n return '';\n }\n }\n\n static cancelTimer(key: string) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.cancelTimer(key);\n } else {\n console.warn('MoveSdk.cancelTimer() is Android OS only.');\n }\n }\n\n static async startTrip(metadata?: { [key: string]: string }): Promise<boolean> {\n return await NativeMoveSdk.startTrip(metadata);\n }\n\n static updateConfig(config: MoveSdkConfig) {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices);\n }\n\n static setTripMetadata(metadata?: { [key: string]: string }) {\n NativeMoveSdk.setTripMetadata(metadata);\n }\n\n static async setLiveLocationTag(tag?: string): Promise<boolean> {\n return await NativeMoveSdk.setLiveLocationTag(tag);\n }\n}\n"]}
1
+ {"version":3,"sources":["MoveSdk.ts"],"names":["NativeModules","NativeEventEmitter","Platform","MoveSdk","NativeMoveSdk","eventEmitter","sdkStateFromNative","sdkState","UNINITIALIZED","READY","RUNNING","includes","tripStateFromNative","nativeTripState","UNKNOWN","DRIVING","HALT","IDLE","IGNORED","authStateFromNative","nativeAuthState","AUTH_VALID","AUTH_EXPIRED","AUTH_INVALID","AUTH_UNKNOWN","setup","config","auth","android","options","timelineDetectionServices","drivingServices","walkingServices","userId","projectId","accessToken","refreshToken","platformParams","OS","notifications","tripNotification","recognitionNotification","Error","title","text","setupWithCode","code","allowMockLocations","init","resolveError","updateAuth","startAutomaticDetection","stopAutomaticDetection","forceTripRecognition","duration","keepInForeground","enabled","console","warn","keepActive","synchronizeUserData","getAuthState","authState","getState","state","getTripState","tripState","getErrors","getWarnings","initiateAssistanceCall","setAssistanceMetaData","data","addTripStateListener","tripStateChanged","addListener","event","addTripStartListener","tripStartTriggered","start","Date","Number","addSdkStateListener","sdkStateChanged","addAuthStateListener","authStateChanged","transformedEvent","addErrorsListener","errorsReceived","errors","addWarningsListener","warningsReceived","warnings","addAppEventListener","appEventReceived","addLogListener","logReceived","addRemoteConfigChangeListener","configChangeReceived","services","addHealthListener","scoreReceived","health","version","getConstants","finishCurrentTrip","ignoreCurrentTrip","requestMotionPermission","getBluetoothPermission","getBluetoothState","shutdown","force","getDeviceQualifier","geocode","latitude","longitude","isAuthValid","canDrawOverlays","requestDrawOverlaysPermission","isAppIgnoringBatteryOptimization","requestAppIgnoringBatteryOptimization","startScanningDevices","sdkDevicesDetected","filter","uuid","manufacturerId","subscription","devices","subscriptionRemove","remove","stopScanningDevices","getRegisteredDevices","registerDevices","unregisterDevices","requestBluetoothAlwaysUsagePermission","addDeviceDiscoveryListener","onScanResult","results","addDeviceStateListener","setTimer","callback","delay","key","now","toString","cancelTimer","startTrip","metadata","updateConfig","setTripMetadata","setLiveLocationTag","tag","startNativeSdkStateListener"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform, EmitterSubscription } from 'react-native';\n\nexport type SdkState = 'UNINITIALIZED' | 'READY' | 'RUNNING';\nexport type TripState = 'UNKNOWN' | 'DRIVING' | 'HALT' | 'IDLE' | 'IGNORED';\nexport type AuthState = 'UNKNOWN' | 'VALID' | 'EXPIRED' | 'INVALID';\nexport type DrivingService = 'DISTRACTION_FREE_DRIVING' | 'DRIVING_BEHAVIOUR' | 'DEVICE_DISCOVERY';\nexport type WalkingService = 'WALKING_LOCATION';\nexport type OtherService = 'POINTS_OF_INTEREST';\nexport type TimelineDetectionService = 'DRIVING' | 'CYCLING' | 'WALKING' | 'PLACES' | 'PUBLIC_TRANSPORT' | 'AUTOMATIC_IMPACT_DETECTION' | 'ASSISTANCE_CALL' | 'POINTS_OF_INTEREST';\n\nexport type ErrorReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_PERMISSION_MISSING'\n | 'UNAUTHORIZED'\n | 'INTERNET_PERMISSION_MISSING'\n | 'PHONE_PERMISSION_MISSING'\n | 'OVERLAY_PERMISSION_MISSING'\n | 'NOTIFICATION_MISSING'\n | 'ACCELEROMETER_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'PRECISE_LOCATION_PERMISSION_MISSING';\n\nexport type WarningReasons =\n | 'BACKGROUND_LOCATION_PERMISSION_MISSING'\n | 'MOTION_PERMISSION_MISSING'\n | 'ACTIVITY_PERMISSION_MISSING'\n | 'BATTERY_OPTIMIZATION'\n | 'BLUETOOTH_TURNED_OFF'\n | 'BLUETOOTH_SCAN_PERMISSION_MISSING'\n | 'BLUETOOTH_CONNECT_PERMISSION_MISSING'\n | 'GOOGLE_PLAY_LOCATION_ACCURACY_MISSING'\n | 'NOTIFICATION_PERMISSION_MISSING'\n | 'FINE_LOCATION_PERMISSION_MISSING'\n | 'BLUETOOTH_PERMISSION_MISSING'\n | 'GPS_OFF'\n | 'OFFLINE'\n | 'GO_EDITION'\n | 'ROOTED'\n | 'NO_SIM'\n | 'BACKGROUND_RESTRICTED'\n | 'MOCK_PROVIDER_LOCATION'\n | 'MOCK_PROVIDER'\n | 'LOCATION_MODE'\n | 'PLAY_SERVICES_MISSING'\n | 'LOCATION_POWER_MODE(0)'\n | 'LOCATION_POWER_MODE(1)'\n | 'LOCATION_POWER_MODE(2)'\n | 'LOCATION_POWER_MODE(3)'\n | 'LOCATION_POWER_MODE(4)'\n | 'ENERGY_SAVER';\n\nexport type IssueListService = TimelineDetectionService | DrivingService | WalkingService;\n\nexport type IssueListItem<ReasonsType> = {\n reasons: Array<ReasonsType>;\n service?: IssueListService;\n};\n\nexport type ErrorListType = Array<IssueListItem<ErrorReasons>>;\n\nexport type WarningListType = Array<IssueListItem<WarningReasons>>;\n\nexport type HealthReasons =\n | 'BATTERY_LEVEL'\n | 'CPU_USAGE'\n | 'DISK_USAGE'\n | 'INTERNET_USAGE'\n | 'MEMORY_USAGE'\n | 'NEW_VERSION'\n | 'UNIMPLEMENTED_LISTENERS';\n\nexport type HealthListItem = {\n reason: HealthReasons;\n description: string;\n};\n\nexport type MoveHealthScore = Array<HealthListItem>;\n\nexport type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';\n\nexport type MoveSdkConfig = {\n timelineDetectionServices: Array<TimelineDetectionService>;\n drivingServices: Array<DrivingService>;\n walkingServices: Array<WalkingService>;\n};\n\nexport type MoveSdkDeviceDiscovery = {\n startDelay?: number;\n duration?: number;\n interval?: number;\n stopScanOnFirstDiscovered?: boolean;\n};\n\nexport type MoveSdkOptions = {\n motionPermissionMandatory?: boolean;\n backgroundLocationPermissionMandatory?: boolean;\n overlayPermissionMandatory?: boolean;\n useBackendConfig?: boolean;\n deviceDiscovery?: MoveSdkDeviceDiscovery;\n};\n\nexport type MoveSdkAuth = {\n userId: string;\n accessToken: string;\n refreshToken: string;\n projectId: number;\n};\n\nexport type NotificationConfig = {\n title: string;\n text: string;\n};\n\nexport type MoveSdkAndroidConfig = {\n notifications: {\n recognitionNotification: NotificationConfig;\n tripNotification: NotificationConfig;\n };\n};\n\nexport type ListenerSubscription = EmitterSubscription;\n\nexport type AuthStateEvent = {\n state: AuthState;\n accessToken?: string;\n refreshToken?: string;\n};\n\nexport type MoveSdkDeviceFilter = 'beacon' | 'paired' | 'connected';\n\nexport type MoveSdkDevice = {\n name: string;\n data: string;\n id: string;\n isConnected?: boolean;\n};\n\nexport type MoveScanResult = {\n isDiscovered: boolean;\n device: MoveSdkDevice;\n name: string;\n};\n\nexport type MoveSdkLog = {\n message: string;\n value?: string;\n};\n\nconst { MoveSdk: NativeMoveSdk } = NativeModules;\nconst eventEmitter = new NativeEventEmitter(NativeMoveSdk);\n\nexport default class MoveSdk {\n static READY: SdkState = 'READY';\n static RUNNING: SdkState = 'RUNNING';\n static UNINITIALIZED: SdkState = 'UNINITIALIZED';\n\n static AUTH_EXPIRED: AuthState = 'EXPIRED';\n static AUTH_VALID: AuthState = 'VALID';\n static AUTH_UNKNOWN: AuthState = 'UNKNOWN';\n static AUTH_INVALID: AuthState = 'INVALID';\n\n static UNKNOWN: TripState = 'UNKNOWN';\n static DRIVING: TripState = 'DRIVING';\n static HALT: TripState = 'HALT';\n static IDLE: TripState = 'IDLE';\n static IGNORED: TripState = 'IGNORED';\n\n static sdkStateFromNative(sdkState: SdkState): SdkState {\n if ([MoveSdk.UNINITIALIZED, MoveSdk.READY, MoveSdk.RUNNING, MoveSdk.UNINITIALIZED].includes(sdkState)) {\n return sdkState;\n }\n\n return MoveSdk.UNINITIALIZED;\n }\n\n static tripStateFromNative(nativeTripState: TripState): TripState {\n if ([MoveSdk.UNKNOWN, MoveSdk.DRIVING, MoveSdk.HALT, MoveSdk.IDLE, MoveSdk.IGNORED].includes(nativeTripState)) {\n return nativeTripState;\n }\n\n return MoveSdk.UNKNOWN;\n }\n\n static authStateFromNative(nativeAuthState: AuthState): AuthState {\n if ([MoveSdk.AUTH_VALID, MoveSdk.AUTH_EXPIRED, MoveSdk.AUTH_INVALID].includes(nativeAuthState)) {\n return nativeAuthState;\n }\n\n return MoveSdk.AUTH_UNKNOWN;\n }\n\n static async setup(config: MoveSdkConfig, auth: MoveSdkAuth, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n const { userId, projectId, accessToken, refreshToken } = auth;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setup(\n userId,\n accessToken,\n refreshToken,\n projectId,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static async setupWithCode(code: string, config: MoveSdkConfig, android: MoveSdkAndroidConfig, options?: MoveSdkOptions): Promise<void> {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n\n let platformParams: Array<string | boolean> = [];\n if (Platform.OS === 'android') {\n const { notifications } = android;\n\n const { tripNotification, recognitionNotification } = notifications;\n\n if (!tripNotification || !recognitionNotification) {\n throw new Error('MOVE SDK needs notification configuration for Android');\n }\n\n platformParams = [recognitionNotification.title, recognitionNotification.text, tripNotification.title, tripNotification.text];\n }\n\n return await NativeMoveSdk.setupWithCode(\n code,\n // Config\n timelineDetectionServices,\n drivingServices,\n walkingServices,\n options,\n // Platform config\n ...platformParams\n );\n }\n\n static allowMockLocations(allowMockLocations: boolean) {\n NativeMoveSdk.allowMockLocations(allowMockLocations);\n }\n\n /* Deprecated */\n static init() {\n NativeMoveSdk.init();\n }\n\n static resolveError() {\n NativeMoveSdk.resolveError();\n }\n\n static async updateAuth(auth: MoveSdkAuth): Promise<void> {\n const { userId, projectId, accessToken, refreshToken } = auth;\n return await NativeMoveSdk.updateAuth(userId, accessToken, refreshToken, projectId);\n }\n\n static async startAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.startAutomaticDetection();\n }\n\n static async stopAutomaticDetection(): Promise<boolean> {\n return await NativeMoveSdk.stopAutomaticDetection();\n }\n\n static forceTripRecognition(duration: number = 60000) {\n NativeMoveSdk.forceTripRecognition(duration);\n }\n\n static keepInForeground(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepInForeground(enabled);\n } else {\n console.warn('MoveSdk.keepInForeground() is Android OS only.');\n }\n }\n\n static keepActive(enabled: boolean) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.keepActive(enabled);\n } else {\n console.warn('MoveSdk.keepActive() is Android OS only.');\n }\n }\n\n static async synchronizeUserData(): Promise<boolean> {\n return await NativeMoveSdk.synchronizeUserData();\n }\n\n static async getAuthState(): Promise<AuthState> {\n const authState = await NativeMoveSdk.getAuthState();\n return MoveSdk.authStateFromNative(authState);\n }\n\n static async getState(): Promise<SdkState> {\n const state = await NativeMoveSdk.getState();\n return MoveSdk.sdkStateFromNative(state);\n }\n\n static async getTripState(): Promise<TripState> {\n const tripState = await NativeMoveSdk.getTripState();\n return MoveSdk.tripStateFromNative(tripState);\n }\n\n static async getErrors(): Promise<ErrorListType> {\n return await NativeMoveSdk.getErrors();\n }\n\n static async getWarnings(): Promise<WarningListType> {\n return await NativeMoveSdk.getWarnings();\n }\n\n static async initiateAssistanceCall(): Promise<boolean> {\n return await NativeMoveSdk.initiateAssistanceCall();\n }\n\n static setAssistanceMetaData(data: string) {\n NativeMoveSdk.setAssistanceMetaData(data);\n }\n\n static addTripStateListener(tripStateChanged: (state: TripState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_STATE', (event) => tripStateChanged(MoveSdk.tripStateFromNative(event.state)));\n }\n\n static addTripStartListener(tripStartTriggered: (start: Date) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_TRIP_START', (start) => tripStartTriggered(new Date(Number(start))));\n }\n\n static addSdkStateListener(sdkStateChanged: (state: SdkState) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_STATE', (event) => {\n sdkStateChanged(MoveSdk.sdkStateFromNative(event.state));\n });\n }\n\n static addAuthStateListener(authStateChanged: (event: AuthStateEvent) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_AUTH_STATE', (event) => {\n const transformedEvent = {\n ...event,\n state: MoveSdk.authStateFromNative(event.state),\n };\n authStateChanged(transformedEvent);\n });\n }\n\n static addErrorsListener(errorsReceived: (errors: ErrorListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_ERRORS', (event) => {\n errorsReceived(event.errors);\n });\n }\n\n static addWarningsListener(warningsReceived: (warnings: WarningListType) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_WARNINGS', (event) => {\n warningsReceived(event.warnings);\n });\n }\n\n static addAppEventListener(appEventReceived: (event: string) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_APP_EVENT', (event) => {\n appEventReceived(event);\n });\n }\n\n static addLogListener(logReceived: (event: MoveSdkLog) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_LOG', (event) => {\n logReceived(event);\n });\n }\n\n static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', (config) => {\n configChangeReceived(config.services);\n });\n }\n\n static addHealthListener(scoreReceived: (health: MoveHealthScore) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_HEALTH', (health) => {\n scoreReceived(health);\n });\n }\n\n static version(): string {\n return Platform.OS === 'android' ? NativeMoveSdk.getConstants().version : 'Unknown';\n }\n\n static finishCurrentTrip() {\n NativeMoveSdk.finishCurrentTrip();\n }\n\n static ignoreCurrentTrip() {\n NativeMoveSdk.ignoreCurrentTrip();\n }\n\n static requestMotionPermission() {\n if (Platform.OS === 'ios') {\n NativeMoveSdk.requestMotionPermission();\n } else {\n console.warn('MoveSdk.requestMotionPermission() is iOS only.');\n }\n }\n\n static async getBluetoothPermission(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothPermission();\n }\n\n static async getBluetoothState(): Promise<boolean> {\n return await NativeMoveSdk.getBluetoothState();\n }\n\n static async shutdown(force: boolean = true): Promise<ShutdownReturnType> {\n return await NativeMoveSdk.shutdown(force);\n }\n\n static async getDeviceQualifier(): Promise<string | null> {\n return NativeMoveSdk.getDeviceQualifier();\n }\n\n static async geocode(latitude: number, longitude: number): Promise<string> {\n return await NativeMoveSdk.geocode(latitude, longitude);\n }\n\n static async isAuthValid(): Promise<boolean> {\n return await NativeMoveSdk.isAuthValid();\n }\n\n // **** PERMISSIONS MODULE START *****\n\n static async canDrawOverlays(): Promise<boolean> {\n return await NativeMoveSdk.canDrawOverlays();\n }\n\n static requestDrawOverlaysPermission() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestDrawOverlaysPermission();\n } else {\n console.warn('MoveSdk.requestDrawOverlaysPermission() is Android OS only.');\n }\n }\n\n static async isAppIgnoringBatteryOptimization(): Promise<boolean> {\n return await NativeMoveSdk.isAppIgnoringBatteryOptimization();\n }\n\n static requestAppIgnoringBatteryOptimization() {\n if (Platform.OS === 'android') {\n NativeMoveSdk.requestAppIgnoringBatteryOptimization();\n } else {\n console.warn('MoveSdk.requestAppIgnoringBatteryOptimization() is Android OS only.');\n }\n }\n\n // **** PERMISSIONS MODULE END *****\n\n static startScanningDevices(sdkDevicesDetected: (state: Array<MoveSdkDevice>) => void, filter: MoveSdkDeviceFilter[] = ['paired'], uuid?: string, manufacturerId?: number): ListenerSubscription {\n const subscription = eventEmitter.addListener('MOVE_SDK_DEVICES', (devices) => {\n sdkDevicesDetected(devices);\n });\n const subscriptionRemove = subscription.remove;\n subscription.remove = () => {\n NativeMoveSdk.stopScanningDevices();\n subscriptionRemove();\n };\n\n NativeMoveSdk.startScanningDevices(filter, uuid, manufacturerId ?? -1);\n return subscription;\n }\n\n static async getRegisteredDevices(): Promise<Array<MoveSdkDevice>> {\n return await NativeMoveSdk.getRegisteredDevices();\n }\n\n static async registerDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.registerDevices(devices);\n }\n\n static async unregisterDevices(devices: Array<MoveSdkDevice>): Promise<boolean> {\n return await NativeMoveSdk.unregisterDevices(devices);\n }\n\n static requestBluetoothAlwaysUsagePermission(): void {\n NativeMoveSdk.requestBluetoothAlwaysUsagePermission();\n }\n\n static addDeviceDiscoveryListener(onScanResult: (state: Array<MoveScanResult>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_SCAN_RESULT', (results) => {\n onScanResult(results);\n });\n }\n\n static addDeviceStateListener(onScanResult: (results: Array<MoveSdkDevice>) => void): ListenerSubscription {\n return eventEmitter.addListener('MOVE_SDK_DEVICE_STATE', (results) => {\n onScanResult(results);\n });\n }\n\n static setTimer(callback: () => void, delay: number = 60000): string {\n if (Platform.OS === 'android') {\n const key = Date.now().toString();\n NativeMoveSdk.setTimer(delay, key, callback);\n return key;\n } else {\n console.warn('MoveSdk.setTimer() is Android OS only.');\n return '';\n }\n }\n\n static cancelTimer(key: string) {\n if (Platform.OS === 'android') {\n NativeMoveSdk.cancelTimer(key);\n } else {\n console.warn('MoveSdk.cancelTimer() is Android OS only.');\n }\n }\n\n static async startTrip(metadata?: { [key: string]: string }): Promise<boolean> {\n return await NativeMoveSdk.startTrip(metadata);\n }\n\n static updateConfig(config: MoveSdkConfig, options?: MoveSdkOptions) {\n const { timelineDetectionServices, drivingServices, walkingServices } = config;\n NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices, options);\n }\n\n static setTripMetadata(metadata?: { [key: string]: string }) {\n NativeMoveSdk.setTripMetadata(metadata);\n }\n\n static async setLiveLocationTag(tag?: string): Promise<boolean> {\n return await NativeMoveSdk.setLiveLocationTag(tag);\n }\n\n static startNativeSdkStateListener() {\n NativeMoveSdk.startNativeSdkStateListener();\n }\n}\n"]}
@@ -11,9 +11,11 @@ export default function LazyMoveSdk(_ref) {
11
11
  const [currentMode, setCurrentMode] = useState(AppState.currentState);
12
12
  const [tripState, setTripState] = useState();
13
13
  const [removeUi, setRemoveUi] = useState(false);
14
+ const [isListener, setIsListener] = useState(false);
14
15
  useEffect(() => {
15
16
  let timer = null;
16
17
  const appStateSubscription = AppState.addEventListener('change', state => {
18
+ setIsListener(true);
17
19
  setCurrentMode(state);
18
20
  prevState.current = state;
19
21
  });
@@ -69,7 +71,7 @@ export default function LazyMoveSdk(_ref) {
69
71
  }, [currentMode, removeUi]);
70
72
  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
71
73
 
72
- if (startedInBackground || removeUi) {
74
+ if (startedInBackground && !isListener || removeUi) {
73
75
  return /*#__PURE__*/React.createElement(View, null);
74
76
  }
75
77
 
@@ -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","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\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout> | null | number | string = null;\n const appStateSubscription = AppState.addEventListener('change', (state: AppStateStatus) => {\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 || 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","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"]}
@@ -15,6 +15,12 @@ export type IssueListItem<ReasonsType> = {
15
15
  };
16
16
  export type ErrorListType = Array<IssueListItem<ErrorReasons>>;
17
17
  export type WarningListType = Array<IssueListItem<WarningReasons>>;
18
+ export type HealthReasons = 'BATTERY_LEVEL' | 'CPU_USAGE' | 'DISK_USAGE' | 'INTERNET_USAGE' | 'MEMORY_USAGE' | 'NEW_VERSION' | 'UNIMPLEMENTED_LISTENERS';
19
+ export type HealthListItem = {
20
+ reason: HealthReasons;
21
+ description: string;
22
+ };
23
+ export type MoveHealthScore = Array<HealthListItem>;
18
24
  export type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';
19
25
  export type MoveSdkConfig = {
20
26
  timelineDetectionServices: Array<TimelineDetectionService>;
@@ -116,6 +122,7 @@ export default class MoveSdk {
116
122
  static addAppEventListener(appEventReceived: (event: string) => void): ListenerSubscription;
117
123
  static addLogListener(logReceived: (event: MoveSdkLog) => void): ListenerSubscription;
118
124
  static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription;
125
+ static addHealthListener(scoreReceived: (health: MoveHealthScore) => void): ListenerSubscription;
119
126
  static version(): string;
120
127
  static finishCurrentTrip(): void;
121
128
  static ignoreCurrentTrip(): void;
@@ -142,9 +149,10 @@ export default class MoveSdk {
142
149
  static startTrip(metadata?: {
143
150
  [key: string]: string;
144
151
  }): Promise<boolean>;
145
- static updateConfig(config: MoveSdkConfig): void;
152
+ static updateConfig(config: MoveSdkConfig, options?: MoveSdkOptions): void;
146
153
  static setTripMetadata(metadata?: {
147
154
  [key: string]: string;
148
155
  }): void;
149
156
  static setLiveLocationTag(tag?: string): Promise<boolean>;
157
+ static startNativeSdkStateListener(): void;
150
158
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-move-sdk",
3
- "version": "2.10.3",
3
+ "version": "2.11.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.10.1.300'
21
+ s.dependency 'DolphinMoveSDK', '2.11.0.309'
22
22
  end
package/src/MoveSdk.ts CHANGED
@@ -63,6 +63,22 @@ export type ErrorListType = Array<IssueListItem<ErrorReasons>>;
63
63
 
64
64
  export type WarningListType = Array<IssueListItem<WarningReasons>>;
65
65
 
66
+ export type HealthReasons =
67
+ | 'BATTERY_LEVEL'
68
+ | 'CPU_USAGE'
69
+ | 'DISK_USAGE'
70
+ | 'INTERNET_USAGE'
71
+ | 'MEMORY_USAGE'
72
+ | 'NEW_VERSION'
73
+ | 'UNIMPLEMENTED_LISTENERS';
74
+
75
+ export type HealthListItem = {
76
+ reason: HealthReasons;
77
+ description: string;
78
+ };
79
+
80
+ export type MoveHealthScore = Array<HealthListItem>;
81
+
66
82
  export type ShutdownReturnType = 'NETWORK_ERROR' | 'SUCCESS' | 'UNINITIALIZED';
67
83
 
68
84
  export type MoveSdkConfig = {
@@ -368,7 +384,13 @@ export default class MoveSdk {
368
384
 
369
385
  static addRemoteConfigChangeListener(configChangeReceived: (config: Array<IssueListService>) => void): ListenerSubscription {
370
386
  return eventEmitter.addListener('MOVE_SDK_CONFIG_UPDATE', (config) => {
371
- configChangeReceived(config);
387
+ configChangeReceived(config.services);
388
+ });
389
+ }
390
+
391
+ static addHealthListener(scoreReceived: (health: MoveHealthScore) => void): ListenerSubscription {
392
+ return eventEmitter.addListener('MOVE_SDK_HEALTH', (health) => {
393
+ scoreReceived(health);
372
394
  });
373
395
  }
374
396
 
@@ -509,9 +531,9 @@ export default class MoveSdk {
509
531
  return await NativeMoveSdk.startTrip(metadata);
510
532
  }
511
533
 
512
- static updateConfig(config: MoveSdkConfig) {
534
+ static updateConfig(config: MoveSdkConfig, options?: MoveSdkOptions) {
513
535
  const { timelineDetectionServices, drivingServices, walkingServices } = config;
514
- NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices);
536
+ NativeMoveSdk.updateConfig(timelineDetectionServices, drivingServices, walkingServices, options);
515
537
  }
516
538
 
517
539
  static setTripMetadata(metadata?: { [key: string]: string }) {
@@ -521,4 +543,8 @@ export default class MoveSdk {
521
543
  static async setLiveLocationTag(tag?: string): Promise<boolean> {
522
544
  return await NativeMoveSdk.setLiveLocationTag(tag);
523
545
  }
546
+
547
+ static startNativeSdkStateListener() {
548
+ NativeMoveSdk.startNativeSdkStateListener();
549
+ }
524
550
  }
@@ -14,10 +14,12 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
14
14
  const [currentMode, setCurrentMode] = useState(AppState.currentState);
15
15
  const [tripState, setTripState] = useState<TripState>();
16
16
  const [removeUi, setRemoveUi] = useState(false);
17
+ const [isListener, setIsListener] = useState(false);
17
18
 
18
19
  useEffect(() => {
19
20
  let timer: ReturnType<typeof setTimeout> | null | number | string = null;
20
21
  const appStateSubscription = AppState.addEventListener('change', (state: AppStateStatus) => {
22
+ setIsListener(true);
21
23
  setCurrentMode(state);
22
24
  prevState.current = state;
23
25
  });
@@ -73,7 +75,7 @@ export default function LazyMoveSdk({ children, delayToRemoveUiInBackgroundMs =
73
75
  (prevState.current === 'background' && currentMode === 'background');
74
76
 
75
77
  // DON'T RENDER UI IF APP STARTED IN BACKGROUND OR APP IS IN BACKGROUND AND TRIP STARTS
76
- if (startedInBackground || removeUi) {
78
+ if ((startedInBackground && !isListener) || removeUi) {
77
79
  return <View />;
78
80
  }
79
81