@eohjsc/react-native-smart-city 0.5.9 → 0.6.0-rc2

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 (305) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +8 -10
  3. package/package.json +52 -69
  4. package/src/commons/Action/__test__/ItemQuickAction.test.js +2 -2
  5. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +3 -3
  6. package/src/commons/ActionGroup/OnOffSmartLock/AutoLock/ButtonWrapper.js +3 -3
  7. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/__test__/index.test.js +3 -3
  8. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/index.js +3 -3
  9. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/ButtonWrapper.js +2 -2
  10. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/__test__/index.test.js +0 -15
  11. package/src/commons/ActionGroup/OnOffTemplate/OnOffSimpleTemplate.js +2 -2
  12. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +2 -2
  13. package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +2 -2
  14. package/src/commons/ActionGroup/SmartTiviActionTemplate/component/CircleButton.js +5 -5
  15. package/src/commons/ActionGroup/SmartTiviActionTemplate/component/ControlPlay.js +3 -3
  16. package/src/commons/ActionGroup/TerminalBoxTemplate.js +2 -2
  17. package/src/commons/ActionGroup/TextBoxTemplate.js +2 -2
  18. package/src/commons/ActionGroup/ThreeButtonTemplate/__test__/ThreeButtonTemplate.test.js +4 -4
  19. package/src/commons/ActionGroup/TimerActionTemplate.js +3 -4
  20. package/src/commons/ActionGroup/TwoButtonTemplate/index.js +2 -2
  21. package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +2 -9
  22. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +4 -11
  23. package/src/commons/ActionGroup/__test__/OnOffSmartLock.test.js +2 -9
  24. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +4 -18
  25. package/src/commons/ActionGroup/__test__/OneBigButtonTemplate.test.js +2 -2
  26. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +1 -8
  27. package/src/commons/ActionGroup/__test__/StatesGridActionTemplate.test.js +0 -7
  28. package/src/commons/ActionGroup/__test__/SwitchButtonTemplate.test.js +4 -15
  29. package/src/commons/ActionGroup/__test__/TerminalBoxTemplate.test.js +0 -7
  30. package/src/commons/ActionGroup/__test__/TextBoxTemplate.test.js +1 -8
  31. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +1 -8
  32. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +1 -8
  33. package/src/commons/ActionGroup/__test__/TwoButtonTemplate.test.js +2 -9
  34. package/src/commons/ActionGroup/__test__/index.test.js +14 -21
  35. package/src/commons/ActionTemplate/__test__/index.test.js +2 -0
  36. package/src/commons/ActionTemplate/__test__/utils.js +21 -0
  37. package/src/commons/ActionTemplate/index.js +1 -2
  38. package/src/commons/BackDefault/index.js +2 -2
  39. package/src/commons/ButtonPopup/index.js +2 -2
  40. package/src/commons/Dashboard/MyPinnedSharedUnit/__test__/MyPinnedSharedUnit.test.js +1 -12
  41. package/src/commons/Dashboard/MyUnit/__test__/MyUnit.test.js +27 -20
  42. package/src/commons/Dashboard/MyUnit/index.js +0 -1
  43. package/src/commons/DateTimeRangeChange/DateTimeButton.js +2 -2
  44. package/src/commons/Device/ConnectedViewHeader.js +2 -2
  45. package/src/commons/Device/DisconnectedView.js +2 -2
  46. package/src/commons/Device/Emergency/EmergencyDetail.js +3 -3
  47. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +2 -2
  48. package/src/commons/Device/FlatListItems.js +3 -3
  49. package/src/commons/Device/Hanet/ItemHanetDevice.js +3 -3
  50. package/src/commons/Device/Hanet/ItemHanetDevice.test.js +3 -11
  51. package/src/commons/Device/HorizontalBarChart.js +1 -1
  52. package/src/commons/Device/ItemAddNew/index.js +2 -2
  53. package/src/commons/Device/ItemDevice.js +2 -2
  54. package/src/commons/Device/PowerConsumptionChart.js +154 -0
  55. package/src/commons/Device/SonosSpeaker/index.js +3 -3
  56. package/src/commons/Device/WaterPurifierStatus/AlertStatusMachine.js +2 -2
  57. package/src/commons/Device/WaterQualitySensor/QualityIndicatorsItem.js +2 -6
  58. package/src/commons/DisplayChecking/index.js +2 -2
  59. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -2
  60. package/src/commons/EmergencyButton/AlertSent.js +2 -2
  61. package/src/commons/FieldTemplate/ChooseUserField/index.js +2 -2
  62. package/src/commons/Form/CurrencyInput.js +1 -15
  63. package/src/commons/Header/HeaderCustom.js +3 -3
  64. package/src/commons/HeaderAni/index.js +2 -2
  65. package/src/commons/IconComponent/index.js +3 -3
  66. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +1 -1
  67. package/src/commons/MenuActionList/__test__/MenuActionList.test.js +1 -0
  68. package/src/commons/NavBar/index.js +2 -2
  69. package/src/commons/OneTapTemplate/NumberUpDownActionTemplate.js +3 -3
  70. package/src/commons/PreventAccess/__test__/PreventAccess.test.js +1 -13
  71. package/src/commons/Processing/__test__/Connecting.test.js +3 -14
  72. package/src/commons/SearchLocation/index.js +2 -2
  73. package/src/commons/SelectActionCard/index.js +2 -2
  74. package/src/commons/SelectSubUnit/__test__/SelectSubUnit.test.js +1 -18
  75. package/src/commons/SelectSubUnit/index.js +2 -2
  76. package/src/commons/SelectUnit/__test__/SelectUnit.test.js +1 -13
  77. package/src/commons/Sharing/BtnRemoveMember.js +2 -2
  78. package/src/commons/Sharing/StationDevicePermissions.js +2 -2
  79. package/src/commons/Sharing/WrapHeaderScrollable.js +1 -1
  80. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +1 -1
  81. package/src/commons/SubUnit/DeviceTemplate/ConfigAndEvaluation/ConfigAndEvaluation.js +2 -2
  82. package/src/commons/SubUnit/DeviceTemplate/ConfigValue/ConfigValue.js +2 -2
  83. package/src/commons/SubUnit/DeviceTemplate/EvaluationOverConfig/EvaluationOverConfig.js +2 -2
  84. package/src/commons/SubUnit/Item/index.js +2 -2
  85. package/src/commons/SubUnit/OneTap/ItemOneTap.js +2 -2
  86. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +11 -8
  87. package/src/commons/SubUnit/__test__/Favorites.test.js +1 -13
  88. package/src/commons/SubUnit/__test__/ShortDetail.test.js +5 -16
  89. package/src/commons/Tabbar/__test__/index.test.js +0 -11
  90. package/src/commons/Unit/HeaderUnit/index.js +4 -4
  91. package/src/commons/Unit/SharedUnit.js +5 -5
  92. package/src/commons/Unit/__test__/HeaderUnit.test.js +3 -15
  93. package/src/commons/Unit/__test__/SharedUnit.test.js +94 -105
  94. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +11 -30
  95. package/src/commons/UnitSummary/ConfigHistoryChart/index.js +6 -61
  96. package/src/commons/Widgets/IFrame/IFrame.js +54 -0
  97. package/src/commons/Widgets/IFrame/IFrameStyles.js +35 -0
  98. package/src/commons/Widgets/IFrame/__tests__/IFrame.test.js +74 -0
  99. package/src/commons/Widgets/IFrame/index.js +0 -0
  100. package/src/commons/Widgets/IFrameWithConfig/IFrameWithConfig.js +163 -0
  101. package/src/commons/Widgets/IFrameWithConfig/IFrameWithConfigStyles.js +9 -0
  102. package/src/commons/Widgets/IFrameWithConfig/__tests__/IFrameWithConfig.test.js +284 -0
  103. package/src/commons/Widgets/IFrameWithConfig/index.js +0 -0
  104. package/src/commons/Widgets/Widget.js +0 -0
  105. package/src/commons/Widgets/index.js +0 -0
  106. package/src/configs/Constants.js +5 -0
  107. package/src/hooks/Common/__test__/useAndroidTranslucentStatusBar.test.js +4 -15
  108. package/src/hooks/Common/useDevicesStatus.js +23 -23
  109. package/src/hooks/IoT/__test__/useRemoteControl.test.js +1 -1
  110. package/src/hooks/IoT/__test__/useWatchConfigs.test.js +0 -7
  111. package/src/iot/RemoteControl/HomeAssistant.js +1 -1
  112. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +234 -232
  113. package/src/navigations/AutomateStack.js +2 -2
  114. package/src/navigations/EmergencyContactsStack.js +2 -2
  115. package/src/navigations/SharedStack.js +2 -2
  116. package/src/navigations/UnitStack.js +2 -2
  117. package/src/screens/ActivityLog/hooks/index.js +7 -4
  118. package/src/screens/ActivityLog/index.js +2 -2
  119. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +4 -21
  120. package/src/screens/AddCommon/__test__/SelectUnit.test.js +7 -19
  121. package/src/screens/AddLocationMaps/__test__/index.test.js +3 -13
  122. package/src/screens/AddLocationMaps/index.js +4 -4
  123. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +3 -20
  124. package/src/screens/AddNewGateway/PlugAndPlay/__test__/FirstWarning.test.js +11 -18
  125. package/src/screens/AddNewGateway/PlugAndPlay/__test__/ZigbeeDeviceConnectGuide.test.js +4 -21
  126. package/src/screens/AddNewGateway/RenameNewDevices.js +2 -2
  127. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +3 -3
  128. package/src/screens/AddNewGateway/__test__/ConnectingModbusDevice.test.js +0 -17
  129. package/src/screens/AddNewGateway/__test__/ConnectingWifiDevice.test.js +4 -19
  130. package/src/screens/AddNewGateway/__test__/ConnectingWifiGuide.test.js +3 -15
  131. package/src/screens/AddNewGateway/__test__/ConnectingZigbeeDevice.test.js +31 -51
  132. package/src/screens/AddNewGateway/__test__/RenameNewDevices.test.js +9 -22
  133. package/src/screens/AddNewGateway/__test__/ScanGatewayQR.test.js +12 -19
  134. package/src/screens/AddNewGateway/__test__/ScanModbusQR.test.js +6 -16
  135. package/src/screens/AddNewGateway/__test__/ScanWifiDeviceQR.test.js +4 -15
  136. package/src/screens/AddNewGateway/__test__/SelectDeviceSubUnit.test.js +3 -3
  137. package/src/screens/AddNewGateway/__test__/SelectDeviceType.test.js +18 -10
  138. package/src/screens/AddNewGateway/__test__/SelectDeviceUnit.test.js +1 -1
  139. package/src/screens/AddNewGateway/__test__/SelectModbusGateway.test.js +12 -9
  140. package/src/screens/AddNewGateway/__test__/SelectZigbeeGateway.test.js +12 -9
  141. package/src/screens/AddNewGateway/__test__/ShareWifiPassword.test.js +7 -21
  142. package/src/screens/AddNewGateway/hooks/__Tests__/index.test.js +1 -10
  143. package/src/screens/AllGateway/DetailConfigActionInternal/__test__/index.test.js +0 -20
  144. package/src/screens/AllGateway/DetailConfigActionModbus/__test__/index.test.js +7 -24
  145. package/src/screens/AllGateway/DeviceGatewayInfo/__test__/index.test.js +0 -17
  146. package/src/screens/AllGateway/DeviceInternalDetail/__test__/index.test.js +84 -100
  147. package/src/screens/AllGateway/DeviceModbusDetail/__test__/index.test.js +64 -82
  148. package/src/screens/AllGateway/DeviceZigbeeDetail/__test__/index.test.js +36 -55
  149. package/src/screens/AllGateway/GatewayConnectionMethods/__test__/index.test.js +9 -18
  150. package/src/screens/AllGateway/GatewayDetail/__test__/index.test.js +10 -37
  151. package/src/screens/AllGateway/GatewayInfo/__test__/index.test.js +7 -32
  152. package/src/screens/AllGateway/__test__/index.test.js +1 -14
  153. package/src/screens/AllGateway/components/GatewayItem/__test__/index.test.js +0 -12
  154. package/src/screens/AllGateway/components/TabPaneCT/__test__/index.test.js +1 -13
  155. package/src/screens/AllGateway/components/TabPaneCT/index.js +1 -1
  156. package/src/screens/AllGateway/hooks/__test__/index.test.js +1 -8
  157. package/src/screens/AllGateway/test-utils.js +1 -1
  158. package/src/screens/Automate/AddNewAction/NewActionWrapper.js +2 -2
  159. package/src/screens/Automate/AddNewAction/SetupConfigCondition.js +27 -28
  160. package/src/screens/Automate/AddNewAction/__test__/ChooseAction.test.js +3 -3
  161. package/src/screens/Automate/AddNewAction/__test__/ChooseConfig.test.js +8 -5
  162. package/src/screens/Automate/AddNewAction/__test__/SelectControlDevices.test.js +2 -2
  163. package/src/screens/Automate/AddNewAction/__test__/SelectMonitorDevices.test.js +1 -18
  164. package/src/screens/Automate/AddNewAction/__test__/SetupConfigCondition.test.js +17 -15
  165. package/src/screens/Automate/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +4 -4
  166. package/src/screens/Automate/EditActionsList/__tests__/UpdateActionScript.test.js +38 -55
  167. package/src/screens/Automate/EditActionsList/__tests__/UpdateDelayScript.test.js +0 -18
  168. package/src/screens/Automate/EditActionsList/__tests__/UpdateNotifyScript.test.js +1 -19
  169. package/src/screens/Automate/EditActionsList/__tests__/index.test.js +14 -11
  170. package/src/screens/Automate/OneTap/__test__/AddNewOneTap.test.js +3 -3
  171. package/src/screens/Automate/Scenario/__test__/AddNewOneTap.test.js +2 -2
  172. package/src/screens/Automate/ScriptDetail/Components/AddActionScript.js +2 -2
  173. package/src/screens/Automate/ScriptDetail/__test__/index.test.js +33 -25
  174. package/src/screens/Automate/ScriptDetail/index.js +5 -6
  175. package/src/screens/Automate/SetSchedule/__test__/index.test.js +4 -4
  176. package/src/screens/Automate/SetSchedule/components/RowItem.js +3 -3
  177. package/src/screens/Automate/__test__/MultiUnits.test.js +5 -5
  178. package/src/screens/Automate/__test__/index.test.js +6 -6
  179. package/src/screens/Automate/index.js +2 -2
  180. package/src/screens/ChangePosition/__test__/index.test.js +1 -14
  181. package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +0 -12
  182. package/src/screens/Device/EditDevice/__test__/EditDevice.test.js +1 -11
  183. package/src/screens/Device/EditDevice/index.js +2 -2
  184. package/src/screens/Device/__test__/detail.test.js +11 -11
  185. package/src/screens/Device/__test__/sensorDisplayItem.test.js +3 -15
  186. package/src/screens/Device/components/SensorDisplayItem.js +23 -5
  187. package/src/screens/Device/components/__test__/VisualChart.test.js +2 -9
  188. package/src/screens/Device/detail.js +11 -10
  189. package/src/screens/Drawer/Drawer.test.js +3 -11
  190. package/src/screens/Drawer/index.js +3 -4
  191. package/src/screens/EmergencyContacts/EmergencyContactsList.js +4 -8
  192. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +3 -3
  193. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +4 -17
  194. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +3 -14
  195. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +0 -10
  196. package/src/screens/EmergencySetting/components/DropDownItem.js +2 -2
  197. package/src/screens/EnterPassword/__test__/EnterPassword.test.js +4 -17
  198. package/src/screens/GuestInfo/__test__/index.test.js +0 -11
  199. package/src/screens/GuestInfo/components/RowGuestInfo.js +2 -2
  200. package/src/screens/GuestInfo/index.js +2 -2
  201. package/src/screens/HanetCamera/Detail.js +2 -2
  202. package/src/screens/HanetCamera/ManageAccess.js +3 -4
  203. package/src/screens/HanetCamera/MemberInfo.js +4 -4
  204. package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +2 -16
  205. package/src/screens/HanetCamera/__test__/Detail.test.js +1 -12
  206. package/src/screens/HanetCamera/__test__/ManageAccess.test.js +5 -16
  207. package/src/screens/HanetCamera/__test__/MemberInfo.test.js +5 -18
  208. package/src/screens/HanetCamera/components/RequestFaceIDPopup.js +2 -2
  209. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +3 -19
  210. package/src/screens/ManageAccess/index.js +3 -3
  211. package/src/screens/MoveToAnotherSubUnit/__test__/index.test.js +5 -5
  212. package/src/screens/Notification/__test__/NotificationItem.test.js +9 -19
  213. package/src/screens/Notification/index.js +3 -3
  214. package/src/screens/PlayBackCamera/Styles/index.js +2 -4
  215. package/src/screens/PlayBackCamera/Timer.js +65 -47
  216. package/src/screens/PlayBackCamera/__test__/index.test.js +32 -33
  217. package/src/screens/PlayBackCamera/index.js +115 -112
  218. package/src/screens/ScanChipQR/components/QRScan/__test__/QRScan.test.js +0 -11
  219. package/src/screens/ScanChipQR/components/QRScan/index.js +3 -3
  220. package/src/screens/SelectUnit/__test__/index.test.js +1 -21
  221. package/src/screens/SelectUnit/index.js +2 -2
  222. package/src/screens/SharedUnit/TabHeader.js +2 -2
  223. package/src/screens/Sharing/Components/EndDevice.js +3 -3
  224. package/src/screens/Sharing/UnitMemberList.js +2 -2
  225. package/src/screens/Sharing/__test__/InfoMemberUnit.test.js +9 -4
  226. package/src/screens/Sharing/__test__/SelectShareDevice.test.js +2 -15
  227. package/src/screens/Sharing/__test__/SelectUser.test.js +2 -22
  228. package/src/screens/Sharing/__test__/UnitMemberList.test.js +2 -2
  229. package/src/screens/Sharing/__test__/UpdateShareDevice.test.js +4 -17
  230. package/src/screens/Sharing/hooks/__test__/index.test.js +2 -13
  231. package/src/screens/SmartAccount/Connecting/index.js +0 -2
  232. package/src/screens/SmartAccount/ListDevice/__test__/ListDevice.test.js +3 -18
  233. package/src/screens/SmartAccount/SuccessfullyConnected/__test__/SuccessfullyConnected.test.js +11 -21
  234. package/src/screens/SmartAccount/SuccessfullyConnected/index.js +3 -4
  235. package/src/screens/SmartAccount/__test__/Connecting.test.js +30 -36
  236. package/src/screens/SmartAccount/__test__/SmartAccount.test.js +12 -21
  237. package/src/screens/SmartIr/__test__/GroupButtonByType.test.js +7 -17
  238. package/src/screens/SmartIr/__test__/SelectBrand.test.js +1 -11
  239. package/src/screens/SmartIr/__test__/SelectDeviceType.test.js +1 -12
  240. package/src/screens/SmartIr/__test__/SmartIr.test.js +3 -11
  241. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +3 -3
  242. package/src/screens/SmartIr/components/SelectBrand.js +2 -2
  243. package/src/screens/SubUnit/AddSubUnit.js +1 -0
  244. package/src/screens/SubUnit/EditSubUnit.js +3 -2
  245. package/src/screens/SubUnit/ManageSubUnit.js +4 -5
  246. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +9 -31
  247. package/src/screens/SubUnit/__test__/Detail.test.js +4 -28
  248. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +12 -30
  249. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +2 -2
  250. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +0 -12
  251. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +7 -20
  252. package/src/screens/Template/__test__/EditTemplate.test.js +2 -13
  253. package/src/screens/Template/__test__/GatewayList.test.js +0 -9
  254. package/src/screens/Template/__test__/detail.test.js +4 -4
  255. package/src/screens/Template/__test__/index.test.js +1 -12
  256. package/src/screens/Template/detail.js +2 -2
  257. package/src/screens/Unit/SelectAddToFavorites.js +2 -2
  258. package/src/screens/Unit/SelectAddress.js +4 -4
  259. package/src/screens/Unit/SmartAccountItem.js +2 -2
  260. package/src/screens/Unit/Summaries.js +3 -2
  261. package/src/screens/Unit/__test__/AddMenu.test.js +5 -2
  262. package/src/screens/Unit/__test__/CheckSendEmail.test.js +0 -12
  263. package/src/screens/Unit/__test__/ChooseLocation.test.js +1 -4
  264. package/src/screens/Unit/__test__/Detail.test.js +5 -5
  265. package/src/screens/Unit/__test__/ManageUnit.test.js +2 -17
  266. package/src/screens/Unit/__test__/MoreMenu.test.js +1 -11
  267. package/src/screens/Unit/__test__/SelectAddToFavorites.test.js +3 -14
  268. package/src/screens/Unit/__test__/SelectAddress.test.js +4 -17
  269. package/src/screens/Unit/__test__/SmartAccount.test.js +14 -11
  270. package/src/screens/Unit/__test__/SmartAccountItem.test.js +0 -11
  271. package/src/screens/Unit/__test__/Summaries.test.js +2 -14
  272. package/src/screens/Unit/components/AutomateScript/index.js +2 -2
  273. package/src/screens/Unit/components/ButtonWrapper/index.js +3 -4
  274. package/src/screens/Unit/components/Header/index.js +3 -3
  275. package/src/screens/Unit/components/SharedUnit/index.js +5 -5
  276. package/src/screens/Unit/components/__test__/Header.test.js +1 -14
  277. package/src/screens/Unit/components/__test__/MyUnitDevice.test.js +1 -11
  278. package/src/screens/Unit/components/__test__/SharedUnit.test.js +1 -11
  279. package/src/screens/UnitSummary/__test__/index.test.js +51 -17
  280. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +0 -12
  281. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +10 -23
  282. package/src/screens/UnitSummary/components/AirQuality/__test__/index.test.js +1 -7
  283. package/src/screens/UnitSummary/components/AirQuality/index.js +3 -3
  284. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +38 -14
  285. package/src/screens/UnitSummary/components/PowerConsumption/index.js +21 -30
  286. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +1 -16
  287. package/src/screens/UnitSummary/components/Temperature/index.js +5 -1
  288. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +0 -8
  289. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -2
  290. package/src/screens/UnitSummary/components/WaterQuality/Item/index.js +2 -2
  291. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +14 -18
  292. package/src/screens/UnitSummary/index.js +4 -8
  293. package/src/utils/Converter/__test__/timer.test.js +8 -0
  294. package/src/utils/Functions/preloadImages.js +13 -14
  295. package/src/utils/Monitor.js +4 -4
  296. package/src/utils/Storage.js +1 -1
  297. package/src/commons/Device/HistoryChart.js +0 -225
  298. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +0 -48
  299. package/src/commons/Device/WindSpeed/LinearChart/index.js +0 -155
  300. package/src/commons/UnitSummary/ConfigHistoryChart/__test__/ConfigHistoryChart.test.js +0 -289
  301. package/src/screens/Device/__test__/DetailHistoryChart.test.js +0 -69
  302. package/src/screens/Device/components/DetailHistoryChart.js +0 -118
  303. package/src/screens/UnitSummary/components/Temperature/ChartAverage/index.js +0 -62
  304. package/src/screens/UnitSummary/components/Temperature/__test__/ChartAverage.test.js +0 -17
  305. package/src/utils/dateHelper/getTickValues.js +0 -22
@@ -1,12 +1,15 @@
1
- import React, { useEffect, useMemo, useRef, useState } from 'react';
1
+ import React, {
2
+ useEffect,
3
+ useMemo,
4
+ useRef,
5
+ useState,
6
+ useCallback,
7
+ } from 'react';
2
8
  import { View, Animated } from 'react-native';
3
9
  import { Constants, Colors } from '../../configs';
4
10
  import Text from '../../commons/Text';
5
11
  import styles from './Styles/TimerStyles';
6
12
 
7
- let time = -1;
8
- let isFirstTime = true;
9
-
10
13
  const Timer = ({
11
14
  width = Constants.width,
12
15
  onChangeValue,
@@ -29,70 +32,91 @@ const Timer = ({
29
32
  }) => {
30
33
  const scrollViewRef = useRef();
31
34
  const [scrollX] = useState(new Animated.Value(0));
35
+ const isFirstTime = useRef(true); // Use useRef to track the first render
32
36
 
33
- const snapSegment = segmentWidth + segmentSpacing;
34
- const spacerWidth = (width - segmentWidth) / 2;
35
- const timerWidth = width - segmentWidth + (maximum - minimum) * snapSegment;
37
+ const snapSegment = useMemo(
38
+ () => segmentWidth + segmentSpacing,
39
+ [segmentWidth, segmentSpacing]
40
+ );
41
+ const spacerWidth = useMemo(
42
+ () => (width - segmentWidth) / 2,
43
+ [width, segmentWidth]
44
+ );
45
+ const timerWidth = useMemo(
46
+ () => width - segmentWidth + (maximum - minimum) * snapSegment,
47
+ [width, segmentWidth, maximum, minimum, snapSegment]
48
+ );
36
49
 
37
50
  const renderTime = useMemo(() => {
51
+ let time = -1;
38
52
  const data = [...Array(maximum - minimum + 1).keys()].map(
39
53
  (i) => i + minimum
40
54
  );
55
+
41
56
  return (
42
57
  <View style={[styles.wrap, { width: timerWidth + segmentWidth }]}>
43
- <View
44
- style={{
45
- width: spacerWidth,
46
- }}
47
- />
48
- {data.map((i, index) => {
58
+ <View style={{ width: spacerWidth }} />
59
+ {data.map((i) => {
60
+ const isStep = i % step === 0;
61
+ if (isStep) {
62
+ time += 1;
63
+ }
49
64
  return (
50
65
  <View key={i}>
51
66
  <View
52
67
  style={{
53
- backgroundColor: i % step === 0 ? stepColor : normalColor,
54
- height: i % step === 0 ? stepHeight : normalHeight,
68
+ backgroundColor: isStep ? stepColor : normalColor,
69
+ height: isStep ? stepHeight : normalHeight,
55
70
  width: segmentWidth,
56
71
  marginRight: segmentSpacing,
57
72
  }}
58
73
  />
59
- {i % step === 0 && (
60
- <Text type="Label" color={Colors.Gray7} style={styles.time}>{`${
61
- time < 9 ? '0' + ++time : ++time
62
- }:00`}</Text>
74
+ {isStep && (
75
+ <Text type="Label" color={Colors.Gray7} style={styles.time}>
76
+ {`${time < 9 ? '0' + time : time}:00`}
77
+ </Text>
63
78
  )}
64
79
  </View>
65
80
  );
66
81
  })}
67
82
  </View>
68
83
  );
69
- // eslint-disable-next-line react-hooks/exhaustive-deps
70
- }, []);
84
+ }, [
85
+ maximum,
86
+ minimum,
87
+ step,
88
+ stepColor,
89
+ normalColor,
90
+ stepHeight,
91
+ normalHeight,
92
+ segmentWidth,
93
+ segmentSpacing,
94
+ timerWidth,
95
+ spacerWidth,
96
+ ]);
71
97
 
72
98
  useEffect(() => {
73
99
  const scrollListener = scrollX.addListener(({ value: timeValue }) => {
74
- !isFirstTime && onChangeValue && onChangeValue(timeValue, selected);
100
+ if (!isFirstTime.current) {
101
+ onChangeValue(timeValue, selected);
102
+ }
75
103
  });
104
+
76
105
  return () => scrollX.removeListener(scrollListener);
77
- // eslint-disable-next-line react-hooks/exhaustive-deps
78
- }, [isFirstTime, selected]);
106
+ }, [scrollX, onChangeValue, selected]);
79
107
 
80
108
  useEffect(() => {
81
- return () => {
82
- time = -1;
83
- isFirstTime = true;
84
- };
85
- }, []);
109
+ const timeoutId = setTimeout(() => {
110
+ if (scrollViewRef.current) {
111
+ scrollViewRef.current.scrollTo({ x: value, animated: false });
112
+ }
113
+ isFirstTime.current = false; // Set to false after initial scroll
114
+ }, 400);
86
115
 
87
- useEffect(() => {
88
- if (isFirstTime) {
89
- const to = setTimeout(() => {
90
- scrollViewRef?.current.scrollTo({ x: value });
91
- clearTimeout(to);
92
- isFirstTime = false;
93
- }, 400);
94
- }
95
- }, [value, scrollViewRef]);
116
+ return () => clearTimeout(timeoutId);
117
+ }, [value]);
118
+
119
+ const handleScrollEndDrag = useCallback(onScrollEndDrag, [onScrollEndDrag]);
96
120
 
97
121
  return (
98
122
  <View>
@@ -104,17 +128,11 @@ const Timer = ({
104
128
  showsHorizontalScrollIndicator={false}
105
129
  scrollEventThrottle={16}
106
130
  onScroll={Animated.event(
107
- [
108
- {
109
- nativeEvent: {
110
- contentOffset: { x: scrollX },
111
- },
112
- },
113
- ],
131
+ [{ nativeEvent: { contentOffset: { x: scrollX } } }],
114
132
  { useNativeDriver: true }
115
133
  )}
116
- onScrollEndDrag={onScrollEndDrag}
117
- onMomentumScrollEnd={onScrollEndDrag}
134
+ onScrollEndDrag={handleScrollEndDrag}
135
+ onMomentumScrollEnd={handleScrollEndDrag}
118
136
  >
119
137
  {renderTime}
120
138
  </Animated.ScrollView>
@@ -5,7 +5,6 @@ import { Calendar } from 'react-native-calendars';
5
5
 
6
6
  import { act, create } from 'react-test-renderer';
7
7
  import PlayBackCamera from '..';
8
- import { ModalCustom } from '../../../commons/Modal';
9
8
  import Text from '../../../commons/Text';
10
9
  import { AccessibilityLabel } from '../../../configs/Constants';
11
10
  import { SCProvider } from '../../../context';
@@ -13,21 +12,6 @@ import { mockSCStore } from '../../../context/mockStore';
13
12
  import MediaPlayerFull from '../../../commons/MediaPlayerDetail/MediaPlayerFull';
14
13
  import Timer from '../Timer';
15
14
 
16
- jest.mock('@react-navigation/native', () => {
17
- return {
18
- ...jest.requireActual('@react-navigation/native'),
19
- useNavigation: () => ({
20
- goBack: jest.fn(),
21
- }),
22
- useRoute: jest.fn().mockReturnValue({
23
- params: {
24
- item: {},
25
- thumbnail: {},
26
- },
27
- }),
28
- };
29
- });
30
-
31
15
  const wrapComponent = () => (
32
16
  <SCProvider initState={mockSCStore({})}>
33
17
  <PlayBackCamera />
@@ -37,29 +21,45 @@ const wrapComponent = () => (
37
21
  describe('Test PlayBackCamera', () => {
38
22
  let tree;
39
23
  jest.useFakeTimers();
24
+ global.mockedUseRoute.mockReturnValue({
25
+ params: {
26
+ item: {
27
+ configuration: {
28
+ time_zone: 0,
29
+ playback: '',
30
+ name: 'name',
31
+ uri: '',
32
+ },
33
+ },
34
+ thumbnail: {},
35
+ },
36
+ });
40
37
 
41
38
  it('Test render', async () => {
42
39
  await act(async () => {
43
40
  tree = await create(wrapComponent());
44
41
  });
45
42
  const instance = tree.root;
46
- const HeaderCustoms = instance.findAllByType(ModalCustom);
47
- expect(HeaderCustoms).toHaveLength(2);
48
- const textOpenModal = instance.findAll(
43
+
44
+ const textOpenModal = instance.find(
49
45
  (el) =>
50
46
  el.props.accessibilityLabel === AccessibilityLabel.OPEN_DATE_MODAL &&
51
- el.type === Text
47
+ el.type === TouchableOpacity
52
48
  );
53
49
 
54
50
  await act(async () => {
55
- textOpenModal[0].props.onPress();
51
+ textOpenModal.props.onPress();
56
52
  });
57
53
 
58
54
  const texts = instance.findAllByType(Text);
59
55
  await act(async () => {
60
56
  texts[0].props.onPress();
61
57
  });
62
- expect(HeaderCustoms[0].props.isVisible).toBeTruthy();
58
+
59
+ let modalCustom = instance.find(
60
+ (el) => el.props.accessibilityLabel === AccessibilityLabel.MODAL_CUSTOM
61
+ );
62
+ expect(modalCustom.props.isVisible).toBeTruthy();
63
63
 
64
64
  const Calendars = instance.findAllByType(Calendar);
65
65
  expect(Calendars).toHaveLength(1);
@@ -69,27 +69,26 @@ describe('Test PlayBackCamera', () => {
69
69
 
70
70
  expect(texts[0].props.children).toEqual('01/07/2022');
71
71
 
72
- const buttonCancel = instance.findAll(
72
+ const buttonCancel = instance.find(
73
73
  (el) =>
74
74
  el.props.accessibilityLabel === AccessibilityLabel.ON_PRESS_CANCEL &&
75
75
  el.type === TouchableOpacity
76
76
  );
77
77
  await act(async () => {
78
- buttonCancel[0].props.onPress();
78
+ buttonCancel.props.onPress();
79
79
  });
80
- expect(HeaderCustoms[0].props.isVisible).toBeFalsy();
80
+
81
81
  const todayStr = moment().format('DD/MM/YYYY');
82
82
  expect(texts[0].props.children).toEqual(todayStr);
83
83
 
84
- const buttonOK = instance.findAll(
84
+ const buttonOK = instance.find(
85
85
  (el) =>
86
86
  el.props.accessibilityLabel === AccessibilityLabel.ON_PRESS_OK &&
87
87
  el.type === TouchableOpacity
88
88
  );
89
89
  await act(async () => {
90
- buttonOK[0].props.onPress();
90
+ buttonOK.props.onPress();
91
91
  });
92
- expect(HeaderCustoms[0].props.isVisible).toBeFalsy();
93
92
 
94
93
  const buttonAddDate = instance.findAll(
95
94
  (el) =>
@@ -100,7 +99,9 @@ describe('Test PlayBackCamera', () => {
100
99
  await act(async () => {
101
100
  await buttonAddDate[0].props.onPress();
102
101
  });
103
- expect(texts[0].props.children).toEqual(todayStr);
102
+ expect(texts[0].props.children).toEqual(
103
+ moment().add(1, 'days').format('DD/MM/YYYY')
104
+ );
104
105
 
105
106
  const buttonSubDate = instance.findAll(
106
107
  (el) =>
@@ -112,9 +113,7 @@ describe('Test PlayBackCamera', () => {
112
113
  await buttonSubDate[0].props.onPress();
113
114
  });
114
115
 
115
- expect(texts[0].props.children).toEqual(
116
- moment().subtract(1, 'days').format('DD/MM/YYYY')
117
- );
116
+ expect(texts[0].props.children).toEqual(moment().format('DD/MM/YYYY'));
118
117
  // todo Bang add timer test later
119
118
  const timerScroll = instance.findAllByType(Animated.ScrollView);
120
119
  const timer = instance.findAllByType(Timer);
@@ -148,7 +147,7 @@ describe('Test PlayBackCamera', () => {
148
147
  });
149
148
  const media = instance.findByType(MediaPlayerFull);
150
149
  expect(media.props.uri).toEqual(
151
- `=${moment().subtract(1, 'days').format('YYYYMMDDT003730\\Z')}`
150
+ `=${moment().format('YYYYMMDDT003730\\Z')}`
152
151
  );
153
152
  });
154
153
  });
@@ -1,5 +1,11 @@
1
1
  import moment from 'moment';
2
- import React, { useState, useCallback, useEffect, useMemo } from 'react';
2
+ import React, {
3
+ useState,
4
+ useCallback,
5
+ useEffect,
6
+ useMemo,
7
+ useRef,
8
+ } from 'react';
3
9
  import { View, Image, TouchableOpacity } from 'react-native';
4
10
  import { Calendar } from 'react-native-calendars';
5
11
 
@@ -15,75 +21,83 @@ import { setStatusBarPreview } from '../../hooks/Common/useStatusBar';
15
21
  import MediaPlayerFull from '../../commons/MediaPlayerDetail/MediaPlayerFull';
16
22
  import { DATE_TIME_FORMAT, AccessibilityLabel } from '../../configs/Constants';
17
23
 
18
- let dateTemp = moment().format(DATE_TIME_FORMAT.YMD);
19
- let isFirstTime = true;
20
-
21
24
  const PlayBackCamera = () => {
22
- const now = useMemo(() => moment().format(DATE_TIME_FORMAT.YMD), []);
23
- const hourTemp = useMemo(() => moment().format('HH:mm:ss'), []);
24
- const arrHourTemp = useMemo(() => hourTemp.split(':'), [hourTemp]);
25
25
  const t = useTranslations();
26
26
  const { params = {} } = useRoute();
27
- const { item = {}, thumbnail } = params;
28
- const [selected, setSelected] = useState(dateTemp);
27
+ const { item, thumbnail } = params;
28
+ const { configuration } = item;
29
+ const { time_zone, playback, name, uri } = configuration;
30
+
31
+ const initialDate = useMemo(() => moment().format(DATE_TIME_FORMAT.YMD), []);
32
+ const initialHour = useMemo(() => moment().format('HH:mm:ss').split(':'), []);
33
+
34
+ const [selected, setSelected] = useState(initialDate);
29
35
  const [isShowDate, setIsShowDate] = useState(false);
30
36
  const [hour, setHour] = useState({
31
- h: arrHourTemp[0],
32
- m: arrHourTemp[1],
33
- s: arrHourTemp[2],
37
+ h: initialHour[0],
38
+ m: initialHour[1],
39
+ s: initialHour[2],
34
40
  });
35
- const [uri, setUri] = useState(item?.configuration?.uri);
36
- const [mainURI, setMainURI] = useState(uri);
41
+ const [uriCamera, setUriCamera] = useState(uri);
37
42
  const [paused, setPaused] = useState(false);
43
+ const isFirstTime = useRef(true); // Use useRef to track the first render
44
+ const tempDate = useRef(initialDate);
45
+
38
46
  const onOpenDateModal = useCallback(() => {
47
+ tempDate.current = selected;
39
48
  setIsShowDate(true);
40
- }, []);
49
+ }, [selected, setIsShowDate]);
41
50
 
42
51
  const onPressCancel = useCallback(() => {
43
52
  setIsShowDate(false);
44
- setSelected(dateTemp);
45
- }, []);
53
+ setSelected(tempDate.current);
54
+ }, [setIsShowDate]);
55
+
56
+ const updateCameraPlayback = useCallback(
57
+ async (selectedTime) => {
58
+ setPaused(true);
59
+ await setUriPlayBack(selectedTime, hour);
60
+ setPaused(false);
61
+ },
62
+ [hour, setUriPlayBack]
63
+ );
46
64
 
47
65
  const onPressOk = useCallback(() => {
48
66
  setIsShowDate(false);
49
- dateTemp = selected;
50
- }, [selected]);
67
+ updateCameraPlayback(selected);
68
+ }, [selected, setIsShowDate, updateCameraPlayback]);
51
69
 
52
70
  const onAddDate = useCallback(() => {
53
- setPaused(true);
54
- if (selected !== now) {
55
- const date = moment(selected).add(1, 'days').format(DATE_TIME_FORMAT.YMD);
56
- setSelected(date);
57
- dateTemp = date;
58
- }
59
- }, [selected, now]);
71
+ const nextDate = moment(selected)
72
+ .add(1, 'days')
73
+ .format(DATE_TIME_FORMAT.YMD);
74
+ setSelected(nextDate);
75
+ updateCameraPlayback(nextDate);
76
+ }, [selected, updateCameraPlayback]);
60
77
 
61
78
  const onSubtractDate = useCallback(() => {
62
- setPaused(true);
63
- const date = moment(selected)
79
+ const prevDate = moment(selected)
64
80
  .subtract(1, 'days')
65
81
  .format(DATE_TIME_FORMAT.YMD);
66
- setSelected(date);
67
- dateTemp = date;
68
- }, [selected]);
82
+ setSelected(prevDate);
83
+ updateCameraPlayback(prevDate);
84
+ }, [selected, updateCameraPlayback]);
69
85
 
70
86
  const getHourWithTimeZone = useCallback(
71
- // eslint-disable-next-line no-shadow
72
- (hour) => {
87
+ (_hour) => {
73
88
  const hourWithTimezone =
74
- parseInt(hour, 10) + parseInt(item?.configuration?.time_zone || 0, 10);
89
+ parseInt(_hour, 10) + parseInt(time_zone || 0, 10);
75
90
  if (hourWithTimezone < 0 || hourWithTimezone > 9) {
76
91
  return hourWithTimezone;
77
92
  }
78
93
  return '0' + hourWithTimezone;
79
94
  },
80
- [item?.configuration?.time_zone]
95
+ [time_zone]
81
96
  );
82
97
 
83
98
  const onScrollEndDrag = useCallback(() => {
84
- setMainURI(uri);
85
99
  setPaused(false);
86
- }, [uri]);
100
+ }, []);
87
101
 
88
102
  const onDayPress = useCallback((day) => {
89
103
  setPaused(true);
@@ -99,13 +113,37 @@ const PlayBackCamera = () => {
99
113
  addMonth && addMonth();
100
114
  }, []);
101
115
 
116
+ const setUriPlayBack = useCallback(
117
+ (selectedTime, time) => {
118
+ const currentTime = moment().valueOf();
119
+ const selectedDayTime = moment(
120
+ `${selectedTime} ${time.h}:${time.m}:${time.s}`,
121
+ 'YYYY-MM-DD HH:mm:SS'
122
+ ).valueOf();
123
+
124
+ if (selectedDayTime > currentTime) {
125
+ setUriCamera(uri);
126
+ } else {
127
+ if (playback.includes('chID')) {
128
+ setUriCamera(
129
+ `${playback}&date=${selectedTime}&time=${time.h}:${time.m}:${time.s}&timelen=100&StreamType=main`
130
+ );
131
+ } else {
132
+ const date = selectedTime.split('-');
133
+ setUriCamera(
134
+ `${playback.split('=')[0]}=${date[0]}${date[1]}${
135
+ date[2]
136
+ }T${getHourWithTimeZone(time.h)}${time.m}${time.s}Z`
137
+ );
138
+ }
139
+ }
140
+ },
141
+ [getHourWithTimeZone, playback, uri]
142
+ );
143
+
102
144
  const onChangeValue = useCallback(
103
145
  (value, selectedTime) => {
104
- if (!isFirstTime) {
105
- const currentTime =
106
- parseFloat(arrHourTemp[0]) +
107
- parseFloat(arrHourTemp[1] / 60) +
108
- parseFloat(arrHourTemp[2] / 3600);
146
+ if (!isFirstTime.current) {
109
147
  setPaused(true);
110
148
  const t1 = value / 96;
111
149
  const t2 = t1.toString().split('.');
@@ -115,62 +153,23 @@ const PlayBackCamera = () => {
115
153
  const h = t2[0] < 10 ? '0' + t2[0] : t2[0];
116
154
  const m = t4[0] < 10 ? '0' + t4[0] : t4[0];
117
155
  const s = t5 < 10 ? '0' + t5 : t5;
156
+
118
157
  setHour({ h, m, s });
119
- if (value + 0.5 > currentTime * 96 && selectedTime === now) {
120
- setUri(item?.configuration?.uri);
121
- } else {
122
- const playback = item?.configuration?.playback || '';
123
- const date = selectedTime.split('-');
124
- setUri(
125
- `${playback.split('=')[0]}=${date[0]}${date[1]}${
126
- date[2]
127
- }T${getHourWithTimeZone(h)}${m}${s}Z`
128
- );
129
- }
158
+ setUriPlayBack(selectedTime, { h, m, s });
130
159
  }
131
160
  },
132
- [
133
- arrHourTemp,
134
- getHourWithTimeZone,
135
- item?.configuration?.playback,
136
- item?.configuration?.uri,
137
- now,
138
- ]
161
+ [setUriPlayBack]
139
162
  );
140
163
 
141
- const renderArrow = useCallback((direction) => {
142
- return (
164
+ const renderArrow = useCallback(
165
+ (direction) => (
143
166
  <Image
144
167
  source={Images.arrowLeft}
145
168
  style={[direction !== 'left' && styles.arrowRight]}
146
169
  />
147
- );
148
- }, []);
149
-
150
- useEffect(() => {
151
- if (!isFirstTime) {
152
- const date = selected.split('-');
153
- const playback = item?.configuration?.playback || '';
154
- if (
155
- selected === now &&
156
- parseInt(moment().format('HH:mm:ss'), 10) <=
157
- parseInt(`${hour.h}:${hour.m}:${hour.s}`, 10)
158
- ) {
159
- setMainURI(item?.configuration?.uri);
160
- } else {
161
- setMainURI(
162
- `${playback.split('=')[0]}=${date[0]}${date[1]}${
163
- date[2]
164
- }T${getHourWithTimeZone(hour.h)}${hour.m}${hour.s}Z`
165
- );
166
- }
167
- const to = setTimeout(() => {
168
- setPaused(false);
169
- clearTimeout(to);
170
- }, 100);
171
- }
172
- // eslint-disable-next-line react-hooks/exhaustive-deps
173
- }, [selected, getHourWithTimeZone]);
170
+ ),
171
+ []
172
+ );
174
173
 
175
174
  useEffect(() => {
176
175
  setStatusBarPreview(
@@ -179,13 +178,13 @@ const PlayBackCamera = () => {
179
178
  }, [isShowDate]);
180
179
 
181
180
  useEffect(() => {
182
- const to = setTimeout(() => {
183
- isFirstTime = false;
184
- clearTimeout(to);
181
+ const timeoutId = setTimeout(() => {
182
+ isFirstTime.current = false;
185
183
  }, 2000);
184
+
186
185
  return () => {
187
- dateTemp = moment().format(DATE_TIME_FORMAT.YMD);
188
- isFirstTime = true;
186
+ isFirstTime.current = true;
187
+ clearTimeout(timeoutId);
189
188
  };
190
189
  }, []);
191
190
 
@@ -193,11 +192,11 @@ const PlayBackCamera = () => {
193
192
  <View style={styles.wrap}>
194
193
  <HeaderCustom title={t('video_detail')} />
195
194
  <MediaPlayerFull
196
- uri={mainURI}
195
+ uri={uriCamera}
197
196
  isPaused={paused}
198
197
  thumbnail={thumbnail}
199
198
  isShowFullScreenIcon
200
- cameraName={item?.configuration?.name}
199
+ cameraName={name}
201
200
  amount={1}
202
201
  />
203
202
  <View style={styles.container}>
@@ -209,19 +208,16 @@ const PlayBackCamera = () => {
209
208
  >
210
209
  <Image source={Images.arrowLeft} />
211
210
  </TouchableOpacity>
212
- <Text
213
- accessibilityLabel={AccessibilityLabel.OPEN_DATE_MODAL}
214
- onPress={onOpenDateModal}
215
- style={styles.textDate}
216
- type="h4"
217
- >
218
- {moment(selected).format('DD/MM/YYYY')}
219
- </Text>
211
+
220
212
  <TouchableOpacity
213
+ accessibilityLabel={AccessibilityLabel.OPEN_DATE_MODAL}
221
214
  onPress={onOpenDateModal}
222
- style={styles.commonButton}
215
+ style={styles.row}
223
216
  >
224
- <Image source={Images.file} style={styles.iconDate} />
217
+ <Text onPress={onOpenDateModal} style={styles.textDate} type="h4">
218
+ {moment(selected).format('DD/MM/YYYY')}
219
+ </Text>
220
+ <Image source={Images.file} />
225
221
  </TouchableOpacity>
226
222
  <TouchableOpacity
227
223
  accessibilityLabel={AccessibilityLabel.ON_PRESS_ADD_DATE}
@@ -238,9 +234,9 @@ const PlayBackCamera = () => {
238
234
  <View style={styles.timer}>
239
235
  <Timer
240
236
  value={
241
- (parseFloat(arrHourTemp[0]) +
242
- parseFloat(arrHourTemp[1] / 60) +
243
- parseFloat(arrHourTemp[2] / 3600)) *
237
+ (parseFloat(initialHour[0]) +
238
+ parseFloat(initialHour[1] / 60) +
239
+ parseFloat(initialHour[2] / 3600)) *
244
240
  96
245
241
  }
246
242
  minimum={0}
@@ -260,11 +256,18 @@ const PlayBackCamera = () => {
260
256
  </View>
261
257
  </View>
262
258
 
263
- <ModalCustom isVisible={isShowDate} style={styles.modal}>
259
+ <ModalCustom
260
+ isVisible={isShowDate}
261
+ style={styles.modal}
262
+ onBackdropPress={() => {
263
+ setIsShowDate(false);
264
+ }}
265
+ accessibilityLabel={AccessibilityLabel.MODAL_CUSTOM}
266
+ >
264
267
  <View style={styles.wrapDate}>
265
268
  <Calendar
266
269
  onDayPress={onDayPress}
267
- maxDate={moment().format(DATE_TIME_FORMAT.YMD)}
270
+ maxDate={initialDate}
268
271
  onPressArrowLeft={onPressArrowLeft}
269
272
  onPressArrowRight={onPressArrowRight}
270
273
  markedDates={{
@@ -275,7 +278,7 @@ const PlayBackCamera = () => {
275
278
  selectedTextColor: Colors.White,
276
279
  },
277
280
  }}
278
- enableSwipeMonths={true}
281
+ enableSwipeMonths
279
282
  renderArrow={renderArrow}
280
283
  headerStyle={styles.headerStyle}
281
284
  />
@@ -6,20 +6,9 @@ import { SCProvider } from '../../../../../context';
6
6
  import { mockSCStore } from '../../../../../context/mockStore';
7
7
  import QRScan from '../index';
8
8
 
9
- const mockedPop = jest.fn();
10
9
  const mockedOnScan = jest.fn();
11
10
  const mockedSetLoading = jest.fn();
12
11
 
13
- jest.mock('@react-navigation/native', () => {
14
- return {
15
- ...jest.requireActual('@react-navigation/native'),
16
- useNavigation: () => ({
17
- pop: mockedPop,
18
- }),
19
- useIsFocused: jest.fn(),
20
- };
21
- });
22
-
23
12
  const wrapComponent = (data) => (
24
13
  <SCProvider initState={mockSCStore({})}>
25
14
  <QRScan {...data} />