react-native-mytatva-rn-sdk 1.2.4 → 1.2.5

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 (751) hide show
  1. package/android/app/build.gradle +6 -0
  2. package/android/build.gradle +85 -5
  3. package/android/gradle.properties +1 -1
  4. package/android/libs/algorithm-release.aar +0 -0
  5. package/android/libs/library_zxing-release.aar +0 -0
  6. package/android/settings.gradle +1 -0
  7. package/android/src/main/AndroidManifest.xml +40 -2
  8. package/android/src/main/AndroidManifestNew.xml +127 -57
  9. package/android/src/main/java/cgmblelib/Enum/enumDevice.java +48 -0
  10. package/android/src/main/java/cgmblelib/Enum/enumError.java +102 -0
  11. package/android/src/main/java/cgmblelib/Enum/enumGlucoseStatus.java +99 -0
  12. package/android/src/main/java/cgmblelib/Enum/enumSound.java +54 -0
  13. package/android/src/main/java/cgmblelib/Enum/enumTrend.java +104 -0
  14. package/android/src/main/java/cgmblelib/Enum/enumUUID.java +134 -0
  15. package/android/src/main/java/cgmblelib/Enum/enumUnBind.java +52 -0
  16. package/android/src/main/java/cgmblelib/base/BApplication.java +86 -0
  17. package/android/src/main/java/cgmblelib/base/BSharedPreferences.java +110 -0
  18. package/android/src/main/java/cgmblelib/base/CActivity.java +128 -0
  19. package/android/src/main/java/cgmblelib/ble/BleService.java +231 -0
  20. package/android/src/main/java/cgmblelib/ble/entity/AlgorithmCallBack.java +67 -0
  21. package/android/src/main/java/cgmblelib/ble/gattcallback/BleGattCallback.java +410 -0
  22. package/android/src/main/java/cgmblelib/ble/gattcallback/EnumSynchronous.java +29 -0
  23. package/android/src/main/java/cgmblelib/ble/gattcallback/GattTool.java +359 -0
  24. package/android/src/main/java/cgmblelib/ble/gattcallback/LineUpTaskGlucoseProcess.java +168 -0
  25. package/android/src/main/java/cgmblelib/ble/gattcallback/ManageGattCallback.java +936 -0
  26. package/android/src/main/java/cgmblelib/ble/reconnectManagament/BaseReconnect.java +35 -0
  27. package/android/src/main/java/cgmblelib/ble/reconnectManagament/ReconnectManagement.java +298 -0
  28. package/android/src/main/java/cgmblelib/ble/scancallback/BleScanCallback.java +118 -0
  29. package/android/src/main/java/cgmblelib/ble/scancallback/ManageScanCallback.java +316 -0
  30. package/android/src/main/java/cgmblelib/custom/livedata/ManagementLiveData.java +216 -0
  31. package/android/src/main/java/cgmblelib/custom/livedata/connect/EnumConnect.java +30 -0
  32. package/android/src/main/java/cgmblelib/custom/livedata/connect/OperationConnectBean.java +51 -0
  33. package/android/src/main/java/cgmblelib/custom/livedata/connect/OperationConnectLiveData.java +66 -0
  34. package/android/src/main/java/cgmblelib/custom/livedata/scan/EnumScan.java +25 -0
  35. package/android/src/main/java/cgmblelib/custom/livedata/scan/OperationScanBean.java +60 -0
  36. package/android/src/main/java/cgmblelib/custom/livedata/scan/OperationScanLiveData.java +69 -0
  37. package/android/src/main/java/cgmblelib/custom/livedata/scan/PocDeviceAndRssi.java +57 -0
  38. package/android/src/main/java/cgmblelib/database/AppDatabase.java +82 -0
  39. package/android/src/main/java/cgmblelib/database/ArrayConverter.java +37 -0
  40. package/android/src/main/java/cgmblelib/database/ByteConverter.java +95 -0
  41. package/android/src/main/java/cgmblelib/database/DateConverter.java +40 -0
  42. package/android/src/main/java/cgmblelib/database/EnumConverter.java +76 -0
  43. package/android/src/main/java/cgmblelib/database/dao/DaoDevice.java +135 -0
  44. package/android/src/main/java/cgmblelib/database/dao/DaoGlucose.java +355 -0
  45. package/android/src/main/java/cgmblelib/database/entity/PocDevice.java +335 -0
  46. package/android/src/main/java/cgmblelib/database/entity/PocGlucose.java +393 -0
  47. package/android/src/main/java/cgmblelib/database/livedata/LatestDeviceLiveData.java +62 -0
  48. package/android/src/main/java/cgmblelib/database/repository/RepositoryDevice.java +206 -0
  49. package/android/src/main/java/cgmblelib/database/repository/RepositoryGlucose.java +195 -0
  50. package/android/src/main/java/cgmblelib/database/source/SourceBase.java +10 -0
  51. package/android/src/main/java/cgmblelib/database/source/SourceDevice.java +116 -0
  52. package/android/src/main/java/cgmblelib/database/source/SourceGlucose.java +232 -0
  53. package/android/src/main/java/cgmblelib/database/source/db/DBDataSource.java +29 -0
  54. package/android/src/main/java/cgmblelib/database/source/db/DeviceDBDataSource.java +194 -0
  55. package/android/src/main/java/cgmblelib/database/source/db/GlucoseDBDataSource.java +323 -0
  56. package/android/src/main/java/cgmblelib/qr/QRInformation.java +96 -0
  57. package/android/src/main/java/cgmblelib/receiver/BleServiceReceiver.java +129 -0
  58. package/android/src/main/java/cgmblelib/utils/AppExecutors.java +76 -0
  59. package/android/src/main/java/cgmblelib/utils/AxisYForGlucoseLevel.java +67 -0
  60. package/android/src/main/java/cgmblelib/utils/ConstantsLibrary.java +88 -0
  61. package/android/src/main/java/cgmblelib/utils/CrashHandler.java +39 -0
  62. package/android/src/main/java/cgmblelib/utils/DiskIOThreadExecutor.java +23 -0
  63. package/android/src/main/java/cgmblelib/utils/MyLog.java +606 -0
  64. package/android/src/main/java/cgmblelib/utils/NotificationTool.java +115 -0
  65. package/android/src/main/java/cgmblelib/utils/PermissionCheckTool.java +47 -0
  66. package/android/src/main/java/cgmblelib/utils/SharedPreferencesLibraryUtil.java +69 -0
  67. package/android/src/main/java/cgmblelib/utils/SyncMeta.kt +8 -0
  68. package/android/src/main/java/cgmblelib/utils/Tool.java +400 -0
  69. package/android/src/main/java/com/mytatvarnsdk/CgmTrackyLibModule.kt +885 -0
  70. package/android/src/main/java/com/mytatvarnsdk/CgmTrackyLibPackage.kt +16 -0
  71. package/android/src/main/java/com/mytatvarnsdk/MainActivity.kt +404 -0
  72. package/android/src/main/java/com/mytatvarnsdk/MainApplication.kt +52 -0
  73. package/android/src/main/java/com/mytatvarnsdk/MyTatvaRnSdkPackage.kt +2 -2
  74. package/android/src/main/java/com/mytatvarnsdk/MyTatvaRnSdkViewManager.kt +1 -1
  75. package/android/src/main/java/com/mytatvarnsdk/activity/BtManageActivity.java +427 -0
  76. package/android/src/main/java/com/mytatvarnsdk/activity/ConnectSensorActivity.kt +334 -0
  77. package/android/src/main/java/com/mytatvarnsdk/activity/ExitJourneyBottomSheet.kt +78 -0
  78. package/android/src/main/java/com/mytatvarnsdk/activity/HelpActivity.kt +70 -0
  79. package/android/src/main/java/com/mytatvarnsdk/activity/PermissionActivity.kt +367 -0
  80. package/android/src/main/java/com/mytatvarnsdk/activity/PlaceSensorActivity.kt +103 -0
  81. package/android/src/main/java/com/mytatvarnsdk/activity/PlaceTransmitterActivity.kt +145 -0
  82. package/android/src/main/java/com/mytatvarnsdk/activity/QRActivity.kt +119 -0
  83. package/android/src/main/java/com/mytatvarnsdk/activity/SearchTransmitterActivity.kt +554 -0
  84. package/android/src/main/java/com/mytatvarnsdk/activity/SensorConnectSuccessActivity.kt +156 -0
  85. package/android/src/main/java/com/mytatvarnsdk/activity/StartCGMActivity.kt +92 -0
  86. package/android/src/main/java/com/mytatvarnsdk/adapter/AdapterFragment.java +32 -0
  87. package/android/src/main/java/com/mytatvarnsdk/base/BaseBleActivity.java +223 -0
  88. package/android/src/main/java/com/mytatvarnsdk/base/BaseLiveDataEventsDistributeActivity.java +301 -0
  89. package/android/src/main/java/com/mytatvarnsdk/base/BasePermissionActivity.java +383 -0
  90. package/android/src/main/java/com/mytatvarnsdk/model/AllCGMLogRequest.kt +50 -0
  91. package/android/src/main/java/com/mytatvarnsdk/model/BaseViewModel.java +109 -0
  92. package/android/src/main/java/com/mytatvarnsdk/model/GlucoseLog.kt +41 -0
  93. package/android/src/main/java/com/mytatvarnsdk/model/GlucoseLogRequest.kt +3 -0
  94. package/android/src/main/java/com/mytatvarnsdk/model/MainActivityModel.java +18 -0
  95. package/android/src/main/java/com/mytatvarnsdk/myView/CircleImageView.java +110 -0
  96. package/android/src/main/java/com/mytatvarnsdk/myView/DragActionButton.java +96 -0
  97. package/android/src/main/java/com/mytatvarnsdk/myView/HistoryItem.java +45 -0
  98. package/android/src/main/java/com/mytatvarnsdk/myView/Media/CustomMediaPlayer.java +155 -0
  99. package/android/src/main/java/com/mytatvarnsdk/myView/PagerAdapterWrapper.java +117 -0
  100. package/android/src/main/java/com/mytatvarnsdk/myView/RtlViewPager.java +361 -0
  101. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/AlarmDialogManagement.java +115 -0
  102. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/DialogType.java +88 -0
  103. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/WarnDialog.java +328 -0
  104. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/WarnDialogUtils.java +202 -0
  105. package/android/src/main/java/com/mytatvarnsdk/myView/horizonViewPager/HorizontalViewPage.java +20 -0
  106. package/android/src/main/java/com/mytatvarnsdk/myView/horizonViewPager/ScaleInTransformer.java +33 -0
  107. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/BPopupWindow.java +166 -0
  108. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/ErrorInfoPop.java +28 -0
  109. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PermissionRequestPopWindow.java +64 -0
  110. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopShowWay.java +16 -0
  111. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopupType.java +70 -0
  112. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopupWindowManagement.java +191 -0
  113. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/TransmitterConnectPopWindow.java +88 -0
  114. package/android/src/main/java/com/mytatvarnsdk/myView/progress/BaseCustomProgress.java +55 -0
  115. package/android/src/main/java/com/mytatvarnsdk/myView/progress/CircularProgressView.java +238 -0
  116. package/android/src/main/java/com/mytatvarnsdk/myView/progress/ProgressManagement.java +100 -0
  117. package/android/src/main/java/com/mytatvarnsdk/myView/progress/ProgressType.java +41 -0
  118. package/android/src/main/java/com/mytatvarnsdk/myView/progress/WaitProgress.java +91 -0
  119. package/android/src/main/java/com/mytatvarnsdk/myView/widget/SensorGlucoseShow.java +219 -0
  120. package/android/src/main/java/com/mytatvarnsdk/myView/widget/TransmitterState.java +536 -0
  121. package/android/src/main/java/com/mytatvarnsdk/network/ApiServiceInterface.kt +22 -0
  122. package/android/src/main/java/com/mytatvarnsdk/network/AuthenticateSDKService.kt +168 -0
  123. package/android/src/main/java/com/mytatvarnsdk/receiver/BootCompleteReceiver.java +31 -0
  124. package/android/src/main/java/com/mytatvarnsdk/utils/CGMTool.java +59 -0
  125. package/android/src/main/java/com/mytatvarnsdk/utils/DeviceStatus.kt +35 -0
  126. package/android/src/main/java/com/mytatvarnsdk/utils/EncryptionUtil.kt +98 -0
  127. package/android/src/main/java/com/mytatvarnsdk/utils/RetrofitInstance.kt +20 -0
  128. package/android/src/main/java/com/mytatvarnsdk/utils/TatvaEncryptionConfig.kt +20 -0
  129. package/android/src/main/java/com/mytatvarnsdk/utils/Tatva_Environment.kt +6 -0
  130. package/android/src/main/res/anim/pop_down_out.xml +12 -0
  131. package/android/src/main/res/anim/pop_left_right.xml +8 -0
  132. package/android/src/main/res/anim/pop_right_left.xml +7 -0
  133. package/android/src/main/res/anim/pop_up_in.xml +11 -0
  134. package/android/src/main/res/anim/reverse_down_anim.xml +12 -0
  135. package/android/src/main/res/anim/reverse_up_anim.xml +11 -0
  136. package/android/src/main/res/color/radio_text_selector.xml +5 -0
  137. package/android/src/main/res/drawable/bg_blue.xml +6 -0
  138. package/android/src/main/res/drawable/bg_dark_black.xml +6 -0
  139. package/android/src/main/res/drawable/bg_darkgray_corner_16.xml +5 -0
  140. package/android/src/main/res/drawable/bg_design.png +0 -0
  141. package/android/src/main/res/drawable/bg_gray_corner10.xml +5 -0
  142. package/android/src/main/res/drawable/bg_green.xml +6 -0
  143. package/android/src/main/res/drawable/bg_green_border_20.xml +6 -0
  144. package/android/src/main/res/drawable/bg_light_blue.xml +6 -0
  145. package/android/src/main/res/drawable/bg_light_green_border_20.xml +7 -0
  146. package/android/src/main/res/drawable/bg_maincolor_corner5.xml +6 -0
  147. package/android/src/main/res/drawable/bg_offwhite.xml +6 -0
  148. package/android/src/main/res/drawable/bg_progressbar.xml +14 -0
  149. package/android/src/main/res/drawable/bg_red_border_20.xml +6 -0
  150. package/android/src/main/res/drawable/bg_rounded_gradient.xml +12 -0
  151. package/android/src/main/res/drawable/bg_transblack_corner_8.xml +5 -0
  152. package/android/src/main/res/drawable/bg_white_border_20.xml +10 -0
  153. package/android/src/main/res/drawable/bg_white_corner_10.xml +7 -0
  154. package/android/src/main/res/drawable/bg_white_corner_8.xml +7 -0
  155. package/android/src/main/res/drawable/bg_white_green_border_20.xml +7 -0
  156. package/android/src/main/res/drawable/bg_yellow_bottom.xml +10 -0
  157. package/android/src/main/res/drawable/bg_yellow_top.xml +10 -0
  158. package/android/src/main/res/drawable/bottom_sheet_background.xml +8 -0
  159. package/android/src/main/res/drawable/checked_arrow_up_down.xml +5 -0
  160. package/android/src/main/res/drawable/circle_black.xml +7 -0
  161. package/android/src/main/res/drawable/circle_shape.xml +35 -0
  162. package/android/src/main/res/drawable/custom_radio_icon_selector.xml +5 -0
  163. package/android/src/main/res/drawable/custom_thumb.xml +6 -0
  164. package/android/src/main/res/drawable/dialog_warn_button_cancel.xml +11 -0
  165. package/android/src/main/res/drawable/dialog_warn_button_ok.xml +11 -0
  166. package/android/src/main/res/drawable/gray_border_15.xml +9 -0
  167. package/android/src/main/res/drawable/guide_circle.xml +5 -0
  168. package/android/src/main/res/drawable/hr_button_select.xml +5 -0
  169. package/android/src/main/res/drawable/hr_normal.xml +13 -0
  170. package/android/src/main/res/drawable/hr_select.xml +10 -0
  171. package/android/src/main/res/drawable/ic_charging_case.png +0 -0
  172. package/android/src/main/res/drawable/ic_close.png +0 -0
  173. package/android/src/main/res/drawable/ic_close_gray.xml +9 -0
  174. package/android/src/main/res/drawable/ic_play.xml +9 -0
  175. package/android/src/main/res/drawable/ic_play_gif.gif +0 -0
  176. package/android/src/main/res/drawable/ic_rectangle_blue.xml +9 -0
  177. package/android/src/main/res/drawable/ic_right_arrow.xml +9 -0
  178. package/android/src/main/res/drawable/ic_sync.xml +9 -0
  179. package/android/src/main/res/drawable/ic_transmitter.png +0 -0
  180. package/android/src/main/res/drawable/ic_whatsapp.xml +31 -0
  181. package/android/src/main/res/drawable/ic_whatsapp_green.xml +28 -0
  182. package/android/src/main/res/drawable/icon_glucose_hyperglycemia.xml +5 -0
  183. package/android/src/main/res/drawable/img_box_cross.png +0 -0
  184. package/android/src/main/res/drawable/img_box_qr.png +0 -0
  185. package/android/src/main/res/drawable/img_case.png +0 -0
  186. package/android/src/main/res/drawable/img_cgm_device.png +0 -0
  187. package/android/src/main/res/drawable/img_cgm_shadow.png +0 -0
  188. package/android/src/main/res/drawable/img_charging_indicator.png +0 -0
  189. package/android/src/main/res/drawable/img_charging_pod_full.png +0 -0
  190. package/android/src/main/res/drawable/img_female.png +0 -0
  191. package/android/src/main/res/drawable/img_male.png +0 -0
  192. package/android/src/main/res/drawable/img_trans_shell.png +0 -0
  193. package/android/src/main/res/drawable/popup_button_confirm_enable.xml +11 -0
  194. package/android/src/main/res/drawable/popup_window_bg.xml +9 -0
  195. package/android/src/main/res/drawable/radio_button_background.xml +17 -0
  196. package/android/src/main/res/drawable/radio_checked.xml +9 -0
  197. package/android/src/main/res/drawable/radio_unchecked.xml +13 -0
  198. package/android/src/main/res/drawable/searching.gif +0 -0
  199. package/android/src/main/res/drawable/sensor_bg.xml +10 -0
  200. package/android/src/main/res/drawable/success_anim.gif +0 -0
  201. package/android/src/main/res/drawable/thumb_selector.xml +11 -0
  202. package/android/src/main/res/drawable/toggle_off.xml +16 -0
  203. package/android/src/main/res/drawable/toggle_on.xml +16 -0
  204. package/android/src/main/res/drawable/track_selector.xml +17 -0
  205. package/android/src/main/res/drawable/warning.gif +0 -0
  206. package/android/src/main/res/drawable-hdpi/alarm_sound_shake_white.png +0 -0
  207. package/android/src/main/res/drawable-hdpi/arrow_down.png +0 -0
  208. package/android/src/main/res/drawable-hdpi/arrow_up.png +0 -0
  209. package/android/src/main/res/drawable-hdpi/calibration_notice.png +0 -0
  210. package/android/src/main/res/drawable-hdpi/drop_rapidly.png +0 -0
  211. package/android/src/main/res/drawable-hdpi/drop_rapidly_low.png +0 -0
  212. package/android/src/main/res/drawable-hdpi/drop_steadily.png +0 -0
  213. package/android/src/main/res/drawable-hdpi/home_menu.png +0 -0
  214. package/android/src/main/res/drawable-hdpi/implentation_step3.png +0 -0
  215. package/android/src/main/res/drawable-hdpi/implentation_step4.png +0 -0
  216. package/android/src/main/res/drawable-hdpi/poput_request_permission_icon.png +0 -0
  217. package/android/src/main/res/drawable-hdpi/product_box.png +0 -0
  218. package/android/src/main/res/drawable-hdpi/progress_wait_other_icon.png +0 -0
  219. package/android/src/main/res/drawable-hdpi/rise_rapidly.png +0 -0
  220. package/android/src/main/res/drawable-hdpi/rise_steadily.png +0 -0
  221. package/android/src/main/res/drawable-hdpi/sound_close.png +0 -0
  222. package/android/src/main/res/drawable-hdpi/sound_open.png +0 -0
  223. package/android/src/main/res/drawable-hdpi/steady.png +0 -0
  224. package/android/src/main/res/drawable-hdpi/toast_success.png +0 -0
  225. package/android/src/main/res/drawable-hdpi/video_wait.png +0 -0
  226. package/android/src/main/res/drawable-xhdpi/alarm_sound_shake_white.png +0 -0
  227. package/android/src/main/res/drawable-xhdpi/arrow_down.png +0 -0
  228. package/android/src/main/res/drawable-xhdpi/arrow_up.png +0 -0
  229. package/android/src/main/res/drawable-xhdpi/arrows_down_white.png +0 -0
  230. package/android/src/main/res/drawable-xhdpi/bt_qr_img.png +0 -0
  231. package/android/src/main/res/drawable-xhdpi/calibration_notice.png +0 -0
  232. package/android/src/main/res/drawable-xhdpi/cgm_img.png +0 -0
  233. package/android/src/main/res/drawable-xhdpi/chart_point_hypoglycemia.png +0 -0
  234. package/android/src/main/res/drawable-xhdpi/chart_point_normal.png +0 -0
  235. package/android/src/main/res/drawable-xhdpi/count_down_icon.png +0 -0
  236. package/android/src/main/res/drawable-xhdpi/device_unbind.png +0 -0
  237. package/android/src/main/res/drawable-xhdpi/drop_rapidly.png +0 -0
  238. package/android/src/main/res/drawable-xhdpi/drop_rapidly_low.png +0 -0
  239. package/android/src/main/res/drawable-xhdpi/drop_steadily.png +0 -0
  240. package/android/src/main/res/drawable-xhdpi/friend_share.png +0 -0
  241. package/android/src/main/res/drawable-xhdpi/guide_step1.png +0 -0
  242. package/android/src/main/res/drawable-xhdpi/guide_step10.png +0 -0
  243. package/android/src/main/res/drawable-xhdpi/guide_step2_arm.png +0 -0
  244. package/android/src/main/res/drawable-xhdpi/guide_step2_fu.png +0 -0
  245. package/android/src/main/res/drawable-xhdpi/guide_step3.png +0 -0
  246. package/android/src/main/res/drawable-xhdpi/guide_step4.png +0 -0
  247. package/android/src/main/res/drawable-xhdpi/guide_step5.png +0 -0
  248. package/android/src/main/res/drawable-xhdpi/guide_step6.png +0 -0
  249. package/android/src/main/res/drawable-xhdpi/guide_step7.png +0 -0
  250. package/android/src/main/res/drawable-xhdpi/guide_step8.png +0 -0
  251. package/android/src/main/res/drawable-xhdpi/guide_step9.png +0 -0
  252. package/android/src/main/res/drawable-xhdpi/home_menu.png +0 -0
  253. package/android/src/main/res/drawable-xhdpi/home_question.png +0 -0
  254. package/android/src/main/res/drawable-xhdpi/icon_back.png +0 -0
  255. package/android/src/main/res/drawable-xhdpi/icon_ct3.png +0 -0
  256. package/android/src/main/res/drawable-xhdpi/icon_glucose_hyperglycemia.png +0 -0
  257. package/android/src/main/res/drawable-xhdpi/implement_close.png +0 -0
  258. package/android/src/main/res/drawable-xhdpi/implentation_step2_1.png +0 -0
  259. package/android/src/main/res/drawable-xhdpi/implentation_step2_2.png +0 -0
  260. package/android/src/main/res/drawable-xhdpi/implentation_step3.png +0 -0
  261. package/android/src/main/res/drawable-xhdpi/implentation_step4.png +0 -0
  262. package/android/src/main/res/drawable-xhdpi/loading_icon.png +0 -0
  263. package/android/src/main/res/drawable-xhdpi/login_loading.png +0 -0
  264. package/android/src/main/res/drawable-xhdpi/main_bg.png +0 -0
  265. package/android/src/main/res/drawable-xhdpi/mes_pop_box_icon.png +0 -0
  266. package/android/src/main/res/drawable-xhdpi/poput_request_permission_icon.png +0 -0
  267. package/android/src/main/res/drawable-xhdpi/prepare_box_video.png +0 -0
  268. package/android/src/main/res/drawable-xhdpi/prepare_products.png +0 -0
  269. package/android/src/main/res/drawable-xhdpi/product_box.png +0 -0
  270. package/android/src/main/res/drawable-xhdpi/progress_wait_center.png +0 -0
  271. package/android/src/main/res/drawable-xhdpi/progress_wait_other_icon.png +0 -0
  272. package/android/src/main/res/drawable-xhdpi/progress_wait_search.png +0 -0
  273. package/android/src/main/res/drawable-xhdpi/rise_rapidly.png +0 -0
  274. package/android/src/main/res/drawable-xhdpi/rise_steadily.png +0 -0
  275. package/android/src/main/res/drawable-xhdpi/sound_close.png +0 -0
  276. package/android/src/main/res/drawable-xhdpi/sound_implement.png +0 -0
  277. package/android/src/main/res/drawable-xhdpi/sound_open.png +0 -0
  278. package/android/src/main/res/drawable-xhdpi/star.png +0 -0
  279. package/android/src/main/res/drawable-xhdpi/steady.png +0 -0
  280. package/android/src/main/res/drawable-xhdpi/title_black.png +0 -0
  281. package/android/src/main/res/drawable-xhdpi/toast_success.png +0 -0
  282. package/android/src/main/res/drawable-xhdpi/trend_drop_rapidly.png +0 -0
  283. package/android/src/main/res/drawable-xhdpi/trend_drop_rapidly_low.png +0 -0
  284. package/android/src/main/res/drawable-xhdpi/trend_drop_steadily.png +0 -0
  285. package/android/src/main/res/drawable-xhdpi/trend_none.png +0 -0
  286. package/android/src/main/res/drawable-xhdpi/trend_rise_rapidly.png +0 -0
  287. package/android/src/main/res/drawable-xhdpi/trend_rise_steadily.png +0 -0
  288. package/android/src/main/res/drawable-xhdpi/trend_steady.png +0 -0
  289. package/android/src/main/res/drawable-xhdpi/triangle_red.png +0 -0
  290. package/android/src/main/res/drawable-xhdpi/triangle_yellow.png +0 -0
  291. package/android/src/main/res/drawable-xhdpi/video_wait.png +0 -0
  292. package/android/src/main/res/drawable-xhdpi/widget_drop_rapid.png +0 -0
  293. package/android/src/main/res/drawable-xhdpi/widget_drop_rapid_low.png +0 -0
  294. package/android/src/main/res/drawable-xhdpi/widget_drop_slow.png +0 -0
  295. package/android/src/main/res/drawable-xhdpi/widget_rise_rapid.png +0 -0
  296. package/android/src/main/res/drawable-xhdpi/widget_rise_slow.png +0 -0
  297. package/android/src/main/res/drawable-xhdpi/widget_steady.png +0 -0
  298. package/android/src/main/res/drawable-xhdpi/zoom_in.png +0 -0
  299. package/android/src/main/res/drawable-xhdpi/zoom_out_white.png +0 -0
  300. package/android/src/main/res/drawable-xxhdpi/alarm_sound_shake_white.png +0 -0
  301. package/android/src/main/res/drawable-xxhdpi/calibration_notice.png +0 -0
  302. package/android/src/main/res/drawable-xxhdpi/drop_rapidly.png +0 -0
  303. package/android/src/main/res/drawable-xxhdpi/drop_rapidly_low.png +0 -0
  304. package/android/src/main/res/drawable-xxhdpi/drop_steadily.png +0 -0
  305. package/android/src/main/res/drawable-xxhdpi/home_menu.png +0 -0
  306. package/android/src/main/res/drawable-xxhdpi/mes_pop_box_icon.png +0 -0
  307. package/android/src/main/res/drawable-xxhdpi/poput_request_permission_icon.png +0 -0
  308. package/android/src/main/res/drawable-xxhdpi/product_box.png +0 -0
  309. package/android/src/main/res/drawable-xxhdpi/progress_wait_center.png +0 -0
  310. package/android/src/main/res/drawable-xxhdpi/progress_wait_other_icon.png +0 -0
  311. package/android/src/main/res/drawable-xxhdpi/rise_rapidly.png +0 -0
  312. package/android/src/main/res/drawable-xxhdpi/rise_steadily.png +0 -0
  313. package/android/src/main/res/drawable-xxhdpi/sound_close.png +0 -0
  314. package/android/src/main/res/drawable-xxhdpi/sound_open.png +0 -0
  315. package/android/src/main/res/drawable-xxhdpi/steady.png +0 -0
  316. package/android/src/main/res/drawable-xxhdpi/title_black.png +0 -0
  317. package/android/src/main/res/drawable-xxhdpi/toast_success.png +0 -0
  318. package/android/src/main/res/drawable-xxhdpi/video_wait.png +0 -0
  319. package/android/src/main/res/drawable-xxxhdpi/mes_pop_box_icon.png +0 -0
  320. package/android/src/main/res/drawable-xxxhdpi/poput_request_permission_icon.png +0 -0
  321. package/android/src/main/res/drawable-xxxhdpi/progress_wait_other_icon.png +0 -0
  322. package/android/src/main/res/font/playfairdisplay_bold.ttf +0 -0
  323. package/android/src/main/res/font/playfairdisplay_medium.ttf +0 -0
  324. package/android/src/main/res/font/playfairdisplay_regular.ttf +0 -0
  325. package/android/src/main/res/font/roboto_bold.ttf +0 -0
  326. package/android/src/main/res/font/roboto_medium.ttf +0 -0
  327. package/android/src/main/res/font/roboto_regular.ttf +0 -0
  328. package/android/src/main/res/font/roboto_semibold.ttf +0 -0
  329. package/android/src/main/res/layout/activity_bt_manage.xml +107 -0
  330. package/android/src/main/res/layout/activity_cgmdevice.xml +99 -0
  331. package/android/src/main/res/layout/activity_connect_sensor.xml +415 -0
  332. package/android/src/main/res/layout/activity_count_down.xml +229 -0
  333. package/android/src/main/res/layout/activity_guide.xml +118 -0
  334. package/android/src/main/res/layout/activity_help.xml +188 -0
  335. package/android/src/main/res/layout/activity_main.xml +48 -0
  336. package/android/src/main/res/layout/activity_permission.xml +205 -0
  337. package/android/src/main/res/layout/activity_place_sensor.xml +156 -0
  338. package/android/src/main/res/layout/activity_place_transmitter.xml +124 -0
  339. package/android/src/main/res/layout/activity_prepare_step1.xml +191 -0
  340. package/android/src/main/res/layout/activity_qr.xml +16 -0
  341. package/android/src/main/res/layout/activity_qractivity.xml +10 -0
  342. package/android/src/main/res/layout/activity_search_transmitter.xml +667 -0
  343. package/android/src/main/res/layout/activity_sensor_connect_success.xml +101 -0
  344. package/android/src/main/res/layout/activity_start_cgmactivity.xml +175 -0
  345. package/android/src/main/res/layout/activity_transmitter_list.xml +38 -0
  346. package/android/src/main/res/layout/activity_transmitter_state.xml +74 -0
  347. package/android/src/main/res/layout/activity_trend_detail.xml +287 -0
  348. package/android/src/main/res/layout/activity_welcome.xml +11 -0
  349. package/android/src/main/res/layout/dialog_progress_wait.xml +49 -0
  350. package/android/src/main/res/layout/dialog_warn.xml +140 -0
  351. package/android/src/main/res/layout/exit_dialog_bottomsheet.xml +90 -0
  352. package/android/src/main/res/layout/fragment_count_down.xml +65 -0
  353. package/android/src/main/res/layout/fragment_prepare.xml +15 -0
  354. package/android/src/main/res/layout/fragment_sensor.xml +174 -0
  355. package/android/src/main/res/layout/fragment_sensor_glucose_show.xml +62 -0
  356. package/android/src/main/res/layout/history_item.xml +92 -0
  357. package/android/src/main/res/layout/layout_button.xml +56 -0
  358. package/android/src/main/res/layout/layout_green_border_button.xml +44 -0
  359. package/android/src/main/res/layout/layout_red_button.xml +43 -0
  360. package/android/src/main/res/layout/layout_toolbar.xml +61 -0
  361. package/android/src/main/res/layout/pop_error_info.xml +13 -0
  362. package/android/src/main/res/layout/popup_window_request_permisson.xml +54 -0
  363. package/android/src/main/res/layout/popup_window_transmitter_connect.xml +103 -0
  364. package/android/src/main/res/layout/top_menu_common.xml +95 -0
  365. package/android/src/main/res/layout/view_loading_button.xml +29 -0
  366. package/android/src/main/res/raw/high_alarm.mp3 +0 -0
  367. package/android/src/main/res/raw/medium_alarm.mp3 +0 -0
  368. package/android/src/main/res/values/colors.xml +44 -0
  369. package/android/src/main/res/values/dimens.xml +21 -0
  370. package/android/src/main/res/values/strings.xml +202 -0
  371. package/android/src/main/res/values/styles.xml +98 -0
  372. package/ios/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  373. package/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +35 -0
  374. package/ios/Assets.xcassets/CGM_with_Toggle.imageset/CGM_with_Toggle.png +0 -0
  375. package/ios/Assets.xcassets/CGM_with_Toggle.imageset/Contents.json +21 -0
  376. package/ios/Assets.xcassets/Contents.json +6 -0
  377. package/ios/Assets.xcassets/Take_out_transmitter.imageset/Contents.json +21 -0
  378. package/ios/Assets.xcassets/Take_out_transmitter.imageset/Take our transmitter.png +0 -0
  379. package/ios/Assets.xcassets/charging.imageset/Contents.json +21 -0
  380. package/ios/Assets.xcassets/charging.imageset/charging.png +0 -0
  381. package/ios/Assets.xcassets/charging_pod.imageset/Contents.json +21 -0
  382. package/ios/Assets.xcassets/charging_pod.imageset/charging_pod.png +0 -0
  383. package/ios/Assets.xcassets/close_pod.imageset/Contents.json +23 -0
  384. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563.png +0 -0
  385. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563@2x.png +0 -0
  386. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563@3x.png +0 -0
  387. package/ios/Assets.xcassets/do_not_place_inside.imageset/Contents.json +21 -0
  388. package/ios/Assets.xcassets/do_not_place_inside.imageset/do_not_place_inside.png +0 -0
  389. package/ios/Assets.xcassets/flip_the_reference.imageset/Contents.json +21 -0
  390. package/ios/Assets.xcassets/flip_the_reference.imageset/flip_the_reference.png +0 -0
  391. package/ios/Assets.xcassets/fully_charged.imageset/Contents.json +21 -0
  392. package/ios/Assets.xcassets/fully_charged.imageset/fully_charged.png +0 -0
  393. package/ios/Assets.xcassets/green.colorset/Contents.json +38 -0
  394. package/ios/Assets.xcassets/ic_arrow.imageset/7.png +0 -0
  395. package/ios/Assets.xcassets/ic_arrow.imageset/7@2x.png +0 -0
  396. package/ios/Assets.xcassets/ic_arrow.imageset/7@3x.png +0 -0
  397. package/ios/Assets.xcassets/ic_arrow.imageset/Contents.json +23 -0
  398. package/ios/Assets.xcassets/ic_back.imageset/7.png +0 -0
  399. package/ios/Assets.xcassets/ic_back.imageset/7@2x.png +0 -0
  400. package/ios/Assets.xcassets/ic_back.imageset/7@3x.png +0 -0
  401. package/ios/Assets.xcassets/ic_back.imageset/Contents.json +23 -0
  402. package/ios/Assets.xcassets/ic_back_arrow.imageset/Contents.json +23 -0
  403. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced).png +0 -0
  404. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced)@2x.png +0 -0
  405. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced)@3x.png +0 -0
  406. package/ios/Assets.xcassets/ic_circle.imageset/Contents.json +23 -0
  407. package/ios/Assets.xcassets/ic_circle.imageset/circle.png +0 -0
  408. package/ios/Assets.xcassets/ic_circle.imageset/circle@2x.png +0 -0
  409. package/ios/Assets.xcassets/ic_circle.imageset/circle@3x.png +0 -0
  410. package/ios/Assets.xcassets/ic_close.imageset/Contents.json +23 -0
  411. package/ios/Assets.xcassets/ic_close.imageset/close button.png +0 -0
  412. package/ios/Assets.xcassets/ic_close.imageset/close button@2x.png +0 -0
  413. package/ios/Assets.xcassets/ic_close.imageset/close button@3x.png +0 -0
  414. package/ios/Assets.xcassets/ic_close_popup.imageset/Contents.json +23 -0
  415. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame.png +0 -0
  416. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame@2x.png +0 -0
  417. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame@3x.png +0 -0
  418. package/ios/Assets.xcassets/ic_green_arrow.imageset/Contents.json +23 -0
  419. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced).png +0 -0
  420. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced)@2x.png +0 -0
  421. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced)@3x.png +0 -0
  422. package/ios/Assets.xcassets/ic_play.imageset/Contents.json +26 -0
  423. package/ios/Assets.xcassets/ic_play.imageset/Play.png +0 -0
  424. package/ios/Assets.xcassets/ic_play.imageset/Play@2x.png +0 -0
  425. package/ios/Assets.xcassets/ic_play.imageset/Play@3x.png +0 -0
  426. package/ios/Assets.xcassets/ic_selected.imageset/Contents.json +23 -0
  427. package/ios/Assets.xcassets/ic_selected.imageset/Frame.png +0 -0
  428. package/ios/Assets.xcassets/ic_selected.imageset/Frame@2x.png +0 -0
  429. package/ios/Assets.xcassets/ic_selected.imageset/Frame@3x.png +0 -0
  430. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/Contents.json +23 -0
  431. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp.png +0 -0
  432. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp@2x.png +0 -0
  433. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp@3x.png +0 -0
  434. package/ios/Assets.xcassets/ic_whatsapp.imageset/Contents.json +23 -0
  435. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343.png +0 -0
  436. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343@2x.png +0 -0
  437. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343@3x.png +0 -0
  438. package/ios/Assets.xcassets/indigo.colorset/Contents.json +38 -0
  439. package/ios/Assets.xcassets/mandala.imageset/Contents.json +21 -0
  440. package/ios/Assets.xcassets/mandala.imageset/ending.png +0 -0
  441. package/ios/Assets.xcassets/open_pod.imageset/Contents.json +23 -0
  442. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1.png +0 -0
  443. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1@2x.png +0 -0
  444. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1@3x.png +0 -0
  445. package/ios/Assets.xcassets/step4.imageset/Contents.json +21 -0
  446. package/ios/Assets.xcassets/step4.imageset/step4.png +0 -0
  447. package/ios/Assets.xcassets/step5.imageset/Contents.json +21 -0
  448. package/ios/Assets.xcassets/step5.imageset/step5.png +0 -0
  449. package/ios/Assets.xcassets/transmitter_image.imageset/Contents.json +21 -0
  450. package/ios/Assets.xcassets/transmitter_image.imageset/transmitter_image.png +0 -0
  451. package/ios/Assets.xcassets/transmitter_shadow.imageset/CGM Shadow.png +0 -0
  452. package/ios/Assets.xcassets/transmitter_shadow.imageset/Contents.json +21 -0
  453. package/ios/Assets.xcassets/unselectedGray.colorset/Contents.json +38 -0
  454. package/ios/Custom/CustomColor.swift +22 -0
  455. package/ios/Custom/CustomFont.swift +49 -0
  456. package/ios/Custom/CustomOverlayButton.swift +237 -0
  457. package/ios/Custom/CustomStepProgressBar.swift +167 -0
  458. package/ios/Custom/CustomTopUIView.swift +173 -0
  459. package/ios/Custom/CustomView.swift +60 -0
  460. package/ios/Database/Advertise+CoreDataClass.h +23 -0
  461. package/ios/Database/Advertise+CoreDataClass.m +14 -0
  462. package/ios/Database/Advertise+CoreDataProperties.h +28 -0
  463. package/ios/Database/Advertise+CoreDataProperties.m +25 -0
  464. package/ios/Database/Device+CoreDataClass.h +23 -0
  465. package/ios/Database/Device+CoreDataClass.m +14 -0
  466. package/ios/Database/Device+CoreDataProperties.h +47 -0
  467. package/ios/Database/Device+CoreDataProperties.m +30 -0
  468. package/ios/Database/GlucoseData+CoreDataClass.h +23 -0
  469. package/ios/Database/GlucoseData+CoreDataClass.m +14 -0
  470. package/ios/Database/GlucoseData+CoreDataProperties.h +37 -0
  471. package/ios/Database/GlucoseData+CoreDataProperties.m +34 -0
  472. package/ios/Database/KLTAppDelegate.h +24 -0
  473. package/ios/Database/KLTAppDelegate.m +109 -0
  474. package/ios/Database/KLTBluetoothManager.h +83 -0
  475. package/ios/Database/KLTBluetoothManager.m +723 -0
  476. package/ios/Database/KLTCommonDefine.h +52 -0
  477. package/ios/Database/KLTDatabaseHandler.h +59 -0
  478. package/ios/Database/KLTDatabaseHandler.m +437 -0
  479. package/ios/Database/KLTFormat.h +32 -0
  480. package/ios/Database/KLTFormat.m +270 -0
  481. package/ios/Database/KLTLaunchConfiguration.h +37 -0
  482. package/ios/Database/KLTLaunchConfiguration.m +96 -0
  483. package/ios/Database/KLTLocalSettingManager.h +38 -0
  484. package/ios/Database/KLTLocalSettingManager.m +138 -0
  485. package/ios/Database/KLTPrefixHeader.pch +123 -0
  486. package/ios/Database/KLTRunLog.h +36 -0
  487. package/ios/Database/KLTRunLog.m +156 -0
  488. package/ios/Database/KLTUserDefautKeyDefine.h +42 -0
  489. package/ios/Database/MyTatva.xcdatamodeld/MyTatva.xcdatamodel/contents +68 -0
  490. package/ios/Database/NSString+KLTDateString.h +36 -0
  491. package/ios/Database/NSString+KLTDateString.m +160 -0
  492. package/ios/Database/ReceiveData+CoreDataClass.h +23 -0
  493. package/ios/Database/ReceiveData+CoreDataClass.m +14 -0
  494. package/ios/Database/ReceiveData+CoreDataProperties.h +47 -0
  495. package/ios/Database/ReceiveData+CoreDataProperties.m +44 -0
  496. package/ios/Database/UIColor+KLTUI.h +36 -0
  497. package/ios/Database/UIColor+KLTUI.m +60 -0
  498. package/ios/Extension/UIColor+Extension.swift +23 -0
  499. package/ios/Extension/UIImageView+Extension.swift +59 -0
  500. package/ios/Extension/UITableView+Extension.swift +37 -0
  501. package/ios/Extension/UIViewController+Extension.swift +24 -0
  502. package/ios/LaunchScreen.storyboard +47 -0
  503. package/ios/MyReactNativeBridge.h +19 -0
  504. package/ios/MyReactNativeBridge.m +36 -0
  505. package/ios/MyTatvaCare-Bridging-Header.h +23 -0
  506. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  507. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  508. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/xcuserdata/sonusharma.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  509. package/ios/MyTatvaRnSdk.xcodeproj/xcuserdata/sonusharma.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  510. package/ios/MyTatvaRnSdkViewManager.h +1 -1
  511. package/ios/MyTatvaRnSdkViewManager.m +1 -1
  512. package/ios/Storyboard/Base.lproj/LaunchScreen.storyboard +25 -0
  513. package/ios/Storyboard/Base.lproj/Main.storyboard +858 -0
  514. package/ios/Support/API.swift +325 -0
  515. package/ios/Support/BluetoothManager.swift +472 -0
  516. package/ios/Support/Converter/DataConverter.swift +34 -0
  517. package/ios/Support/Enum.swift +37 -0
  518. package/ios/Support/EnumDebouncer.swift +55 -0
  519. package/ios/Support/Font/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
  520. package/ios/Support/Font/PlayfairDisplay-VariableFont_wght.ttf +0 -0
  521. package/ios/Support/Global.swift +12 -0
  522. package/ios/Support/KLTFormat.swift +151 -0
  523. package/ios/Support/Library/SDK/include/AlgorithmTools.h +52 -0
  524. package/ios/Support/Library/SDK/include/CGMAlgo.h +224 -0
  525. package/ios/Support/Library/SDK/include/CGMCommonDefine.h +176 -0
  526. package/ios/Support/Library/SDK/include/CurrentGlucose.h +412 -0
  527. package/ios/Support/Library/SDK/include/EDevice.h +78 -0
  528. package/ios/Support/Library/SDK/include/KRDecodeData.h +45 -0
  529. package/ios/Support/Library/SDK/libCGMAlgo.a +0 -0
  530. package/ios/Support/gif/failure.gif +0 -0
  531. package/ios/Support/gif/play.gif +0 -0
  532. package/ios/Support/gif/searching.gif +0 -0
  533. package/ios/Support/gif/shrimmer.gif +0 -0
  534. package/ios/TableViewCell/ChargingIndicatorTVC/ChargingIndicatorTVC.swift +45 -0
  535. package/ios/TableViewCell/ChargingIndicatorTVC/ChargingIndicatorTVC.xib +136 -0
  536. package/ios/TableViewCell/ChatOptionTVC/ChatOptionTVC.swift +34 -0
  537. package/ios/TableViewCell/ChatOptionTVC/ChatOptionTVC.xib +85 -0
  538. package/ios/TableViewCell/ConnectDeviceTVC/ConnectDeviceTVC.swift +38 -0
  539. package/ios/TableViewCell/ConnectDeviceTVC/ConnectDeviceTVC.xib +94 -0
  540. package/ios/TableViewCell/ConnectSuccessTVC/ConnectSuccessTVC.swift +52 -0
  541. package/ios/TableViewCell/ConnectSuccessTVC/ConnectSuccessTVC.xib +113 -0
  542. package/ios/TableViewCell/ImageTVC/ImageTVC.swift +123 -0
  543. package/ios/TableViewCell/ImageTVC/ImageTVC.xib +115 -0
  544. package/ios/TableViewCell/LabelTVC/LabelTVC.swift +26 -0
  545. package/ios/TableViewCell/LabelTVC/LabelTVC.xib +41 -0
  546. package/ios/TableViewCell/NoteTVC/NoteTVC.swift +58 -0
  547. package/ios/TableViewCell/NoteTVC/NoteTVC.xib +98 -0
  548. package/ios/TableViewCell/PodDetailsTVC/PodDetailsTVC.swift +31 -0
  549. package/ios/TableViewCell/PodDetailsTVC/PodDetailsTVC.xib +104 -0
  550. package/ios/TableViewCell/SearchDeviceTVC/SearchDeviceTVC.swift +28 -0
  551. package/ios/TableViewCell/SearchDeviceTVC/SearchDeviceTVC.xib +67 -0
  552. package/ios/TableViewCell/SeparatorTVC/SeparatorTVC.swift +23 -0
  553. package/ios/TableViewCell/SeparatorTVC/SeparatorTVC.xib +39 -0
  554. package/ios/TableViewCell/SwitchTVC/SwitchTVC.swift +52 -0
  555. package/ios/TableViewCell/SwitchTVC/SwitchTVC.xib +139 -0
  556. package/ios/TableViewCell/VIdeoTVC/VideoTVC.swift +28 -0
  557. package/ios/TableViewCell/VIdeoTVC/VideoTVC.xib +79 -0
  558. package/ios/TableViewCell/VerticalLabelsTVC/VerticalLabelsTVC.swift +37 -0
  559. package/ios/TableViewCell/VerticalLabelsTVC/VerticalLabelsTVC.xib +60 -0
  560. package/ios/TableViewCell/WatchVideoTVC/WatchVideoTVC.swift +37 -0
  561. package/ios/TableViewCell/WatchVideoTVC/WatchVideoTVC.xib +115 -0
  562. package/ios/ViewControllers/AttachTransmitterViewController.swift +115 -0
  563. package/ios/ViewControllers/ChatWithExpertViewController.swift +113 -0
  564. package/ios/ViewControllers/ConnectToSensorViewController.swift +368 -0
  565. package/ios/ViewControllers/ConnectToTransmitterViewController.swift +300 -0
  566. package/ios/ViewControllers/ExitJourneyViewController.swift +62 -0
  567. package/ios/ViewControllers/ProvidePermissionViewController.swift +286 -0
  568. package/ios/ViewControllers/PutOnTheSensorViewController.swift +99 -0
  569. package/ios/ViewControllers/StartConnectionViewController.swift +117 -0
  570. package/ios/ViewModel/FinalViewModel.swift +395 -0
  571. package/lib/commonjs/BcaDeviceListSheet.js +7 -6
  572. package/lib/commonjs/BcaDeviceListSheet.js.map +1 -1
  573. package/lib/commonjs/CGMConnect.js +108 -0
  574. package/lib/commonjs/CGMConnect.js.map +1 -0
  575. package/lib/commonjs/MainWebView.js +9 -5
  576. package/lib/commonjs/MainWebView.js.map +1 -1
  577. package/lib/commonjs/{index.android.js → MyTatvaRnSdkView.android.js} +44 -5
  578. package/lib/commonjs/MyTatvaRnSdkView.android.js.map +1 -0
  579. package/lib/commonjs/{index.ios.js → MyTatvaRnSdkView.ios.js} +37 -8
  580. package/lib/commonjs/MyTatvaRnSdkView.ios.js.map +1 -0
  581. package/lib/commonjs/ProgressWebView.js +14 -13
  582. package/lib/commonjs/ProgressWebView.js.map +1 -1
  583. package/lib/commonjs/Services.js.map +1 -1
  584. package/lib/commonjs/Sheets.js.map +1 -1
  585. package/lib/commonjs/api/auth.js.map +1 -1
  586. package/lib/commonjs/api/base.js +6 -4
  587. package/lib/commonjs/api/base.js.map +1 -1
  588. package/lib/commonjs/api/index.js.map +1 -1
  589. package/lib/commonjs/constants/asyncstorage.js.map +1 -1
  590. package/lib/commonjs/constants/constants.js.map +1 -1
  591. package/lib/commonjs/constants.js.map +1 -1
  592. package/lib/commonjs/helpers/Matrics.js +1 -1
  593. package/lib/commonjs/helpers/Matrics.js.map +1 -1
  594. package/lib/commonjs/helpers/bluetoothPermissionHelper.js.map +1 -1
  595. package/lib/commonjs/helpers/colors.js.map +1 -1
  596. package/lib/commonjs/helpers/common.js.map +1 -1
  597. package/lib/commonjs/helpers/fonts.js.map +1 -1
  598. package/lib/commonjs/helpers/globalStyles.js +27 -27
  599. package/lib/commonjs/helpers/globalStyles.js.map +1 -1
  600. package/lib/commonjs/helpers/icons.js.map +1 -1
  601. package/lib/commonjs/index.js +67 -0
  602. package/lib/commonjs/index.js.map +1 -0
  603. package/lib/commonjs/redux/Store.js +17 -12
  604. package/lib/commonjs/redux/Store.js.map +1 -1
  605. package/lib/commonjs/redux/hooks.js +4 -6
  606. package/lib/commonjs/redux/hooks.js.map +1 -1
  607. package/lib/commonjs/redux/sagas/AuthSaga.js +11 -18
  608. package/lib/commonjs/redux/sagas/AuthSaga.js.map +1 -1
  609. package/lib/commonjs/redux/sagas/index.js.map +1 -1
  610. package/lib/commonjs/redux/slices/authSlice.js.map +1 -1
  611. package/lib/commonjs/redux/slices/index.js +1 -2
  612. package/lib/commonjs/redux/slices/index.js.map +1 -1
  613. package/lib/commonjs/types/action-sheet.d.js +2 -0
  614. package/lib/commonjs/types/action-sheet.d.js.map +1 -0
  615. package/lib/commonjs/types/auth.js.map +1 -1
  616. package/lib/commonjs/types/common.js.map +1 -1
  617. package/lib/commonjs/types/index.js +1 -2
  618. package/lib/commonjs/types/index.js.map +1 -1
  619. package/lib/commonjs/types/sheet-manager.d.js +2 -0
  620. package/lib/commonjs/types/sheet-manager.d.js.map +1 -0
  621. package/lib/commonjs/types/svg.d.js +2 -0
  622. package/lib/commonjs/types/svg.d.js.map +1 -0
  623. package/lib/module/BcaDeviceListSheet.js +6 -4
  624. package/lib/module/BcaDeviceListSheet.js.map +1 -1
  625. package/lib/module/CGMConnect.js +94 -0
  626. package/lib/module/CGMConnect.js.map +1 -0
  627. package/lib/module/MainWebView.js +9 -5
  628. package/lib/module/MainWebView.js.map +1 -1
  629. package/lib/module/{index.android.js → MyTatvaRnSdkView.android.js} +44 -4
  630. package/lib/module/MyTatvaRnSdkView.android.js.map +1 -0
  631. package/lib/module/{index.ios.js → MyTatvaRnSdkView.ios.js} +37 -7
  632. package/lib/module/MyTatvaRnSdkView.ios.js.map +1 -0
  633. package/lib/module/ProgressWebView.js +14 -9
  634. package/lib/module/ProgressWebView.js.map +1 -1
  635. package/lib/module/Services.js.map +1 -1
  636. package/lib/module/Sheets.js.map +1 -1
  637. package/lib/module/api/auth.js.map +1 -1
  638. package/lib/module/api/base.js +6 -4
  639. package/lib/module/api/base.js.map +1 -1
  640. package/lib/module/api/index.js.map +1 -1
  641. package/lib/module/constants/asyncstorage.js.map +1 -1
  642. package/lib/module/constants/constants.js.map +1 -1
  643. package/lib/module/constants.js.map +1 -1
  644. package/lib/module/helpers/Matrics.js +1 -1
  645. package/lib/module/helpers/Matrics.js.map +1 -1
  646. package/lib/module/helpers/bluetoothPermissionHelper.js.map +1 -1
  647. package/lib/module/helpers/colors.js.map +1 -1
  648. package/lib/module/helpers/common.js.map +1 -1
  649. package/lib/module/helpers/fonts.js.map +1 -1
  650. package/lib/module/helpers/globalStyles.js +1 -1
  651. package/lib/module/helpers/globalStyles.js.map +1 -1
  652. package/lib/module/helpers/icons.js.map +1 -1
  653. package/lib/module/index.js +28 -0
  654. package/lib/module/index.js.map +1 -0
  655. package/lib/module/redux/Store.js +17 -10
  656. package/lib/module/redux/Store.js.map +1 -1
  657. package/lib/module/redux/hooks.js +3 -1
  658. package/lib/module/redux/hooks.js.map +1 -1
  659. package/lib/module/redux/sagas/AuthSaga.js +9 -16
  660. package/lib/module/redux/sagas/AuthSaga.js.map +1 -1
  661. package/lib/module/redux/sagas/index.js.map +1 -1
  662. package/lib/module/redux/slices/authSlice.js.map +1 -1
  663. package/lib/module/redux/slices/index.js.map +1 -1
  664. package/lib/module/types/action-sheet.d.js +2 -0
  665. package/lib/module/types/action-sheet.d.js.map +1 -0
  666. package/lib/module/types/auth.js.map +1 -1
  667. package/lib/module/types/common.js.map +1 -1
  668. package/lib/module/types/index.js.map +1 -1
  669. package/lib/module/types/sheet-manager.d.js +2 -0
  670. package/lib/module/types/sheet-manager.d.js.map +1 -0
  671. package/lib/module/types/svg.d.js +2 -0
  672. package/lib/module/types/svg.d.js.map +1 -0
  673. package/lib/typescript/BcaDeviceListSheet.d.ts +8 -3
  674. package/lib/typescript/CGMConnect.d.ts +8 -0
  675. package/lib/typescript/MainWebView.d.ts +0 -1
  676. package/lib/typescript/ProgressWebView.d.ts +0 -1
  677. package/lib/typescript/api/auth.d.ts +0 -1
  678. package/lib/typescript/api/base.d.ts +0 -1
  679. package/lib/typescript/api/index.d.ts +0 -1
  680. package/lib/typescript/constants/asyncstorage.d.ts +0 -1
  681. package/lib/typescript/constants/constants.d.ts +0 -1
  682. package/lib/typescript/constants.d.ts +0 -1
  683. package/lib/typescript/helpers/Matrics.d.ts +0 -1
  684. package/lib/typescript/helpers/bluetoothPermissionHelper.d.ts +0 -1
  685. package/lib/typescript/helpers/colors.d.ts +0 -1
  686. package/lib/typescript/helpers/common.d.ts +0 -1
  687. package/lib/typescript/helpers/fonts.d.ts +0 -1
  688. package/lib/typescript/helpers/globalStyles.d.ts +26 -27
  689. package/lib/typescript/helpers/icons.d.ts +4 -4
  690. package/lib/typescript/redux/Store.d.ts +5 -7
  691. package/lib/typescript/redux/hooks.d.ts +1 -1
  692. package/lib/typescript/redux/sagas/AuthSaga.d.ts +2 -3
  693. package/lib/typescript/redux/sagas/index.d.ts +0 -1
  694. package/lib/typescript/redux/slices/authSlice.d.ts +0 -1
  695. package/lib/typescript/redux/slices/index.d.ts +0 -1
  696. package/lib/typescript/types/auth.d.ts +0 -1
  697. package/lib/typescript/types/common.d.ts +0 -1
  698. package/lib/typescript/types/index.d.ts +0 -1
  699. package/package.json +14 -11
  700. package/src/BcaDeviceListSheet.tsx +20 -9
  701. package/src/CGMConnect.ts +118 -0
  702. package/src/{index.android.js → MyTatvaRnSdkView.android.js} +95 -39
  703. package/src/{index.ios.js → MyTatvaRnSdkView.ios.js} +14 -0
  704. package/src/ProgressWebView.tsx +2 -1
  705. package/src/helpers/Matrics.ts +1 -1
  706. package/src/helpers/globalStyles.ts +1 -1
  707. package/src/index.js +33 -0
  708. package/src/redux/Store.ts +21 -12
  709. package/src/redux/hooks.ts +3 -1
  710. package/src/redux/sagas/AuthSaga.ts +30 -36
  711. package/src/types/action-sheet.d.ts +22 -0
  712. package/src/types/sheet-manager.d.ts +14 -0
  713. package/src/types/svg.d.ts +5 -0
  714. package/lib/commonjs/index.android.js.map +0 -1
  715. package/lib/commonjs/index.ios.js.map +0 -1
  716. package/lib/module/index.android.js.map +0 -1
  717. package/lib/module/index.ios.js.map +0 -1
  718. package/lib/typescript/BcaDeviceListSheet.d.ts.map +0 -1
  719. package/lib/typescript/MainWebView.d.ts.map +0 -1
  720. package/lib/typescript/ProgressWebView.d.ts.map +0 -1
  721. package/lib/typescript/Services.d.ts +0 -5
  722. package/lib/typescript/Services.d.ts.map +0 -1
  723. package/lib/typescript/Sheets.d.ts +0 -2
  724. package/lib/typescript/Sheets.d.ts.map +0 -1
  725. package/lib/typescript/api/auth.d.ts.map +0 -1
  726. package/lib/typescript/api/base.d.ts.map +0 -1
  727. package/lib/typescript/api/index.d.ts.map +0 -1
  728. package/lib/typescript/constants/asyncstorage.d.ts.map +0 -1
  729. package/lib/typescript/constants/constants.d.ts.map +0 -1
  730. package/lib/typescript/constants.d.ts.map +0 -1
  731. package/lib/typescript/helpers/Matrics.d.ts.map +0 -1
  732. package/lib/typescript/helpers/bluetoothPermissionHelper.d.ts.map +0 -1
  733. package/lib/typescript/helpers/colors.d.ts.map +0 -1
  734. package/lib/typescript/helpers/common.d.ts.map +0 -1
  735. package/lib/typescript/helpers/fonts.d.ts.map +0 -1
  736. package/lib/typescript/helpers/globalStyles.d.ts.map +0 -1
  737. package/lib/typescript/helpers/icons.d.ts.map +0 -1
  738. package/lib/typescript/index.android.d.ts +0 -30
  739. package/lib/typescript/index.android.d.ts.map +0 -1
  740. package/lib/typescript/index.ios.d.ts +0 -28
  741. package/lib/typescript/index.ios.d.ts.map +0 -1
  742. package/lib/typescript/redux/Store.d.ts.map +0 -1
  743. package/lib/typescript/redux/hooks.d.ts.map +0 -1
  744. package/lib/typescript/redux/sagas/AuthSaga.d.ts.map +0 -1
  745. package/lib/typescript/redux/sagas/index.d.ts.map +0 -1
  746. package/lib/typescript/redux/slices/authSlice.d.ts.map +0 -1
  747. package/lib/typescript/redux/slices/index.d.ts.map +0 -1
  748. package/lib/typescript/types/auth.d.ts.map +0 -1
  749. package/lib/typescript/types/common.d.ts.map +0 -1
  750. package/lib/typescript/types/index.d.ts.map +0 -1
  751. /package/ios/{MyTatvaRnSdk.xcodeproj → VisitRnSdk.xcodeproj}/project.pbxproj +0 -0
@@ -0,0 +1,885 @@
1
+ package com.mytatvarnsdk
2
+
3
+ import android.app.Application
4
+ import android.bluetooth.BluetoothAdapter
5
+ import android.content.Intent
6
+ import android.content.pm.PackageManager
7
+ import android.os.Build
8
+ import android.os.Handler
9
+ import android.os.Looper
10
+ import android.util.Log
11
+ import androidx.core.content.ContextCompat
12
+ import androidx.lifecycle.Observer
13
+ import androidx.lifecycle.ViewModelProvider
14
+ import androidx.lifecycle.ViewModelStore
15
+ import cgmblelib.Enum.enumError
16
+ import cgmblelib.database.entity.PocDevice
17
+ import cgmblelib.database.entity.PocGlucose
18
+ import cgmblelib.utils.SharedPreferencesLibraryUtil
19
+ import cgmblelib.utils.SyncMeta
20
+ import com.facebook.react.bridge.Arguments
21
+ import com.facebook.react.bridge.ReactApplicationContext
22
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
23
+ import com.facebook.react.bridge.ReactMethod
24
+ import com.facebook.react.bridge.WritableMap
25
+ import com.facebook.react.module.annotations.ReactModule
26
+ import com.facebook.react.modules.core.DeviceEventManagerModule
27
+ import com.google.gson.Gson
28
+ import com.google.gson.GsonBuilder
29
+ import com.mytatvarnsdk.activity.HelpActivity
30
+ import com.mytatvarnsdk.activity.PermissionActivity
31
+ import com.mytatvarnsdk.activity.PermissionUtils
32
+ import com.mytatvarnsdk.activity.SearchTransmitterActivity
33
+ import com.mytatvarnsdk.activity.StartCGMActivity
34
+ import com.mytatvarnsdk.model.AllCGMLogRequest
35
+ import com.mytatvarnsdk.model.CgmLog
36
+ import com.mytatvarnsdk.model.GlucoseLog
37
+ import com.mytatvarnsdk.model.GlucoseLog.ErrorObject
38
+ import com.mytatvarnsdk.model.GlucoseLog.GlucoseStatusObject
39
+ import com.mytatvarnsdk.model.GlucoseLog.TrendObject
40
+ import com.mytatvarnsdk.model.GlucoseLogRequest
41
+ import com.mytatvarnsdk.model.MainActivityModel
42
+ import com.mytatvarnsdk.network.AuthenticateSDKService
43
+ import com.mytatvarnsdk.network.AuthenticateSDKService.LoaderListener
44
+ import com.mytatvarnsdk.utils.DeviceStatus
45
+ import com.mytatvarnsdk.utils.TATVA_ENVIRONMENT
46
+ import kotlinx.coroutines.CoroutineScope
47
+ import kotlinx.coroutines.Dispatchers
48
+ import kotlinx.coroutines.Job
49
+ import kotlinx.coroutines.SupervisorJob
50
+ import kotlinx.coroutines.delay
51
+ import kotlinx.coroutines.launch
52
+ import org.json.JSONObject
53
+ import java.util.Date
54
+ import kotlin.coroutines.resume
55
+ import kotlin.coroutines.suspendCoroutine
56
+
57
+ @ReactModule(name = "CgmTrackyLib")
58
+ class CgmTrackyLibModule(reactContext: ReactApplicationContext) :
59
+ ReactContextBaseJavaModule(reactContext) {
60
+ private val mModel: MainActivityModel
61
+ var authenticateSDKService: AuthenticateSDKService
62
+ private val job = Job()
63
+ private val scope = CoroutineScope(Dispatchers.IO + job)
64
+ var prefsHelper: SharedPreferencesLibraryUtil
65
+ private val apiScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
66
+ private var debounceJob: Job? = null
67
+ private var lastDeviceStatus: PocDevice? = null
68
+
69
+ private var glucoseObserver: Observer<PocGlucose?>? = null
70
+ private var isObserving = false
71
+
72
+ init {
73
+ mReactContext = reactContext
74
+ prefsHelper = SharedPreferencesLibraryUtil(mReactContext)
75
+ val viewModelStore = ViewModelStore()
76
+ val factory =
77
+ ViewModelProvider.AndroidViewModelFactory.getInstance(reactContext.applicationContext as Application)
78
+ mModel = ViewModelProvider(viewModelStore, factory)[MainActivityModel::class.java]
79
+ authenticateSDKService = AuthenticateSDKService(scope = scope)
80
+ }
81
+
82
+
83
+ companion object {
84
+ var mReactContext: ReactApplicationContext? = null
85
+ var userToken: String = ""
86
+ }
87
+
88
+ override fun getName(): String {
89
+ return "CgmTrackyLib"
90
+ }
91
+
92
+ @ReactMethod
93
+ fun observeDeviceStatus(token: String) {
94
+ try {
95
+ userToken = token
96
+ Handler(Looper.getMainLooper()).post {
97
+ mModel.device.observeForever { device ->
98
+ if (device != lastDeviceStatus) {
99
+ lastDeviceStatus = device
100
+ postEventDataToAPI(device, "")
101
+ resetDebounceTimer()
102
+ }
103
+
104
+ if (device != null) {
105
+ Log.d("observeDeviceStatus: ", device.toString())
106
+ }
107
+ }
108
+ }
109
+ } catch (e: Exception) {
110
+ Log.e("observeDeviceStatus", "observeDeviceStatus: ${e.message}")
111
+ }
112
+ }
113
+
114
+ private fun postEventDataToAPI(device: PocDevice, mStatus: String) {
115
+ apiScope.launch {
116
+ try {
117
+ val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
118
+ var bleStatus = bluetoothAdapter?.isEnabled == true
119
+ var status = ""
120
+
121
+ if (mStatus.isEmpty()) {
122
+ if (device.isBoundAndConnect) {
123
+ status = DeviceStatus.CONNECTED.id
124
+ } else if (device.isBoundButDisConnect) {
125
+ status = DeviceStatus.TRANSMITTER_DISCONNECT.id
126
+ } else if (device.isDisConnect) {
127
+ status = if (!bleStatus) {
128
+ DeviceStatus.BLUETOOTH_OFF.id
129
+ } else {
130
+ DeviceStatus.DISCONNECTED.id
131
+ }
132
+ } else if (device.isUnBind) {
133
+ status = DeviceStatus.TRANSMITTER_DISCONNECT_BOX.id
134
+ }
135
+ } else {
136
+ status = mStatus
137
+ }
138
+
139
+ if (status.isNotEmpty()) {
140
+ val rawData = JSONObject()
141
+ rawData.put("transmitterName", device.name)
142
+ rawData.put("SensorId", device.qrMessage)
143
+ rawData.put("Sensor", device.qrMessage)
144
+ rawData.put("timeInMillis", Date().time)
145
+
146
+ val obj = JSONObject()
147
+ obj.put("sensorId", device.qrMessage)
148
+ obj.put("status", status)
149
+ obj.put("rawData", rawData)
150
+
151
+ authenticateSDKService.postDeviceData(
152
+ environment = if ("uat".uppercase() == "PROD") TATVA_ENVIRONMENT.PROD else TATVA_ENVIRONMENT.STAGE,
153
+ data = obj.toString(),
154
+ token = userToken,
155
+ loaderListener = object : LoaderListener {
156
+ override fun onShowLoader() {
157
+ }
158
+
159
+ override fun onHideLoader() {
160
+ }
161
+ }
162
+ )
163
+ }
164
+
165
+ } catch (e: Exception) {
166
+ e.printStackTrace()
167
+ }
168
+ }
169
+ }
170
+
171
+ private fun resetDebounceTimer() {
172
+ debounceJob?.cancel() // Cancel any existing timer
173
+ debounceJob = apiScope.launch {
174
+ delay(60 * 60 * 1000L) // 60 minutes in ms
175
+ lastDeviceStatus = null // Reset status after timeout
176
+ println("60 min window expired, status reset.")
177
+ }
178
+ }
179
+
180
+ @ReactMethod
181
+ fun startCgmTracky(token: String) {
182
+ try {
183
+ userToken = token
184
+ val intent = Intent(currentActivity, StartCGMActivity::class.java)
185
+ currentActivity?.startActivity(intent)
186
+ } catch (e: Exception) {
187
+ Log.e("startCgmTracky", "startCgmTracky: ${e.message}")
188
+ }
189
+ }
190
+
191
+ @ReactMethod
192
+ fun reconnectCgmTracky(token: String) {
193
+ try {
194
+ userToken = token
195
+ val intent = if (areAllPermissionsGranted()) {
196
+ Intent(currentActivity, SearchTransmitterActivity::class.java).putExtra(
197
+ "IsForReconnect",
198
+ true
199
+ )
200
+ } else {
201
+ Intent(currentActivity, PermissionActivity::class.java).putExtra("IsForReconnect", true)
202
+ }
203
+ currentActivity?.startActivity(intent)
204
+ } catch (e: Exception) {
205
+ Log.e("reconnectCgmTracky", "reconnectCgmTracky: ${e.message}")
206
+ }
207
+ }
208
+
209
+ @ReactMethod
210
+ fun openHelpSupport() {
211
+ try {
212
+ val intent = Intent(currentActivity, HelpActivity::class.java)
213
+ currentActivity?.startActivity(intent)
214
+ } catch (e: Exception) {
215
+ Log.e("openHelpSupport", "openHelpSupport: ${e.message}")
216
+ }
217
+ }
218
+
219
+ private fun areAllPermissionsGranted(): Boolean {
220
+ val requiredPermissions = mutableListOf<String>()
221
+
222
+ // Add Bluetooth permissions
223
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
224
+ requiredPermissions.addAll(PermissionUtils.BLUETOOTH_S)
225
+ }
226
+
227
+ // Add location permissions
228
+ requiredPermissions.addAll(PermissionUtils.LOCAL_PERMISSION)
229
+
230
+ // Add camera permission
231
+ requiredPermissions.addAll(PermissionUtils.CAMERA_PERMISSION)
232
+
233
+ return requiredPermissions.all {
234
+ ContextCompat.checkSelfPermission(mReactContext!!, it) == PackageManager.PERMISSION_GRANTED
235
+ }
236
+ }
237
+
238
+
239
+ /*@ReactMethod
240
+ fun observeGlucoseData(token: String) {
241
+ try {
242
+ userToken = token
243
+ Handler(Looper.getMainLooper()).post {
244
+ //Observe latest glucose data
245
+ mModel.latestGlucose.observeForever { pocGlucose ->
246
+ if (pocGlucose != null) {
247
+
248
+ if (pocGlucose.errorCode == enumError.NONE) {
249
+ if (pocGlucose.showGlucoseMG > 0) {
250
+ val dto: GlucoseLog = mapToDto(pocGlucose)
251
+ val logs: ArrayList<GlucoseLog> = ArrayList()
252
+ logs.add(dto)
253
+
254
+ val request: GlucoseLogRequest =
255
+ GlucoseLogRequest(vendor = "GoodFlip", logs = logs)
256
+ val gson: Gson = GsonBuilder().create()
257
+ val json = gson.toJson(request)
258
+
259
+ Log.d("Glucose data 3 min==> ", "Glucose data 3 min==> final Json: $json")
260
+
261
+ authenticateSDKService.postCGMData(
262
+ environment = if ("uat".uppercase() == "PROD") TATVA_ENVIRONMENT.PROD else TATVA_ENVIRONMENT.STAGE,
263
+ data = json.toString(),
264
+ token = userToken,
265
+ responseListener = object :
266
+ AuthenticateSDKService.ResponseListener {
267
+ override fun onResponseSuccess() {
268
+ }
269
+
270
+ override fun onResponseFail() {
271
+ }
272
+ }
273
+ )
274
+ }
275
+ } else {
276
+ if (pocGlucose.errorCode == enumError.ERROR_FLOODING_WATER) {
277
+ lastDeviceStatus =
278
+ pocGlucose.deviceId.toInt().let { mModel.getDeviceInfo(it) }
279
+ lastDeviceStatus?.let {
280
+ postEventDataToAPI(
281
+ it,
282
+ DeviceStatus.MOISTURE_DETECT.id
283
+ )
284
+ }
285
+ resetDebounceTimer()
286
+ } else if (pocGlucose.errorCode == enumError.ERROR_CURRENT_SMALL || pocGlucose.errorCode == enumError.ERROR_NOISE || pocGlucose.errorCode == enumError.ERROR_SENSITIVITY_ATTENUATION) {
287
+ lastDeviceStatus =
288
+ pocGlucose.deviceId.toInt().let { mModel.getDeviceInfo(it) }
289
+ lastDeviceStatus?.let {
290
+ postEventDataToAPI(
291
+ it,
292
+ DeviceStatus.WEAK_SIGNAL.id
293
+ )
294
+ }
295
+ resetDebounceTimer()
296
+ } else {
297
+ lastDeviceStatus =
298
+ pocGlucose.deviceId.toInt().let { mModel.getDeviceInfo(it) }
299
+ lastDeviceStatus?.let {
300
+ postEventDataToAPI(
301
+ it,
302
+ DeviceStatus.ERROR_COMMON.id
303
+ )
304
+ }
305
+ resetDebounceTimer()
306
+ }
307
+ }
308
+ }
309
+ }
310
+ }
311
+ } catch (e: Exception) {
312
+ Log.e("observeGlucoseData", "observeGlucoseData: ${e.message}")
313
+ }
314
+ }*/
315
+
316
+ @ReactMethod
317
+ fun observeGlucoseData(token: String) {
318
+ try {
319
+ userToken = token
320
+
321
+ // Remove existing observer if any to prevent memory leaks
322
+ stopObservingGlucoseData()
323
+
324
+ // Create new observer with explicit nullable parameter type
325
+ glucoseObserver = Observer<PocGlucose?> { pocGlucose ->
326
+ // Critical fix: Explicitly handle nullable parameter
327
+ if (pocGlucose != null) {
328
+ handleGlucoseData(pocGlucose)
329
+ } else {
330
+ Log.w("observeGlucoseData", "Received null glucose data - skipping processing")
331
+ }
332
+ }
333
+
334
+ // Add observer on main thread
335
+ Handler(Looper.getMainLooper()).post {
336
+ glucoseObserver?.let { observer ->
337
+ try {
338
+ mModel.latestGlucose.observeForever(observer)
339
+ isObserving = true
340
+ Log.d("observeGlucoseData", "Observer added successfully")
341
+ } catch (e: Exception) {
342
+ Log.e("observeGlucoseData", "Error adding observer: ${e.message}")
343
+ glucoseObserver = null
344
+ }
345
+ }
346
+ }
347
+ } catch (e: Exception) {
348
+ Log.e("observeGlucoseData", "observeGlucoseData: ${e.message}")
349
+ e.printStackTrace()
350
+ }
351
+ }
352
+
353
+
354
+ private fun handleGlucoseData(pocGlucose: PocGlucose) {
355
+ try {
356
+ // Additional safety check
357
+ if (pocGlucose.glucoseId == null) {
358
+ Log.w("handleGlucoseData", "Glucose ID is null, skipping processing")
359
+ return
360
+ }
361
+
362
+ Log.d("handleGlucoseData", "Processing glucose data: ${pocGlucose.glucoseId}")
363
+
364
+ if (pocGlucose.errorCode == enumError.NONE) {
365
+ if (pocGlucose.showGlucoseMG > 0) {
366
+ val dto: GlucoseLog = mapToDto(pocGlucose)
367
+ val logs: ArrayList<GlucoseLog> = ArrayList()
368
+ logs.add(dto)
369
+
370
+ val request: GlucoseLogRequest = GlucoseLogRequest(vendor = "GoodFlip", logs = logs)
371
+ val gson: Gson = GsonBuilder().create()
372
+ val json = gson.toJson(request)
373
+
374
+ Log.d("Glucose data 3 min==> ", "Glucose data 3 min==> final Json: $json")
375
+
376
+ authenticateSDKService.postCGMData(
377
+ environment = if ("uat".uppercase() == "PROD") TATVA_ENVIRONMENT.PROD else TATVA_ENVIRONMENT.STAGE,
378
+ data = json,
379
+ token = userToken,
380
+ responseListener = object : AuthenticateSDKService.ResponseListener {
381
+ override fun onResponseSuccess() {
382
+ Log.d("CGM Data", "Single glucose data uploaded successfully")
383
+ }
384
+
385
+ override fun onResponseFail() {
386
+ Log.e("CGM Data", "Failed to upload single glucose data")
387
+ }
388
+ }
389
+ )
390
+ } else {
391
+ Log.d("handleGlucoseData", "Glucose value is 0 or negative: ${pocGlucose.showGlucoseMG}")
392
+ }
393
+ } else {
394
+ Log.d("handleGlucoseData", "Glucose data has error: ${pocGlucose.errorCode}")
395
+ handleGlucoseError(pocGlucose)
396
+ }
397
+ } catch (e: Exception) {
398
+ Log.e("handleGlucoseData", "Error handling glucose data: ${e.message}")
399
+ e.printStackTrace()
400
+ }
401
+ }
402
+
403
+ // Extract error handling logic
404
+ private fun handleGlucoseError(pocGlucose: PocGlucose) {
405
+ try {
406
+ // Additional safety check for deviceId
407
+ if (pocGlucose.deviceId == null) {
408
+ Log.e("handleGlucoseError", "Device ID is null, cannot process error")
409
+ return
410
+ }
411
+
412
+ val deviceInfo = mModel.getDeviceInfo(pocGlucose.deviceId.toInt())
413
+ deviceInfo?.let {
414
+ val statusId = when (pocGlucose.errorCode) {
415
+ enumError.ERROR_FLOODING_WATER -> {
416
+ Log.d("handleGlucoseError", "Moisture detected")
417
+ DeviceStatus.MOISTURE_DETECT.id
418
+ }
419
+ enumError.ERROR_CURRENT_SMALL,
420
+ enumError.ERROR_NOISE,
421
+ enumError.ERROR_SENSITIVITY_ATTENUATION -> {
422
+ Log.d("handleGlucoseError", "Weak signal detected")
423
+ DeviceStatus.WEAK_SIGNAL.id
424
+ }
425
+ else -> {
426
+ Log.d("handleGlucoseError", "Common error detected: ${pocGlucose.errorCode}")
427
+ DeviceStatus.ERROR_COMMON.id
428
+ }
429
+ }
430
+
431
+ postEventDataToAPI(it, statusId)
432
+ resetDebounceTimer()
433
+ } ?: run {
434
+ Log.e("handleGlucoseError", "Device info not found for deviceId: ${pocGlucose.deviceId}")
435
+ }
436
+ } catch (e: Exception) {
437
+ Log.e("handleGlucoseError", "Error handling glucose error: ${e.message}")
438
+ e.printStackTrace()
439
+ }
440
+ }
441
+
442
+ /*@ReactMethod
443
+ fun observeAllGlucoseData(token: String) {
444
+ userToken = token
445
+ Log.e("userToken", "userToken: ${userToken}")
446
+ try {
447
+ val lastSyncData = prefsHelper.lastSyncData
448
+ Log.d("lastSyncData: ", Gson().toJson(lastSyncData).toString())
449
+
450
+ if (lastSyncData != null) {
451
+ CoroutineScope(Dispatchers.IO).launch {
452
+ getGlucoseDataAndUploadInBatch(
453
+ mModel.getGlucoseBetweenTime(
454
+ lastSyncData.lastSyncTime
455
+ )
456
+ )
457
+ }
458
+ } else {
459
+ observeGlucoseData(userToken)
460
+ }
461
+
462
+ } catch (e: Exception) {
463
+ Log.e("observeAllGlucoseData", "observeAllGlucoseData Error: ${e.message}")
464
+ }
465
+ }*/
466
+
467
+
468
+ @ReactMethod
469
+ fun observeAllGlucoseData(token: String) {
470
+ userToken = token
471
+ Log.e("userToken", "userToken: $token")
472
+
473
+ // Stop current observation to prevent duplicates
474
+ stopObservingGlucoseData()
475
+
476
+ try {
477
+ val lastSyncData = prefsHelper.lastSyncData
478
+ Log.d("lastSyncData: ", Gson().toJson(lastSyncData).toString())
479
+
480
+ if (lastSyncData != null) {
481
+ CoroutineScope(Dispatchers.IO).launch {
482
+ val glucoseData = mModel.getGlucoseBetweenTime(lastSyncData.lastSyncTime)
483
+ if (glucoseData != null) {
484
+ getGlucoseDataAndUploadInBatch(glucoseData)
485
+ } else {
486
+ Log.d("observeAllGlucoseData", "No glucose data found, starting live observation")
487
+ observeGlucoseData(userToken)
488
+ }
489
+ }
490
+ } else {
491
+ observeGlucoseData(userToken)
492
+ }
493
+ } catch (e: Exception) {
494
+ Log.e("observeAllGlucoseData", "observeAllGlucoseData Error: ${e.message}")
495
+ }
496
+ }
497
+
498
+ @ReactMethod
499
+ fun stopObservingGlucoseData() {
500
+ try {
501
+ glucoseObserver?.let { observer ->
502
+ Handler(Looper.getMainLooper()).post {
503
+ try {
504
+ mModel.latestGlucose.removeObserver(observer)
505
+ isObserving = false
506
+ Log.d("stopObservingGlucoseData", "Observer removed successfully")
507
+ } catch (e: Exception) {
508
+ Log.e("stopObservingGlucoseData", "Error removing observer: ${e.message}")
509
+ }
510
+ }
511
+ }
512
+ glucoseObserver = null
513
+ } catch (e: Exception) {
514
+ Log.e("stopObservingGlucoseData", "Error stopping observer: ${e.message}")
515
+ }
516
+ }
517
+
518
+ fun getGlucoseDataAndUploadInBatch(dataList: List<PocGlucose>) {
519
+ if (dataList.isEmpty()) {
520
+ Log.d("getGlucoseDataAndUploadInBatch", "No data to upload, starting live observation")
521
+ if (!isObserving) {
522
+ observeGlucoseData(userToken)
523
+ }
524
+ return
525
+ }
526
+
527
+ val batchSize = 40
528
+ val chunks = dataList.chunked(batchSize)
529
+
530
+ Log.d("getGlucoseDataAndUploadInBatch", "Starting batch upload with ${chunks.size} batches")
531
+
532
+ CoroutineScope(Dispatchers.IO).launch {
533
+ var lastSyncedRecord: PocGlucose? = null
534
+ var allBatchesSuccessful = true
535
+
536
+ for ((index, batch) in chunks.withIndex()) {
537
+ try {
538
+ val transformedLogs = batch.filter { it.showGlucoseMG > 0 }.map { pocGlucose ->
539
+ CgmLog(
540
+ timeInMillis = pocGlucose.timeInMillis,
541
+ countdownMinutes = pocGlucose.countdownMinutes,
542
+ countdownDays = pocGlucose.countdownDays,
543
+ hypoglycemiaEarlyWarnMinutes = pocGlucose.hypoglycemiaEarlyWarnMinutes,
544
+ showGlucoseMG = pocGlucose.showGlucoseMG,
545
+ glucoseId = pocGlucose.glucoseId,
546
+ name = pocGlucose.name,
547
+ bytes = pocGlucose.bytes,
548
+ showGlucose = pocGlucose.showGlucose,
549
+ Ib = pocGlucose.ib,
550
+ Iw = pocGlucose.iw,
551
+ countdownHours = pocGlucose.countdownHours,
552
+ T = pocGlucose.t,
553
+ year = pocGlucose.year,
554
+ month = pocGlucose.month,
555
+ day = pocGlucose.day,
556
+ hour = pocGlucose.hour,
557
+ minute = pocGlucose.minute,
558
+ trendObject = com.mytatvarnsdk.model.TrendObject(
559
+ trendId = pocGlucose.trend.trendId,
560
+ drawableId = pocGlucose.trend.drawableId,
561
+ widgetImg = pocGlucose.trend.widgetImg,
562
+ apsChangeRate = pocGlucose.trend.apsChangeRate
563
+ ),
564
+ glucoseStatusObject = com.mytatvarnsdk.model.GlucoseStatusObject(
565
+ statusId = pocGlucose.glucoseStatus.statusId
566
+ ),
567
+ errorObject = com.mytatvarnsdk.model.ErrorObject(
568
+ errorId = pocGlucose.errorCode.errorId,
569
+ sound = pocGlucose.errorCode.sound
570
+ )
571
+ )
572
+ }
573
+
574
+ if (transformedLogs.isEmpty()) {
575
+ Log.d("Batch Upload", "Batch $index skipped - no valid glucose readings")
576
+ continue
577
+ }
578
+
579
+ val allResult = AllCGMLogRequest(vendor = "GoodFlip", logs = transformedLogs)
580
+ val json = Gson().toJson(allResult)
581
+
582
+ Log.d("Batch Upload JSON", "Batch $index with ${transformedLogs.size} records")
583
+ logLongJson("Batch $index JSON=>>> ", json)
584
+
585
+ val uploadSuccessful = uploadBatchSynchronously(json, index)
586
+
587
+ if (uploadSuccessful) {
588
+ lastSyncedRecord = batch.lastOrNull()
589
+ updateSyncMetadata(lastSyncedRecord)
590
+ Log.d("Batch Upload", "✅ Batch $index uploaded successfully")
591
+ } else {
592
+ allBatchesSuccessful = false
593
+ Log.e("Batch Upload", "❌ Batch $index failed, stopping further uploads")
594
+ break
595
+ }
596
+
597
+ delay(500L) // Rate limiting between batches
598
+
599
+ } catch (e: Exception) {
600
+ Log.e("Batch Upload", "❌ Batch $index exception: ${e.message}")
601
+ allBatchesSuccessful = false
602
+ break
603
+ }
604
+ }
605
+
606
+ // Handle last synced record error status
607
+ lastSyncedRecord?.let { record ->
608
+ if (record.errorCode != enumError.NONE) {
609
+ handleGlucoseError(record)
610
+ }
611
+ }
612
+
613
+ Log.d("Batch Upload", "Batch upload completed. Success: $allBatchesSuccessful")
614
+
615
+ // Only start observing new data if we're not already doing so
616
+ if (!isObserving) {
617
+ observeGlucoseData(userToken)
618
+ }
619
+ }
620
+ }
621
+
622
+ // Helper method for synchronous batch upload
623
+ private suspend fun uploadBatchSynchronously(json: String, batchIndex: Int): Boolean {
624
+ return suspendCoroutine { continuation ->
625
+ try {
626
+ authenticateSDKService.postCGMData(
627
+ environment = if ("uat".uppercase() == "PROD") TATVA_ENVIRONMENT.PROD else TATVA_ENVIRONMENT.STAGE,
628
+ data = json,
629
+ token = userToken,
630
+ responseListener = object : AuthenticateSDKService.ResponseListener {
631
+ override fun onResponseSuccess() {
632
+ continuation.resume(true)
633
+ }
634
+
635
+ override fun onResponseFail() {
636
+ continuation.resume(false)
637
+ }
638
+ }
639
+ )
640
+ } catch (e: Exception) {
641
+ Log.e("uploadBatchSynchronously", "Exception in batch $batchIndex: ${e.message}")
642
+ continuation.resume(false)
643
+ }
644
+ }
645
+ }
646
+
647
+ private fun updateSyncMetadata(lastRecord: PocGlucose?) {
648
+ lastRecord?.let {
649
+ try {
650
+ val syncData = SyncMeta(
651
+ Date().time,
652
+ it.timeInMillis,
653
+ it.deviceId,
654
+ it.glucoseId
655
+ )
656
+ prefsHelper.lastSyncData = syncData
657
+ Log.d("Sync Metadata", "Last sync data stored: ${Gson().toJson(syncData)}")
658
+ } catch (e: Exception) {
659
+ Log.e("updateSyncMetadata", "Error updating sync metadata: ${e.message}")
660
+ }
661
+ }
662
+ }
663
+
664
+ /*fun getGlucoseDataAndUploadInBatch(dataList: List<PocGlucose>) {
665
+ if (dataList.isNotEmpty()) {
666
+ val batchSize = 40
667
+
668
+ val chunks = dataList.chunked(batchSize)
669
+
670
+ CoroutineScope(Dispatchers.IO).launch {
671
+
672
+ var lastSyncedRecord: PocGlucose? = null
673
+
674
+ for ((index, batch) in chunks.withIndex()) {
675
+ try {
676
+ val transformedLogs = batch.filter { it.showGlucoseMG > 0 }.map {
677
+ CgmLog(
678
+ timeInMillis = it.timeInMillis,
679
+ countdownMinutes = it.countdownMinutes,
680
+ countdownDays = it.countdownDays,
681
+ hypoglycemiaEarlyWarnMinutes = it.hypoglycemiaEarlyWarnMinutes,
682
+ showGlucoseMG = it.showGlucoseMG,
683
+ glucoseId = it.glucoseId,
684
+ name = it.name,
685
+ bytes = it.bytes,
686
+ showGlucose = it.showGlucose,
687
+ Ib = it.ib,
688
+ Iw = it.iw,
689
+ countdownHours = it.countdownHours,
690
+ T = it.t,
691
+ year = it.year,
692
+ month = it.month,
693
+ day = it.day,
694
+ hour = it.hour,
695
+ minute = it.minute,
696
+ trendObject = com.mytatvarnsdk.model.TrendObject(
697
+ trendId = it.trend.trendId,
698
+ drawableId = it.trend.drawableId,
699
+ widgetImg = it.trend.widgetImg,
700
+ apsChangeRate = it.trend.apsChangeRate
701
+ ),
702
+ glucoseStatusObject = com.mytatvarnsdk.model.GlucoseStatusObject(
703
+ statusId = it.glucoseStatus.statusId
704
+ ),
705
+ errorObject = com.mytatvarnsdk.model.ErrorObject(
706
+ errorId = it.errorCode.errorId,
707
+ sound = it.errorCode.sound
708
+ )
709
+ )
710
+ }
711
+
712
+ val allResult = AllCGMLogRequest(
713
+ vendor = "GoodFlip",
714
+ logs = transformedLogs
715
+ )
716
+
717
+ val json = Gson().toJson(allResult)
718
+ logLongJson("Final JSON=>>> ", json)
719
+
720
+ // sendDataToReact(Gson().toJson(batch).toString(), "DATA_FETCH", "CGMData")
721
+
722
+ authenticateSDKService.postCGMData(
723
+ environment = if ("uat".uppercase() == "PROD") TATVA_ENVIRONMENT.PROD else TATVA_ENVIRONMENT.STAGE,
724
+ data = json.toString(),
725
+ token = userToken,
726
+ responseListener = object : AuthenticateSDKService.ResponseListener {
727
+ override fun onResponseSuccess() {
728
+ lastSyncedRecord = batch.lastOrNull()
729
+
730
+ lastSyncedRecord?.let {
731
+ val syncData =
732
+ SyncMeta(
733
+ Date().time,
734
+ it.timeInMillis,
735
+ it.deviceId,
736
+ it.glucoseId
737
+ )
738
+ prefsHelper.lastSyncData = syncData
739
+ Log.d(
740
+ "lastSyncedRecord stored:--- ",
741
+ Gson().toJson(syncData).toString()
742
+ )
743
+ }
744
+ }
745
+
746
+ override fun onResponseFail() {
747
+ Log.e("Batch Upload", "❌ Batch $index failed")
748
+ }
749
+ }
750
+ )
751
+
752
+ delay(500L)
753
+ } catch (e: Exception) {
754
+ Log.e("Batch Upload", "❌ Batch $index exception: ${e.message}")
755
+ break // Optional: stop further processing if exception occurs
756
+ }
757
+ }
758
+
759
+
760
+ if (lastSyncedRecord != null) {
761
+ if (lastSyncedRecord?.errorCode != enumError.NONE) {
762
+ if (lastSyncedRecord?.errorCode == enumError.ERROR_FLOODING_WATER) {
763
+ lastDeviceStatus =
764
+ lastSyncedRecord?.deviceId!!.toInt().let { mModel.getDeviceInfo(it) }
765
+ lastDeviceStatus?.let {
766
+ postEventDataToAPI(
767
+ it,
768
+ DeviceStatus.MOISTURE_DETECT.id
769
+ )
770
+ }
771
+ resetDebounceTimer()
772
+ } else if (lastSyncedRecord?.errorCode == enumError.ERROR_CURRENT_SMALL || lastSyncedRecord?.errorCode == enumError.ERROR_NOISE || lastSyncedRecord?.errorCode == enumError.ERROR_SENSITIVITY_ATTENUATION) {
773
+ lastDeviceStatus =
774
+ lastSyncedRecord?.deviceId!!.toInt().let { mModel.getDeviceInfo(it) }
775
+ lastDeviceStatus?.let {
776
+ postEventDataToAPI(
777
+ it,
778
+ DeviceStatus.WEAK_SIGNAL.id
779
+ )
780
+ }
781
+ resetDebounceTimer()
782
+ } else {
783
+ lastDeviceStatus =
784
+ lastSyncedRecord?.deviceId!!.toInt().let { mModel.getDeviceInfo(it) }
785
+ lastDeviceStatus?.let {
786
+ postEventDataToAPI(
787
+ it,
788
+ DeviceStatus.ERROR_COMMON.id
789
+ )
790
+ }
791
+ resetDebounceTimer()
792
+ }
793
+ }
794
+ }
795
+
796
+ Log.e("Batch Upload", "All data uploaded")
797
+
798
+ observeGlucoseData(userToken)
799
+ }
800
+ } else {
801
+ observeGlucoseData(userToken)
802
+ }
803
+ }*/
804
+
805
+ fun logLongJson(tag: String, message: String) {
806
+ val maxLogSize = 4000
807
+ for (i in 0..message.length / maxLogSize) {
808
+ val start = i * maxLogSize
809
+ val end = (i + 1) * maxLogSize
810
+ if (start < message.length) {
811
+ Log.d(tag, message.substring(start, minOf(end, message.length)))
812
+ }
813
+ }
814
+ }
815
+
816
+ fun mapToDto(glucose: PocGlucose): GlucoseLog {
817
+ val dto: GlucoseLog = GlucoseLog()
818
+ dto.timeInMillis = glucose.getTimeInMillis()
819
+ dto.countdownMinutes = glucose.getCountdownMinutes()
820
+ dto.countdownHours = glucose.getCountdownHours()
821
+ dto.countdownDays = glucose.getCountdownDays()
822
+ dto.hypoglycemiaEarlyWarnMinutes = glucose.getHypoglycemiaEarlyWarnMinutes()
823
+ dto.showGlucoseMG = glucose.getShowGlucoseMG()
824
+ dto.glucoseId = glucose.getGlucoseId()
825
+ dto.name = glucose.getName()
826
+ dto.showGlucose = glucose.getShowGlucose()
827
+ dto.Ib = glucose.getIb()
828
+ dto.Iw = glucose.getIw()
829
+ dto.T = glucose.getT()
830
+ dto.year = glucose.getYear()
831
+ dto.month = glucose.getMonth()
832
+ dto.day = glucose.getDay()
833
+ dto.hour = glucose.getHour()
834
+ dto.minute = glucose.getMinute()
835
+
836
+ // Convert byte[] to List<Integer>
837
+ dto.bytes = ArrayList()
838
+ for (b in glucose.getBytes()) {
839
+ dto.bytes?.add(b.toInt() and 0xFF) // Prevent negative values
840
+ }
841
+
842
+ // Trend
843
+ val trendObj: TrendObject = TrendObject()
844
+ trendObj.trendId = glucose.getTrend().getTrendId()
845
+ trendObj.drawableId = glucose.getTrend().getDrawableId()
846
+ trendObj.widgetImg = glucose.getTrend().getWidgetImg()
847
+ trendObj.apsChangeRate = glucose.getTrend().getApsChangeRate()
848
+ dto.trendObject = trendObj
849
+
850
+ // Status
851
+ val statusObj: GlucoseStatusObject = GlucoseStatusObject()
852
+ statusObj.statusId = glucose.getGlucoseStatus().getStatusId()
853
+ dto.glucoseStatusObject = statusObj
854
+
855
+ // Error
856
+ val errorObj: ErrorObject = ErrorObject()
857
+ errorObj.errorId = glucose.getErrorCode().getErrorId()
858
+ errorObj.sound = glucose.getErrorCode().getSound().toString()
859
+ dto.errorObject = errorObj
860
+
861
+ return dto
862
+ }
863
+
864
+
865
+ @ReactMethod
866
+ fun sendDataToReact(data: String, status: String, eventName: String) {
867
+ Log.d("sendDataToReact: data ", data)
868
+
869
+ try {
870
+ val map: WritableMap = Arguments.createMap().apply {
871
+ putString("data", data)
872
+ putString("status", status)
873
+ }
874
+
875
+ Log.d("sendDataToReact: ", map.toString())
876
+
877
+ mReactContext?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
878
+ ?.emit(eventName, map)
879
+ } catch (e: Exception) {
880
+ Log.e("Error sendDataToReact: ", e.message.toString())
881
+ e.printStackTrace()
882
+ }
883
+ }
884
+
885
+ }