@ovok/native 1.5.1 → 1.5.2

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.
Files changed (150) hide show
  1. package/android/build.gradle +43 -0
  2. package/android/src/main/AndroidManifest.xml +23 -0
  3. package/android/src/main/java/com/ovok/sdk/backgroundsync/BackgroundSyncNotification.java +78 -0
  4. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBackgroundSyncModule.java +109 -0
  5. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBackgroundSyncPackage.java +26 -0
  6. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBluetoothForegroundService.java +28 -0
  7. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokHealthConnectTaskService.java +45 -0
  8. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokHealthConnectWorker.java +28 -0
  9. package/lib/commonjs/index.js +11 -0
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/modules/background-sync/android-background-sync.js +69 -0
  12. package/lib/commonjs/modules/background-sync/android-background-sync.js.map +1 -0
  13. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js +49 -0
  14. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -0
  15. package/lib/commonjs/modules/background-sync/index.js +28 -0
  16. package/lib/commonjs/modules/background-sync/index.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +7 -1
  18. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +24 -2
  20. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +9 -6
  22. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/services/devices/uebe/mysense.device.js +16 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/uebe/mysense.device.js.map +1 -1
  25. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +10 -5
  26. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  27. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +5 -3
  28. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  29. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +7 -4
  30. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  31. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js +27 -11
  32. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  33. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +4 -3
  34. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  35. package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js +9 -5
  36. package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  37. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +4 -1
  38. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  39. package/lib/module/index.js +1 -0
  40. package/lib/module/index.js.map +1 -1
  41. package/lib/module/modules/background-sync/android-background-sync.js +61 -0
  42. package/lib/module/modules/background-sync/android-background-sync.js.map +1 -0
  43. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js +44 -0
  44. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -0
  45. package/lib/module/modules/background-sync/index.js +5 -0
  46. package/lib/module/modules/background-sync/index.js.map +1 -0
  47. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +7 -2
  48. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  49. package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +24 -2
  50. package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -1
  51. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +9 -6
  52. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  53. package/lib/module/modules/bt-management/services/devices/uebe/mysense.device.js +16 -0
  54. package/lib/module/modules/bt-management/services/devices/uebe/mysense.device.js.map +1 -1
  55. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +10 -5
  56. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  57. package/lib/module/modules/data-sync/components/android/android-health-sync.js +5 -3
  58. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  59. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +7 -4
  60. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  61. package/lib/module/modules/data-sync/hooks/use-listen-changes.js +27 -10
  62. package/lib/module/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  63. package/lib/module/modules/data-sync/services/base-health-sync-service.js +4 -3
  64. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  65. package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js +9 -5
  66. package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  67. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +4 -1
  68. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  69. package/lib/typescript/commonjs/src/index.d.ts +1 -0
  70. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts +39 -0
  72. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts.map +1 -0
  73. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts +12 -0
  74. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -0
  75. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts +3 -0
  76. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts.map +1 -0
  77. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +11 -4
  79. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +4 -0
  81. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts +3 -0
  83. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +8 -0
  85. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  87. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts +1 -1
  89. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts +1 -1
  91. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +3 -3
  93. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-listen-changes.d.ts +1 -1
  94. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -1
  96. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +3 -3
  98. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts +3 -1
  100. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +4 -1
  102. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts +7 -2
  104. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts +6 -0
  106. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +4 -1
  108. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  109. package/lib/typescript/module/src/index.d.ts +1 -0
  110. package/lib/typescript/module/src/index.d.ts.map +1 -1
  111. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts +39 -0
  112. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts.map +1 -0
  113. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts +12 -0
  114. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -0
  115. package/lib/typescript/module/src/modules/background-sync/index.d.ts +3 -0
  116. package/lib/typescript/module/src/modules/background-sync/index.d.ts.map +1 -0
  117. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  118. package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +11 -4
  119. package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -1
  120. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +4 -0
  121. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  122. package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts +3 -0
  123. package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts.map +1 -1
  124. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +8 -0
  125. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  126. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  127. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  128. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts +1 -1
  129. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  130. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts +1 -1
  131. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  132. package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +3 -3
  133. package/lib/typescript/module/src/modules/data-sync/hooks/use-listen-changes.d.ts +1 -1
  134. package/lib/typescript/module/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  135. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -1
  136. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  137. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +3 -3
  138. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  139. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts +3 -1
  140. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  141. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +4 -1
  142. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  143. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts +7 -2
  144. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  145. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts +6 -0
  146. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  147. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +4 -1
  148. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  149. package/package.json +6 -3
  150. package/react-native.config.js +11 -0
@@ -0,0 +1,43 @@
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+
7
+ dependencies {
8
+ classpath "com.android.tools.build:gradle:8.8.0"
9
+ }
10
+ }
11
+
12
+ apply plugin: "com.android.library"
13
+
14
+ def getExtOrDefault = { name, fallback ->
15
+ rootProject.ext.has(name) ? rootProject.ext.get(name) : fallback
16
+ }
17
+
18
+ android {
19
+ namespace "com.ovok.sdk.backgroundsync"
20
+ compileSdkVersion getExtOrDefault("compileSdkVersion", 35)
21
+
22
+ defaultConfig {
23
+ minSdkVersion getExtOrDefault("minSdkVersion", 26)
24
+ targetSdkVersion getExtOrDefault("targetSdkVersion", 35)
25
+ }
26
+
27
+ compileOptions {
28
+ sourceCompatibility JavaVersion.VERSION_1_8
29
+ targetCompatibility JavaVersion.VERSION_1_8
30
+ }
31
+ }
32
+
33
+ repositories {
34
+ google()
35
+ mavenCentral()
36
+ }
37
+
38
+ dependencies {
39
+ // For modern React Native this is resolved by the React Gradle plugin.
40
+ implementation "com.facebook.react:react-native:+"
41
+ implementation "androidx.core:core:1.13.1"
42
+ implementation "androidx.work:work-runtime:2.10.1"
43
+ }
@@ -0,0 +1,23 @@
1
+ <manifest
2
+ xmlns:android="http://schemas.android.com/apk/res/android"
3
+ xmlns:tools="http://schemas.android.com/tools">
4
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
5
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
6
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
7
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
8
+ <uses-permission
9
+ android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND"
10
+ tools:targetApi="34" />
11
+
12
+ <application>
13
+ <service
14
+ android:name=".OvokBluetoothForegroundService"
15
+ android:exported="false"
16
+ android:foregroundServiceType="connectedDevice"
17
+ android:stopWithTask="false" />
18
+ <service
19
+ android:name=".OvokHealthConnectTaskService"
20
+ android:exported="false"
21
+ android:foregroundServiceType="dataSync" />
22
+ </application>
23
+ </manifest>
@@ -0,0 +1,78 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import android.app.Notification;
4
+ import android.app.NotificationChannel;
5
+ import android.app.NotificationManager;
6
+ import android.content.Context;
7
+ import android.os.Build;
8
+ import com.facebook.react.bridge.ReadableMap;
9
+
10
+ final class BackgroundSyncNotification {
11
+ static final String BLUETOOTH_CHANNEL = "ovok-bluetooth-background-sync";
12
+ static final String HEALTH_CHANNEL = "ovok-health-background-sync";
13
+
14
+ private BackgroundSyncNotification() {}
15
+
16
+ static void save(Context context, ReadableMap options, String kind) {
17
+ String defaultTaskName = "OvokHealthConnectBackgroundSync";
18
+ String taskName = options.hasKey("taskName") ? options.getString("taskName") : defaultTaskName;
19
+ String title = options.hasKey("notificationTitle")
20
+ ? options.getString("notificationTitle")
21
+ : "Ovok background sync";
22
+ String body = options.hasKey("notificationBody")
23
+ ? options.getString("notificationBody")
24
+ : "Keeping health data synchronized";
25
+ String channelId = kind.equals("bluetooth") ? BLUETOOTH_CHANNEL : HEALTH_CHANNEL;
26
+
27
+ context.getSharedPreferences(OvokBackgroundSyncModule.PREFS, Context.MODE_PRIVATE)
28
+ .edit()
29
+ .putString(kind + "_notification_title", title)
30
+ .putString(kind + "_notification_body", body)
31
+ .putString(kind + "_channel_id", channelId)
32
+ .apply();
33
+
34
+ if (kind.equals("health")) {
35
+ context.getSharedPreferences(OvokBackgroundSyncModule.PREFS, Context.MODE_PRIVATE)
36
+ .edit()
37
+ .putString("health_task_name", taskName)
38
+ .apply();
39
+ }
40
+
41
+ ensureChannel(context, channelId, kind.equals("bluetooth")
42
+ ? "Bluetooth background sync"
43
+ : "Health Connect background sync");
44
+ }
45
+
46
+ static Notification create(Context context, String kind) {
47
+ String channelId = kind.equals("bluetooth") ? BLUETOOTH_CHANNEL : HEALTH_CHANNEL;
48
+ String title = context.getSharedPreferences(OvokBackgroundSyncModule.PREFS, Context.MODE_PRIVATE)
49
+ .getString(kind + "_notification_title", "Ovok background sync");
50
+ String body = context.getSharedPreferences(OvokBackgroundSyncModule.PREFS, Context.MODE_PRIVATE)
51
+ .getString(kind + "_notification_body", "Keeping health data synchronized");
52
+ int icon = context.getApplicationInfo().icon;
53
+ if (icon == 0) {
54
+ icon = android.R.drawable.stat_sys_data_bluetooth;
55
+ }
56
+
57
+ return new androidx.core.app.NotificationCompat.Builder(context, channelId)
58
+ .setSmallIcon(icon)
59
+ .setContentTitle(title)
60
+ .setContentText(body)
61
+ .setOngoing(true)
62
+ .setCategory(Notification.CATEGORY_SERVICE)
63
+ .setPriority(androidx.core.app.NotificationCompat.PRIORITY_LOW)
64
+ .build();
65
+ }
66
+
67
+ private static void ensureChannel(Context context, String id, String name) {
68
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
69
+ return;
70
+ }
71
+
72
+ NotificationChannel channel = new NotificationChannel(
73
+ id,
74
+ name,
75
+ NotificationManager.IMPORTANCE_LOW);
76
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
77
+ }
78
+ }
@@ -0,0 +1,109 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import android.content.Context;
4
+ import android.content.Intent;
5
+ import android.os.Build;
6
+ import androidx.annotation.NonNull;
7
+ import androidx.core.content.ContextCompat;
8
+ import androidx.work.Constraints;
9
+ import androidx.work.ExistingPeriodicWorkPolicy;
10
+ import androidx.work.NetworkType;
11
+ import androidx.work.PeriodicWorkRequest;
12
+ import androidx.work.WorkManager;
13
+ import com.facebook.react.bridge.Promise;
14
+ import com.facebook.react.bridge.ReactApplicationContext;
15
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
16
+ import com.facebook.react.bridge.ReadableMap;
17
+ import com.facebook.react.bridge.ReactMethod;
18
+ import java.util.concurrent.TimeUnit;
19
+
20
+ public final class OvokBackgroundSyncModule extends ReactContextBaseJavaModule {
21
+ public static final String NAME = "OvokBackgroundSync";
22
+ static final String PREFS = "ovok_background_sync";
23
+ static final String HEALTH_WORK_NAME = "ovok-health-connect-background-sync";
24
+
25
+ public OvokBackgroundSyncModule(ReactApplicationContext reactContext) {
26
+ super(reactContext);
27
+ }
28
+
29
+ @NonNull
30
+ @Override
31
+ public String getName() {
32
+ return NAME;
33
+ }
34
+
35
+ @ReactMethod
36
+ public void startBluetoothForegroundService(ReadableMap options, Promise promise) {
37
+ try {
38
+ Context context = getReactApplicationContext();
39
+ BackgroundSyncNotification.save(context, options, "bluetooth");
40
+
41
+ Intent intent = new Intent(context, OvokBluetoothForegroundService.class);
42
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
43
+ ContextCompat.startForegroundService(context, intent);
44
+ } else {
45
+ context.startService(intent);
46
+ }
47
+
48
+ promise.resolve(null);
49
+ } catch (Exception error) {
50
+ promise.reject("OVOK_BACKGROUND_SYNC_START_FAILED", error);
51
+ }
52
+ }
53
+
54
+ @ReactMethod
55
+ public void stopBluetoothForegroundService(Promise promise) {
56
+ try {
57
+ Context context = getReactApplicationContext();
58
+ context.stopService(new Intent(context, OvokBluetoothForegroundService.class));
59
+ promise.resolve(null);
60
+ } catch (Exception error) {
61
+ promise.reject("OVOK_BACKGROUND_SYNC_STOP_FAILED", error);
62
+ }
63
+ }
64
+
65
+ @ReactMethod
66
+ public void scheduleHealthConnectSync(ReadableMap options, Promise promise) {
67
+ try {
68
+ Context context = getReactApplicationContext();
69
+ BackgroundSyncNotification.save(context, options, "health");
70
+
71
+ long intervalMinutes = options.hasKey("intervalMinutes")
72
+ ? Math.max(15, options.getInt("intervalMinutes"))
73
+ : 15;
74
+
75
+ Constraints constraints = new Constraints.Builder()
76
+ .setRequiredNetworkType(NetworkType.CONNECTED)
77
+ .build();
78
+ PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(
79
+ OvokHealthConnectWorker.class,
80
+ intervalMinutes,
81
+ TimeUnit.MINUTES)
82
+ .setConstraints(constraints)
83
+ .build();
84
+
85
+ WorkManager.getInstance(context).enqueueUniquePeriodicWork(
86
+ HEALTH_WORK_NAME,
87
+ ExistingPeriodicWorkPolicy.UPDATE,
88
+ request);
89
+ promise.resolve(null);
90
+ } catch (Exception error) {
91
+ promise.reject("OVOK_HEALTH_SYNC_SCHEDULE_FAILED", error);
92
+ }
93
+ }
94
+
95
+ @ReactMethod
96
+ public void cancelHealthConnectSync(Promise promise) {
97
+ try {
98
+ Context context = getReactApplicationContext();
99
+ WorkManager.getInstance(context).cancelUniqueWork(HEALTH_WORK_NAME);
100
+ context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
101
+ .edit()
102
+ .remove("health_task_name")
103
+ .apply();
104
+ promise.resolve(null);
105
+ } catch (Exception error) {
106
+ promise.reject("OVOK_HEALTH_SYNC_CANCEL_FAILED", error);
107
+ }
108
+ }
109
+ }
@@ -0,0 +1,26 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.ReactPackage;
5
+ import com.facebook.react.bridge.NativeModule;
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.uimanager.ViewManager;
8
+ import java.util.ArrayList;
9
+ import java.util.Collections;
10
+ import java.util.List;
11
+
12
+ public final class OvokBackgroundSyncPackage implements ReactPackage {
13
+ @NonNull
14
+ @Override
15
+ public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
16
+ List<NativeModule> modules = new ArrayList<>();
17
+ modules.add(new OvokBackgroundSyncModule(reactContext));
18
+ return modules;
19
+ }
20
+
21
+ @NonNull
22
+ @Override
23
+ public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
24
+ return Collections.emptyList();
25
+ }
26
+ }
@@ -0,0 +1,28 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import android.app.Service;
4
+ import android.content.Intent;
5
+ import android.os.IBinder;
6
+ import androidx.annotation.Nullable;
7
+
8
+ public final class OvokBluetoothForegroundService extends Service {
9
+ private static final int NOTIFICATION_ID = 7311;
10
+
11
+ @Override
12
+ public int onStartCommand(Intent intent, int flags, int startId) {
13
+ startForeground(NOTIFICATION_ID, BackgroundSyncNotification.create(this, "bluetooth"));
14
+ return START_STICKY;
15
+ }
16
+
17
+ @Override
18
+ public void onDestroy() {
19
+ stopForeground(STOP_FOREGROUND_REMOVE);
20
+ super.onDestroy();
21
+ }
22
+
23
+ @Nullable
24
+ @Override
25
+ public IBinder onBind(Intent intent) {
26
+ return null;
27
+ }
28
+ }
@@ -0,0 +1,45 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import android.content.Context;
4
+ import android.content.Intent;
5
+ import android.os.Bundle;
6
+ import com.facebook.react.HeadlessJsTaskService;
7
+ import com.facebook.react.bridge.Arguments;
8
+ import com.facebook.react.bridge.WritableMap;
9
+ import com.facebook.react.jstasks.HeadlessJsTaskConfig;
10
+ import com.facebook.react.jstasks.LinearCountingRetryPolicy;
11
+
12
+ public final class OvokHealthConnectTaskService extends HeadlessJsTaskService {
13
+ private static final int NOTIFICATION_ID = 7312;
14
+
15
+ @Override
16
+ public int onStartCommand(Intent intent, int flags, int startId) {
17
+ startForeground(NOTIFICATION_ID, BackgroundSyncNotification.create(this, "health"));
18
+ return super.onStartCommand(intent, flags, startId);
19
+ }
20
+
21
+ @Override
22
+ protected HeadlessJsTaskConfig getTaskConfig(Intent intent) {
23
+ Context context = getApplicationContext();
24
+ String taskName = context.getSharedPreferences(OvokBackgroundSyncModule.PREFS, Context.MODE_PRIVATE)
25
+ .getString("health_task_name", "OvokHealthConnectBackgroundSync");
26
+ WritableMap data = Arguments.createMap();
27
+ Bundle extras = intent == null ? null : intent.getExtras();
28
+ if (extras != null && extras.containsKey("reason")) {
29
+ data.putString("reason", extras.getString("reason"));
30
+ }
31
+
32
+ return new HeadlessJsTaskConfig(
33
+ taskName,
34
+ data,
35
+ 10 * 60 * 1000L,
36
+ false,
37
+ new LinearCountingRetryPolicy(2, 30 * 1000));
38
+ }
39
+
40
+ @Override
41
+ public void onDestroy() {
42
+ stopForeground(STOP_FOREGROUND_REMOVE);
43
+ super.onDestroy();
44
+ }
45
+ }
@@ -0,0 +1,28 @@
1
+ package com.ovok.sdk.backgroundsync;
2
+
3
+ import android.content.Context;
4
+ import android.content.Intent;
5
+ import androidx.annotation.NonNull;
6
+ import androidx.core.content.ContextCompat;
7
+ import androidx.work.Worker;
8
+ import androidx.work.WorkerParameters;
9
+
10
+ public final class OvokHealthConnectWorker extends Worker {
11
+ public OvokHealthConnectWorker(@NonNull Context context, @NonNull WorkerParameters params) {
12
+ super(context, params);
13
+ }
14
+
15
+ @NonNull
16
+ @Override
17
+ public Result doWork() {
18
+ try {
19
+ Context context = getApplicationContext();
20
+ Intent intent = new Intent(context, OvokHealthConnectTaskService.class);
21
+ intent.putExtra("reason", "periodic-work");
22
+ ContextCompat.startForegroundService(context, intent);
23
+ return Result.success();
24
+ } catch (Exception error) {
25
+ return Result.retry();
26
+ }
27
+ }
28
+ }
@@ -278,4 +278,15 @@ Object.keys(_index22).forEach(function (key) {
278
278
  }
279
279
  });
280
280
  });
281
+ var _index23 = require("./modules/background-sync/index.js");
282
+ Object.keys(_index23).forEach(function (key) {
283
+ if (key === "default" || key === "__esModule") return;
284
+ if (key in exports && exports[key] === _index23[key]) return;
285
+ Object.defineProperty(exports, key, {
286
+ enumerable: true,
287
+ get: function () {
288
+ return _index23[key];
289
+ }
290
+ });
291
+ });
281
292
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index0","_index1","_index10","_index11","_index12","_index13","_index14","_index15","_index16","_index17","_index18","_btProvider","_index19","_index20","_index21","_index22"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,OAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,OAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,OAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,OAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,OAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,OAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,OAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,OAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,OAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,OAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,OAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,OAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,OAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,OAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,OAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,OAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,OAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,OAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAU,OAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,OAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,OAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,OAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAW,OAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,OAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,OAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,OAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAY,OAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAQ,OAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,OAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,OAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAa,OAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAS,OAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AACA,IAAAc,OAAA,GAAAlB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAgB,OAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAc,OAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAU,OAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AACA,IAAAe,QAAA,GAAAnB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAiB,QAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAe,QAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAW,QAAA,CAAAf,GAAA;IAAA;EAAA;AAAA;AACA,IAAAgB,QAAA,GAAApB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAkB,QAAA,EAAAjB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAgB,QAAA,CAAAhB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAY,QAAA,CAAAhB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAiB,QAAA,GAAArB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAmB,QAAA,EAAAlB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAiB,QAAA,CAAAjB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAa,QAAA,CAAAjB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAkB,QAAA,GAAAtB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAoB,QAAA,EAAAnB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAkB,QAAA,CAAAlB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAc,QAAA,CAAAlB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAmB,QAAA,GAAAvB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAqB,QAAA,EAAApB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAmB,QAAA,CAAAnB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAe,QAAA,CAAAnB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAoB,QAAA,GAAAxB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAsB,QAAA,EAAArB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAoB,QAAA,CAAApB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAgB,QAAA,CAAApB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAqB,QAAA,GAAAzB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAuB,QAAA,EAAAtB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAqB,QAAA,CAAArB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAiB,QAAA,CAAArB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAsB,QAAA,GAAA1B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAwB,QAAA,EAAAvB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAsB,QAAA,CAAAtB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAkB,QAAA,CAAAtB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAuB,QAAA,GAAA3B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAyB,QAAA,EAAAxB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAuB,QAAA,CAAAvB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAmB,QAAA,CAAAvB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAwB,WAAA,GAAA5B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAA0B,WAAA,EAAAzB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAwB,WAAA,CAAAxB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAoB,WAAA,CAAAxB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAyB,QAAA,GAAA7B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAA2B,QAAA,EAAA1B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAyB,QAAA,CAAAzB,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAqB,QAAA,CAAAzB,GAAA;IAAA;EAAA;AAAA;AACA,IAAA0B,QAAA,GAAA9B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAA4B,QAAA,EAAA3B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAA0B,QAAA,CAAA1B,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAsB,QAAA,CAAA1B,GAAA;IAAA;EAAA;AAAA;AACA,IAAA2B,QAAA,GAAA/B,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAA6B,QAAA,EAAA5B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAA2B,QAAA,CAAA3B,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAuB,QAAA,CAAA3B,GAAA;IAAA;EAAA;AAAA;AACA,IAAA4B,QAAA,GAAAhC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAA8B,QAAA,EAAA7B,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAA4B,QAAA,CAAA5B,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAwB,QAAA,CAAA5B,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_index","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index0","_index1","_index10","_index11","_index12","_index13","_index14","_index15","_index16","_index17","_index18","_btProvider","_index19","_index20","_index21","_index22","_index23"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.stopAndroidBluetoothForegroundService = exports.startAndroidBluetoothForegroundService = exports.scheduleAndroidHealthConnectSync = exports.registerAndroidHealthConnectBackgroundTask = exports.cancelAndroidHealthConnectSync = exports.ANDROID_HEALTH_CONNECT_BACKGROUND_TASK = void 0;
7
+ var _reactNative = require("react-native");
8
+ const ANDROID_HEALTH_CONNECT_BACKGROUND_TASK = exports.ANDROID_HEALTH_CONNECT_BACKGROUND_TASK = "OvokHealthConnectBackgroundSync";
9
+ const getNativeModule = () => {
10
+ const nativeModule = _reactNative.NativeModules.OvokBackgroundSync;
11
+ if (!nativeModule) {
12
+ throw new Error("Ovok Android background sync requires a native Android build. Rebuild the app after installing @ovok/native.");
13
+ }
14
+ return nativeModule;
15
+ };
16
+
17
+ /**
18
+ * Starts the Android connected-device foreground service. Mount this alongside
19
+ * the BTProvider that owns the scan; the service keeps that app process alive
20
+ * while Android has the app in the background.
21
+ */
22
+ const startAndroidBluetoothForegroundService = async (options = {}) => {
23
+ if (_reactNative.Platform.OS !== "android") {
24
+ return;
25
+ }
26
+ await getNativeModule().startBluetoothForegroundService(options);
27
+ };
28
+ exports.startAndroidBluetoothForegroundService = startAndroidBluetoothForegroundService;
29
+ const stopAndroidBluetoothForegroundService = async () => {
30
+ if (_reactNative.Platform.OS !== "android") {
31
+ return;
32
+ }
33
+ await getNativeModule().stopBluetoothForegroundService();
34
+ };
35
+
36
+ /**
37
+ * Schedules a WorkManager wake-up that starts the registered headless JS task.
38
+ * The task must create the host app's authenticated client and run the desired
39
+ * AndroidHealthSync service; the SDK cannot serialize a client or auth token.
40
+ */
41
+ exports.stopAndroidBluetoothForegroundService = stopAndroidBluetoothForegroundService;
42
+ const scheduleAndroidHealthConnectSync = async (options = {}) => {
43
+ if (_reactNative.Platform.OS !== "android") {
44
+ return;
45
+ }
46
+ await getNativeModule().scheduleHealthConnectSync(options);
47
+ };
48
+ exports.scheduleAndroidHealthConnectSync = scheduleAndroidHealthConnectSync;
49
+ const cancelAndroidHealthConnectSync = async () => {
50
+ if (_reactNative.Platform.OS !== "android") {
51
+ return;
52
+ }
53
+ await getNativeModule().cancelHealthConnectSync();
54
+ };
55
+
56
+ /**
57
+ * Registers the JS entry point WorkManager invokes after process death. Call
58
+ * this once from the app entry point, not from a screen component, so it is
59
+ * registered before Android wakes the headless runtime.
60
+ */
61
+ exports.cancelAndroidHealthConnectSync = cancelAndroidHealthConnectSync;
62
+ const registerAndroidHealthConnectBackgroundTask = (task, taskName = ANDROID_HEALTH_CONNECT_BACKGROUND_TASK) => {
63
+ if (_reactNative.Platform.OS !== "android") {
64
+ return;
65
+ }
66
+ _reactNative.AppRegistry.registerHeadlessTask(taskName, () => task);
67
+ };
68
+ exports.registerAndroidHealthConnectBackgroundTask = registerAndroidHealthConnectBackgroundTask;
69
+ //# sourceMappingURL=android-background-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","ANDROID_HEALTH_CONNECT_BACKGROUND_TASK","exports","getNativeModule","nativeModule","NativeModules","OvokBackgroundSync","Error","startAndroidBluetoothForegroundService","options","Platform","OS","startBluetoothForegroundService","stopAndroidBluetoothForegroundService","stopBluetoothForegroundService","scheduleAndroidHealthConnectSync","scheduleHealthConnectSync","cancelAndroidHealthConnectSync","cancelHealthConnectSync","registerAndroidHealthConnectBackgroundTask","task","taskName","AppRegistry","registerHeadlessTask"],"sourceRoot":"../../../../src","sources":["modules/background-sync/android-background-sync.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,sCAAsC,GAAAC,OAAA,CAAAD,sCAAA,GAC1C,iCAAiC;AAmCnC,MAAME,eAAe,GAAGA,CAAA,KAAkC;EACxD,MAAMC,YAAY,GAAGC,0BAAa,CAACC,kBAEtB;EAEb,IAAI,CAACF,YAAY,EAAE;IACjB,MAAM,IAAIG,KAAK,CACb,8GACF,CAAC;EACH;EAEA,OAAOH,YAAY;AACrB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMI,sCAAsC,GAAG,MAAAA,CAC7CC,OAAiD,GAAG,CAAC,CAAC,KACpC;EAClB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;IAC7B;EACF;EAEA,MAAMR,eAAe,CAAC,CAAC,CAACS,+BAA+B,CAACH,OAAO,CAAC;AAClE,CAAC;AAACP,OAAA,CAAAM,sCAAA,GAAAA,sCAAA;AAEF,MAAMK,qCAAqC,GAAG,MAAAA,CAAA,KAA2B;EACvE,IAAIH,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;IAC7B;EACF;EAEA,MAAMR,eAAe,CAAC,CAAC,CAACW,8BAA8B,CAAC,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAZ,OAAA,CAAAW,qCAAA,GAAAA,qCAAA;AAKA,MAAME,gCAAgC,GAAG,MAAAA,CACvCN,OAAkD,GAAG,CAAC,CAAC,KACrC;EAClB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;IAC7B;EACF;EAEA,MAAMR,eAAe,CAAC,CAAC,CAACa,yBAAyB,CAACP,OAAO,CAAC;AAC5D,CAAC;AAACP,OAAA,CAAAa,gCAAA,GAAAA,gCAAA;AAEF,MAAME,8BAA8B,GAAG,MAAAA,CAAA,KAA2B;EAChE,IAAIP,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;IAC7B;EACF;EAEA,MAAMR,eAAe,CAAC,CAAC,CAACe,uBAAuB,CAAC,CAAC;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAhB,OAAA,CAAAe,8BAAA,GAAAA,8BAAA;AAKA,MAAME,0CAA0C,GAAGA,CACjDC,IAAwC,EACxCC,QAAQ,GAAGpB,sCAAsC,KACxC;EACT,IAAIS,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;IAC7B;EACF;EAEAW,wBAAW,CAACC,oBAAoB,CAACF,QAAQ,EAAE,MAAMD,IAAI,CAAC;AACxD,CAAC;AAAClB,OAAA,CAAAiB,0CAAA,GAAAA,0CAAA","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AndroidBluetoothForegroundService = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _androidBackgroundSync = require("./android-background-sync.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ const AndroidBluetoothForegroundService = ({
13
+ enabled,
14
+ children,
15
+ options,
16
+ onError
17
+ }) => {
18
+ const notificationBody = options?.notificationBody;
19
+ const notificationTitle = options?.notificationTitle;
20
+ React.useEffect(() => {
21
+ if (_reactNative.Platform.OS !== "android" || !enabled) {
22
+ return;
23
+ }
24
+ void (0, _androidBackgroundSync.startAndroidBluetoothForegroundService)({
25
+ ...(notificationBody === undefined ? {} : {
26
+ notificationBody
27
+ }),
28
+ ...(notificationTitle === undefined ? {} : {
29
+ notificationTitle
30
+ })
31
+ }).catch(error => {
32
+ onError?.({
33
+ error: error instanceof Error ? error : String(error)
34
+ });
35
+ });
36
+ return () => {
37
+ void (0, _androidBackgroundSync.stopAndroidBluetoothForegroundService)().catch(error => {
38
+ onError?.({
39
+ error: error instanceof Error ? error : String(error)
40
+ });
41
+ });
42
+ };
43
+ }, [enabled, notificationBody, notificationTitle, onError]);
44
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
45
+ children: children
46
+ });
47
+ };
48
+ exports.AndroidBluetoothForegroundService = AndroidBluetoothForegroundService;
49
+ //# sourceMappingURL=android-bluetooth-foreground-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_androidBackgroundSync","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AndroidBluetoothForegroundService","enabled","children","options","onError","notificationBody","notificationTitle","useEffect","Platform","OS","startAndroidBluetoothForegroundService","undefined","catch","error","Error","String","stopAndroidBluetoothForegroundService","jsx","Fragment","exports"],"sourceRoot":"../../../../src","sources":["modules/background-sync/android-bluetooth-foreground-service.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAIA,IAAAE,sBAAA,GAAAF,OAAA;AAImC,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AASnC,MAAMkB,iCAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC;AACsC,CAAC,KAAK;EAC5C,MAAMC,gBAAgB,GAAGF,OAAO,EAAEE,gBAAgB;EAClD,MAAMC,iBAAiB,GAAGH,OAAO,EAAEG,iBAAiB;EAEpD/B,KAAK,CAACgC,SAAS,CAAC,MAAM;IACpB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAI,CAACR,OAAO,EAAE;MACzC;IACF;IAEA,KAAK,IAAAS,6DAAsC,EAAC;MAC1C,IAAIL,gBAAgB,KAAKM,SAAS,GAAG,CAAC,CAAC,GAAG;QAAEN;MAAiB,CAAC,CAAC;MAC/D,IAAIC,iBAAiB,KAAKK,SAAS,GAAG,CAAC,CAAC,GAAG;QAAEL;MAAkB,CAAC;IAClE,CAAC,CAAC,CAACM,KAAK,CAAEC,KAAc,IAAK;MACzBT,OAAO,GAAG;QACRS,KAAK,EAAEA,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAGE,MAAM,CAACF,KAAK;MACtD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEJ,OAAO,MAAM;MACX,KAAK,IAAAG,4DAAqC,EAAC,CAAC,CAACJ,KAAK,CAAEC,KAAc,IAAK;QACrET,OAAO,GAAG;UACRS,KAAK,EAAEA,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAGE,MAAM,CAACF,KAAK;QACtD,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,EAAE,CAACZ,OAAO,EAAEI,gBAAgB,EAAEC,iBAAiB,EAAEF,OAAO,CAAC,CAAC;EAE3D,oBAAO,IAAAxB,WAAA,CAAAqC,GAAA,EAAArC,WAAA,CAAAsC,QAAA;IAAAhB,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;AAACiB,OAAA,CAAAnB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _androidBackgroundSync = require("./android-background-sync.js");
7
+ Object.keys(_androidBackgroundSync).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _androidBackgroundSync[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _androidBackgroundSync[key];
14
+ }
15
+ });
16
+ });
17
+ var _androidBluetoothForegroundService = require("./android-bluetooth-foreground-service.js");
18
+ Object.keys(_androidBluetoothForegroundService).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _androidBluetoothForegroundService[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _androidBluetoothForegroundService[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_androidBackgroundSync","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_androidBluetoothForegroundService"],"sourceRoot":"../../../../src","sources":["modules/background-sync/index.ts"],"mappings":";;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,sBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,sBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,sBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,kCAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,kCAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,kCAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,kCAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.BTProviderChildWrapper = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
+ var _index = require("../../background-sync/index.js");
9
10
  var _useDeviceList = require("../../bt-device/components/hooks/use-device-list.js");
10
11
  var _sentryLogger = require("../../helpers/utils/sentry-logger.js");
11
12
  var _backgroundBleManager = require("../services/background-sync/background-ble-manager.js");
@@ -14,6 +15,8 @@ var _backgroundSyncCoordinator = require("../services/background-sync/background
14
15
  var _btManager = require("../services/bt-manager.js");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ /* eslint-disable max-lines */
19
+
17
20
  const BTProviderChildWrapper = exports.BTProviderChildWrapper = /*#__PURE__*/React.memo(({
18
21
  bleManager,
19
22
  acceptedDevices = [],
@@ -184,7 +187,10 @@ const BTProviderChildWrapper = exports.BTProviderChildWrapper = /*#__PURE__*/Rea
184
187
  listener.remove();
185
188
  };
186
189
  }, [onError]);
187
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
190
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.AndroidBluetoothForegroundService, {
191
+ enabled: backgroundSync?.enabled === true,
192
+ options: backgroundSync?.android?.foregroundService,
193
+ onError: onError,
188
194
  children: children
189
195
  });
190
196
  });