@eohjsc/react-native-smart-city 0.2.21 → 0.2.27

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 (404) hide show
  1. package/README.md +1 -1
  2. package/assets/images/Add.svg +5 -0
  3. package/assets/images/AddLocationMaps/Point.svg +3 -0
  4. package/assets/images/CheckCircle.svg +4 -0
  5. package/assets/images/Close.svg +3 -0
  6. package/assets/images/HowToStart.svg +14 -0
  7. package/assets/images/Illustrations.svg +83 -0
  8. package/assets/images/OneTap.svg +14 -0
  9. package/assets/images/OneTap@1x.svg +14 -0
  10. package/assets/images/Rearrange.svg +3 -0
  11. package/assets/images/Schedule.svg +39 -0
  12. package/assets/images/ValueChange.svg +49 -0
  13. package/index.js +2 -0
  14. package/package.json +14 -2
  15. package/src/Images/Common/ActiveButton.png +0 -0
  16. package/src/Images/Common/ActiveButton@2x.png +0 -0
  17. package/src/Images/Common/ActiveButton@3x.png +0 -0
  18. package/src/Images/Common/arrow-back.png +0 -0
  19. package/src/Images/Common/checked@2x.png +0 -0
  20. package/src/Images/Common/checked@3x.png +0 -0
  21. package/src/Images/Common/file.png +0 -0
  22. package/src/Images/Common/fullscreen.png +0 -0
  23. package/src/Images/Common/refresh.png +0 -0
  24. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +1 -1
  25. package/src/commons/ActionGroup/OnOffTemplate/index.js +9 -4
  26. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +4 -3
  27. package/src/commons/ActionGroup/StatesGridActionTemplate.js +2 -2
  28. package/src/commons/ActionGroup/ThreeButtonTemplate.js +13 -6
  29. package/src/commons/ActionGroup/ThreeButtonTemplateStyle.js +1 -1
  30. package/src/commons/ActionGroup/TimerActionTemplate.js +158 -33
  31. package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +294 -0
  32. package/src/commons/ActionGroup/__test__/NumberUpDownTemplateWithNullConfigValue.test.js +60 -0
  33. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +8 -13
  34. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +3 -3
  35. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +26 -45
  36. package/src/commons/ActionGroup/__test__/ThreeButtonTemplate.test.js +11 -5
  37. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +14 -8
  38. package/src/commons/ActionGroup/__test__/TimerActionTemplateWithutConfigValue.test.js +17 -23
  39. package/src/commons/ActionGroup/__test__/__snapshots__/ThreeButtonTemplate.test.js.snap +241 -223
  40. package/src/commons/ActionGroup/__test__/index.test.js +39 -107
  41. package/src/commons/ActionGroup/hooks/useDropdownAction.js +2 -1
  42. package/src/commons/ActionTemplate/ActionTemplateStyles.js +14 -0
  43. package/src/commons/ActionTemplate/OnOffButtonAction.js +40 -0
  44. package/src/commons/ActionTemplate/OnOffButtonActionStyles.js +11 -0
  45. package/src/commons/ActionTemplate/OneButtonAction.js +26 -0
  46. package/src/commons/ActionTemplate/OneButtonActionStyles.js +11 -0
  47. package/src/commons/ActionTemplate/ThreeButtonAction.js +55 -0
  48. package/src/commons/ActionTemplate/ThreeButtonActionStyles.js +11 -0
  49. package/src/commons/ActionTemplate/__test__/OnOffButtonAction.test.js +34 -0
  50. package/src/commons/ActionTemplate/__test__/OneButtonAction.test.js +33 -0
  51. package/src/commons/ActionTemplate/__test__/ThreeButtonAction.test.js +35 -0
  52. package/src/commons/ActionTemplate/__test__/index.test.js +71 -0
  53. package/src/commons/ActionTemplate/index.js +69 -0
  54. package/src/commons/AlertAction/__test__/AlertAction.test.js +6 -6
  55. package/src/commons/AlertAction/index.js +2 -0
  56. package/src/commons/Automate/ItemAddNewScriptActionStyles.js +38 -0
  57. package/src/commons/Automate/ItemAutomate.js +39 -0
  58. package/src/commons/Automate/ItemAutomateStyles.js +33 -0
  59. package/src/commons/Automate/ItemScriptAction.js +45 -0
  60. package/src/commons/Automate/ItemScriptActionStyles.js +42 -0
  61. package/src/commons/Automate/__test__/ItemAutomate.test.js +16 -0
  62. package/src/commons/Automate/__test__/ItemScriptAction.test.js +16 -0
  63. package/src/commons/BackDefault/__test__/BackDefault.test.js +21 -0
  64. package/src/commons/BottomScrollPicker/index.js +62 -0
  65. package/src/commons/BottomScrollPicker/styles.js +13 -0
  66. package/src/commons/BottomSheet/index.js +41 -0
  67. package/src/commons/BottomSheet/styles.js +37 -0
  68. package/src/commons/Button/index.js +6 -1
  69. package/src/commons/ButtonPopup/__test__/__snapshots__/ButtonPopup.test.js.snap +2 -0
  70. package/src/commons/ButtonPopup/index.js +2 -0
  71. package/src/commons/Calendar/index.js +72 -0
  72. package/src/commons/Calendar/styles.js +11 -0
  73. package/src/commons/CameraDevice/index.js +2 -1
  74. package/src/commons/ChartLoading/__test__/ChartLoading.test.js +9 -7
  75. package/src/commons/ChartLoading/index.js +2 -1
  76. package/src/commons/DateTimeRangeChange/index.js +2 -1
  77. package/src/commons/Device/ConnectedViewHeader.js +3 -1
  78. package/src/commons/Device/DeviceAlertStatus.js +5 -2
  79. package/src/commons/Device/DisconnectedView.js +34 -26
  80. package/src/commons/Device/Emergency/EmergencyButton.js +2 -1
  81. package/src/commons/Device/Emergency/EmergencyDetail.js +2 -1
  82. package/src/commons/Device/Emergency/__test__/EmergencyButton.test.js +14 -6
  83. package/src/commons/Device/Emergency/__test__/EmergencyDetail.test.js +10 -2
  84. package/src/commons/Device/FlatListItems.js +3 -2
  85. package/src/commons/Device/FooterInfo.js +2 -1
  86. package/src/commons/Device/HistoryChart.js +2 -1
  87. package/src/commons/Device/ItemAddNew/index.js +8 -3
  88. package/src/commons/Device/SensorConnectedStatus.js +2 -1
  89. package/src/commons/Device/WindDirection/Compass/Compass.test.js +19 -11
  90. package/src/commons/Device/WindDirection/Compass/index.js +1 -1
  91. package/src/commons/Device/WindSpeed/LinearChart/__test__/LinearChart.test.js +9 -3
  92. package/src/commons/Device/WindSpeed/LinearChart/__test__/__snapshots__/LinearChart.test.js.snap +0 -81
  93. package/src/commons/Device/WindSpeed/LinearChart/index.js +2 -1
  94. package/src/commons/Device/__test__/ConnectedViewHeader.test.js +16 -8
  95. package/src/commons/Device/__test__/DeviceAlertStatus.test.js +13 -5
  96. package/src/commons/Device/__test__/DisconnectedView.test.js +13 -5
  97. package/src/commons/Device/__test__/FlatListItems.test.js +9 -1
  98. package/src/commons/Device/__test__/FooterInfo.test.js +13 -4
  99. package/src/commons/Device/__test__/SensorConnectedStatus.test.js +9 -1
  100. package/src/commons/Device/__test__/__snapshots__/DisconnectedView.test.js.snap +20 -20
  101. package/src/commons/DisplayChecking/__test__/DisplayChecking.test.js +28 -0
  102. package/src/commons/EmergencyButton/AlertSendConfirm.js +2 -1
  103. package/src/commons/EmergencyButton/AlertSent.js +3 -2
  104. package/src/commons/Explore/CityItem/index.js +2 -1
  105. package/src/commons/Explore/HeaderExplore/index.js +2 -1
  106. package/src/commons/Explore/HeaderLabel/index.js +2 -1
  107. package/src/commons/Explore/SearchBox/__test__/SearchBox.test.js +9 -2
  108. package/src/commons/Explore/SearchBox/index.js +2 -1
  109. package/src/commons/Explore/__test__/CityItem.test.js +13 -15
  110. package/src/commons/Explore/__test__/HeaderExplore.test.js +11 -7
  111. package/src/commons/Explore/__test__/HeaderLabel.test.js +15 -9
  112. package/src/commons/Explore/__test__/LocationItem.test.js +31 -0
  113. package/src/commons/Header/HeaderCustom.js +22 -2
  114. package/src/commons/Header/Styles/HeaderCustomStyles.js +2 -2
  115. package/src/commons/Header/__test__/HeaderCT.test.js +12 -4
  116. package/src/commons/HeaderAni/index.js +36 -5
  117. package/src/commons/HorizontalPicker/index.js +134 -0
  118. package/src/commons/HorizontalPicker/styles.js +56 -0
  119. package/src/commons/ImagePicker/__test__/ImagePicker.test.js +19 -13
  120. package/src/commons/ImagePicker/index.js +3 -1
  121. package/src/commons/MediaPlayer/index.js +2 -1
  122. package/src/commons/MediaPlayerDetail/__test__/MediaPlayerDetail.test.js +14 -8
  123. package/src/commons/MediaPlayerDetail/index.js +4 -1
  124. package/src/commons/MenuActionAddnew/__test__/MenuActionAddNew.test.js +11 -20
  125. package/src/commons/MenuActionAddnew/index.js +2 -1
  126. package/src/commons/Modal/ModalBottom.js +51 -0
  127. package/src/commons/Modal/ModalFullVideo.js +2 -1
  128. package/src/commons/Modal/Styles/ModalBottomStyles.js +35 -0
  129. package/src/commons/Modal/__test__/ModalBottom.test.js +39 -0
  130. package/src/commons/Modal/index.js +2 -1
  131. package/src/commons/NavBar/index.js +2 -2
  132. package/src/commons/RowItem/__test__/RowItem.test.js +16 -0
  133. package/src/commons/RowItem/index.js +61 -0
  134. package/src/commons/RowItem/styles.js +53 -0
  135. package/src/commons/SelectActionCard/SelectActionStyles.js +16 -0
  136. package/src/commons/SelectActionCard/index.js +30 -0
  137. package/src/commons/Sharing/DevicePermissionsCheckbox.js +2 -1
  138. package/src/commons/Sharing/MemberList.js +3 -1
  139. package/src/commons/Sharing/RowMember.js +3 -2
  140. package/src/commons/Sharing/StationDevicePermissions.js +2 -1
  141. package/src/commons/Sharing/WrapHeaderScrollable.js +78 -74
  142. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +15 -9
  143. package/src/commons/Sharing/__test__/MemberList.test.js +17 -25
  144. package/src/commons/Sharing/__test__/StationDevicePermission.test.js +17 -12
  145. package/src/commons/Sharing/__test__/WrapHeaderScrollable.test.js +0 -9
  146. package/src/commons/SubUnit/OneTap/ItemOneTap.js +101 -0
  147. package/src/commons/SubUnit/OneTap/ItemOneTapStyles.js +41 -0
  148. package/src/commons/SubUnit/OneTap/OneTapStyles.js +36 -0
  149. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +195 -0
  150. package/src/commons/SubUnit/OneTap/index.js +39 -0
  151. package/src/commons/SubUnit/ShortDetail.js +11 -6
  152. package/src/commons/SubUnit/__test__/ShortDetail.test.js +14 -6
  153. package/src/commons/Today/__test__/Today.test.js +9 -1
  154. package/src/commons/Today/__test__/__snapshots__/Today.test.js.snap +1 -1
  155. package/src/commons/Today/index.js +2 -1
  156. package/src/commons/Unit/SharedUnit.js +2 -1
  157. package/src/commons/Unit/__test__/SharedUnit.test.js +330 -0
  158. package/src/commons/UnitSummary/AirQuality/SegmentedRoundDisplay/index.js +1 -2
  159. package/src/commons/UnitSummary/AirQuality/__test__/index.test.js +16 -17
  160. package/src/commons/UnitSummary/AirQuality/index.js +5 -120
  161. package/src/commons/UnitSummary/AirQuality/styles.js +112 -0
  162. package/src/commons/UnitSummary/TotalPowerConsumption/index.js +2 -1
  163. package/src/commons/UnitSummary/__test__/TotalPowerConsumption.test.js +15 -9
  164. package/src/commons/WheelDateTimePicker/Picker.js +57 -0
  165. package/src/commons/WheelDateTimePicker/index.js +168 -0
  166. package/src/commons/WheelDateTimePicker/styles.js +21 -0
  167. package/src/commons/index.js +2 -0
  168. package/src/configs/API.js +29 -0
  169. package/src/configs/Colors.js +1 -0
  170. package/src/configs/Constants.js +61 -0
  171. package/src/configs/Images.js +1 -0
  172. package/src/configs/SCConfig.js +7 -0
  173. package/src/configs/Theme.js +20 -0
  174. package/src/context/SCContext.tsx +9 -39
  175. package/src/context/actionType.ts +11 -0
  176. package/src/context/mockStore.ts +51 -0
  177. package/src/context/reducer.ts +23 -0
  178. package/src/hooks/Common/__test__/useStatusbar.test.js +28 -0
  179. package/src/hooks/Common/__test__/useTranslations.test.js +23 -0
  180. package/src/hooks/Common/index.js +2 -0
  181. package/src/hooks/Common/useGetIdUser.js +9 -0
  182. package/src/hooks/Common/useTranslations.ts +34 -0
  183. package/src/iot/Monitor.js +2 -1
  184. package/src/iot/RemoteControl/Bluetooth.js +2 -6
  185. package/src/iot/RemoteControl/GoogleHome.js +1 -1
  186. package/src/iot/RemoteControl/Internet.js +1 -1
  187. package/src/iot/RemoteControl/LG.js +57 -15
  188. package/src/iot/RemoteControl/__test__/Bluetooth.test.js +3 -5
  189. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +3 -3
  190. package/src/iot/RemoteControl/__test__/Internet.test.js +1 -8
  191. package/src/iot/RemoteControl/__test__/LgThinq.test.js +7 -10
  192. package/src/iot/RemoteControl/index.js +1 -1
  193. package/src/iot/states.js +1 -0
  194. package/src/navigations/AutomateStack.js +45 -0
  195. package/src/navigations/SharedStack.js +2 -1
  196. package/src/navigations/UnitStack.js +86 -6
  197. package/src/navigations/utils.js +8 -0
  198. package/src/screens/AQIGuide/__test__/AQIGuide.test.js +9 -1
  199. package/src/screens/AQIGuide/index.js +2 -2
  200. package/src/screens/ActivityLog/__test__/index.test.js +14 -39
  201. package/src/screens/ActivityLog/index.js +2 -1
  202. package/src/screens/AddCommon/SelectSubUnit.js +5 -4
  203. package/src/screens/AddCommon/SelectUnit.js +3 -2
  204. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +61 -0
  205. package/src/screens/AddCommon/__test__/SelectUnit.test.js +18 -10
  206. package/src/screens/AddLocationMaps/index.js +2 -1
  207. package/src/screens/AddNewAction/Components/LoadingSelectAction.js +40 -0
  208. package/src/screens/AddNewAction/Components/index.js +3 -0
  209. package/src/screens/AddNewAction/Device/DeviceStyles.js +43 -0
  210. package/src/screens/AddNewAction/Device/__test__/index.test.js +42 -0
  211. package/src/screens/AddNewAction/Device/index.js +33 -0
  212. package/src/screens/AddNewAction/SelectAction.js +237 -0
  213. package/src/screens/AddNewAction/SelectSensorDevices.js +150 -0
  214. package/src/screens/AddNewAction/SetupSensor.js +221 -0
  215. package/src/screens/AddNewAction/Styles/SelectActionStyles.js +62 -0
  216. package/src/screens/AddNewAction/Styles/SelectSensorDevicesStyles.js +36 -0
  217. package/src/screens/AddNewAction/Styles/SetupSensorStyles.js +76 -0
  218. package/src/screens/AddNewAction/__test__/SelectAction.test.js +153 -0
  219. package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +191 -0
  220. package/src/screens/AddNewAction/__test__/SetupSensor.test.js +125 -0
  221. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +112 -0
  222. package/src/screens/AddNewAutoSmart/index.js +113 -0
  223. package/src/screens/AddNewAutoSmart/styles/AddNewAutoSmartStyles.js +36 -0
  224. package/src/screens/AddNewDevice/ConnectDevices.js +2 -1
  225. package/src/screens/AddNewDevice/ConnectingDevices.js +2 -1
  226. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +29 -13
  227. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +19 -7
  228. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +16 -6
  229. package/src/screens/AddNewDevice/hooks/useStateAlertRename.js +2 -1
  230. package/src/screens/AddNewDevice/index.js +2 -1
  231. package/src/screens/AddNewGateway/ConnectedGateway.js +2 -1
  232. package/src/screens/AddNewGateway/ConnectingGateway.js +99 -24
  233. package/src/screens/AddNewGateway/ConnectingGatewayStyles.js +92 -0
  234. package/src/screens/AddNewGateway/SetupGatewayWifi.js +3 -2
  235. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +35 -72
  236. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +14 -4
  237. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +20 -10
  238. package/src/screens/AddNewGateway/hooks/useStateAlertRename.js +2 -1
  239. package/src/screens/AddNewGateway/index.js +2 -1
  240. package/src/screens/AddNewOneTap/AddNewOneTapStyles.js +44 -0
  241. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +130 -0
  242. package/src/screens/AddNewOneTap/index.js +83 -0
  243. package/src/screens/AllCamera/__test__/index.test.js +103 -0
  244. package/src/screens/AllCamera/index.js +2 -1
  245. package/src/screens/Automate/Components/Loading.js +64 -0
  246. package/src/screens/Automate/Styles/indexStyles.js +64 -0
  247. package/src/screens/Automate/__test__/Loading.test.js +16 -0
  248. package/src/screens/Automate/__test__/index.test.js +93 -0
  249. package/src/screens/Automate/index.js +148 -0
  250. package/src/screens/Device/HeaderDevice/styles.js +2 -2
  251. package/src/screens/Device/__test__/detail.test.js +90 -18
  252. package/src/screens/Device/detail.js +73 -35
  253. package/src/screens/Device/hooks/useCountUp.js +4 -0
  254. package/src/screens/Device/hooks/useEmergencyButton.js +3 -2
  255. package/src/screens/Device/styles.js +5 -1
  256. package/src/screens/DeviceInfo/__test__/index.test.js +12 -3
  257. package/src/screens/DeviceInfo/index.js +2 -1
  258. package/src/screens/EditActionsList/Styles/indexStyles.js +84 -0
  259. package/src/screens/EditActionsList/index.js +186 -0
  260. package/src/screens/EmergencyContacts/EmergencyContactsAddNew.js +3 -2
  261. package/src/screens/EmergencyContacts/EmergencyContactsList.js +9 -2
  262. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +2 -1
  263. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +15 -18
  264. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +19 -23
  265. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +10 -25
  266. package/src/screens/EmergencyContacts/hook.js +3 -2
  267. package/src/screens/Explore/index.js +3 -2
  268. package/src/screens/GuestInfo/__test__/index.test.js +176 -0
  269. package/src/screens/GuestInfo/components/AccessScheduleItem.js +32 -0
  270. package/src/screens/GuestInfo/components/AccessScheduleSheet.js +204 -0
  271. package/src/screens/GuestInfo/components/HeaderGuestInfo.js +36 -0
  272. package/src/screens/GuestInfo/components/RecurringDetail.js +106 -0
  273. package/src/screens/GuestInfo/components/RowGuestInfo.js +31 -0
  274. package/src/screens/GuestInfo/components/TemporaryDetail.js +53 -0
  275. package/src/screens/GuestInfo/constant.js +59 -0
  276. package/src/screens/GuestInfo/index.js +150 -0
  277. package/src/screens/GuestInfo/styles/AccessScheduleDetailStyles.js +31 -0
  278. package/src/screens/GuestInfo/styles/AccessScheduleItemStyles.js +22 -0
  279. package/src/screens/GuestInfo/styles/HeaderGuestInfoStyles.js +31 -0
  280. package/src/screens/GuestInfo/styles/indexStyles.js +38 -0
  281. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +13 -1
  282. package/src/screens/ManageAccess/hooks/index.js +4 -0
  283. package/src/screens/ManageAccess/index.js +49 -20
  284. package/src/screens/ManageAccess/styles/ManageAccessStyles.js +3 -0
  285. package/src/screens/PlayBackCamera/Timer.js +1 -1
  286. package/src/screens/PlayBackCamera/index.js +9 -5
  287. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +2 -11
  288. package/src/screens/ScanChipQR/components/QRScan/index.js +2 -1
  289. package/src/screens/ScriptDetail/Styles/indexStyles.js +157 -0
  290. package/src/screens/ScriptDetail/__test__/index.test.js +119 -0
  291. package/src/screens/ScriptDetail/hooks/index.js +55 -0
  292. package/src/screens/ScriptDetail/index.js +344 -0
  293. package/src/screens/SelectUnit/Styles/indexStyles.js +55 -0
  294. package/src/screens/SelectUnit/__test__/index.test.js +85 -0
  295. package/src/screens/SelectUnit/index.js +100 -0
  296. package/src/screens/SetSchedule/__test__/index.test.js +97 -0
  297. package/src/screens/SetSchedule/components/RepeatOptionsPopup.js +56 -0
  298. package/src/screens/SetSchedule/components/RowItem.js +27 -0
  299. package/src/screens/SetSchedule/components/SelectWeekday.js +65 -0
  300. package/src/screens/SetSchedule/index.js +139 -0
  301. package/src/screens/SetSchedule/styles/RepeatOptionsPopupStyles.js +22 -0
  302. package/src/screens/SetSchedule/styles/RowItemStyles.js +29 -0
  303. package/src/screens/SetSchedule/styles/SelectWeekdayStyles.js +26 -0
  304. package/src/screens/SetSchedule/styles/indexStyles.js +22 -0
  305. package/src/screens/SharedUnit/TabHeader.js +2 -1
  306. package/src/screens/SharedUnit/__test__/TabHeader.test.js +40 -0
  307. package/src/screens/SharedUnit/index.js +3 -2
  308. package/src/screens/Sharing/MemberList.js +2 -1
  309. package/src/screens/Sharing/SelectPermission.js +2 -1
  310. package/src/screens/Sharing/SelectUser.js +3 -2
  311. package/src/screens/Sharing/__test__/MemberList.test.js +25 -28
  312. package/src/screens/Sharing/__test__/SelectPermission.test.js +16 -8
  313. package/src/screens/Sharing/__test__/SelectUser.test.js +33 -15
  314. package/src/screens/Sharing/hooks/index.js +22 -17
  315. package/src/screens/SubUnit/AddSubUnit.js +3 -2
  316. package/src/screens/SubUnit/Detail.js +5 -4
  317. package/src/screens/SubUnit/EditSubUnit.js +274 -0
  318. package/src/screens/SubUnit/EditSubUnitStyles.js +119 -0
  319. package/src/screens/SubUnit/ManageSubUnit.js +114 -371
  320. package/src/screens/SubUnit/ManageSubUnitStyles.js +40 -0
  321. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +17 -11
  322. package/src/screens/SubUnit/__test__/Detail.test.js +11 -31
  323. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +427 -0
  324. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +51 -384
  325. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +85 -0
  326. package/src/screens/SubUnit/hooks/useManageSubUnit.js +35 -0
  327. package/src/screens/SyncLGDevice/AddLGDevice.js +3 -2
  328. package/src/screens/TDSGuide/__test__/TDSGuide.test.js +9 -1
  329. package/src/screens/TDSGuide/index.js +2 -1
  330. package/src/screens/UVIndexGuide/__test__/UVIndexGuide.test.js +9 -1
  331. package/src/screens/UVIndexGuide/index.js +2 -1
  332. package/src/screens/Unit/AddMenu.js +3 -2
  333. package/src/screens/Unit/Detail.js +66 -20
  334. package/src/screens/Unit/ManageUnit/index.js +4 -3
  335. package/src/screens/Unit/ManageUnit.js +15 -4
  336. package/src/screens/Unit/MoreMenu.js +3 -2
  337. package/src/screens/Unit/SelectLocation.js +8 -2
  338. package/src/screens/Unit/SelectLocationStyles.js +11 -0
  339. package/src/screens/Unit/__test__/AddMenu.test.js +15 -15
  340. package/src/screens/Unit/__test__/CheckSendEmail.test.js +19 -10
  341. package/src/screens/Unit/__test__/Detail.test.js +92 -33
  342. package/src/screens/Unit/__test__/ManageUnit.test.js +16 -23
  343. package/src/screens/Unit/components/Header/index.js +2 -1
  344. package/src/screens/Unit/components/ListMyAllUnit/index.js +2 -1
  345. package/src/screens/Unit/components/MyUnit/index.js +2 -1
  346. package/src/screens/Unit/components/SearchLocation/__test__/RowLocation.test.js +36 -0
  347. package/src/screens/Unit/components/SearchLocation/index.js +2 -1
  348. package/src/screens/Unit/components/SharedUnit/index.js +2 -1
  349. package/src/screens/Unit/components/__test__/MyUnit.test.js +22 -72
  350. package/src/screens/Unit/components/__test__/MyUnitDevice.test.js +32 -0
  351. package/src/screens/Unit/components/__test__/SharedUnit.test.js +11 -2
  352. package/src/screens/UnitSummary/__test__/index.test.js +12 -4
  353. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +13 -3
  354. package/src/screens/UnitSummary/components/3PPowerConsumption/index.js +2 -1
  355. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -12
  356. package/src/screens/UnitSummary/components/PowerConsumption/index.js +2 -1
  357. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -2
  358. package/src/screens/UnitSummary/components/Temperature/index.js +2 -1
  359. package/src/screens/UnitSummary/components/TotalPowerConsumption/index.js +2 -1
  360. package/src/screens/UnitSummary/components/UvIndex/__test__/__snapshots__/index.test.js.snap +37 -37
  361. package/src/screens/UnitSummary/components/UvIndex/__test__/index.test.js +14 -6
  362. package/src/screens/UnitSummary/components/UvIndex/index.js +2 -1
  363. package/src/screens/UnitSummary/components/WaterQuality/__test__/index.test.js +11 -5
  364. package/src/screens/UnitSummary/components/WaterQuality/index.js +2 -1
  365. package/src/screens/UnitSummary/components/__test__/TotalPowerConsumption.test.js +13 -7
  366. package/src/screens/UnitSummary/components/__test__/UnitSummary.test.js +67 -0
  367. package/src/screens/UnitSummary/components/__test__/index.test.js +48 -0
  368. package/src/screens/UnitSummary/components/index.js +1 -37
  369. package/src/screens/UnitSummary/components/indexstyles.js +39 -0
  370. package/src/screens/UnitSummary/index.js +2 -1
  371. package/src/screens/WaterQualityGuide/__test__/index.test.js +12 -12
  372. package/src/screens/WaterQualityGuide/index.js +2 -1
  373. package/src/utils/Apis/axios.js +0 -4
  374. package/src/utils/Converter/array.js +4 -0
  375. package/src/utils/Converter/time.js +29 -4
  376. package/src/utils/I18n/index.ts +6 -0
  377. package/src/utils/I18n/translations/en.json +77 -5
  378. package/src/utils/I18n/translations/vi.json +73 -3
  379. package/src/utils/I18n/translations.ts +45 -0
  380. package/src/utils/Route/index.js +13 -0
  381. package/src/utils/__test__/InitData.test.js +20 -0
  382. package/src/commons/ChartLoading/__test__/__snapshots__/ChartLoading.test.js.snap +0 -66
  383. package/src/commons/Device/HistoryChart/__test__/HistoryChart.test.js +0 -57
  384. package/src/commons/Device/HistoryChart/__test__/__snapshots__/HistoryChart.test.js.snap +0 -593
  385. package/src/commons/Explore/SearchBox/__test__/__snapshots__/SearchBox.test.js.snap +0 -59
  386. package/src/commons/Header/__test__/Header.test.js +0 -24
  387. package/src/commons/MenuActionAddnew/__test__/__snapshots__/MenuActionAddNew.test.js.snap +0 -788
  388. package/src/commons/Sharing/__test__/__snapshots__/WrapHeaderScrollable.test.js.snap +0 -174
  389. package/src/commons/UnitSummary/AirQuality/__test__/__snapshots__/index.test.js.snap +0 -26679
  390. package/src/iot/RemoteControl/__test__/index.test.js +0 -101
  391. package/src/iot/__test__/Monitor.test.js +0 -119
  392. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactAddNew.test.js.snap +0 -1706
  393. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactList.test.js.snap +0 -4276
  394. package/src/screens/EmergencyContacts/__test__/__snapshots__/EmergencyContactsSelectContacts.test.js.snap +0 -2240
  395. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +0 -358
  396. package/src/screens/Unit/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  397. package/src/screens/Unit/MyAllUnit/__test__/index.test.js +0 -48
  398. package/src/screens/Unit/components/MyAllUnit/__test__/__snapshots__/index.test.js.snap +0 -1001
  399. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -48
  400. package/src/screens/UnitSummary/components/WaterQuality/__test__/__snapshots__/index.test.js.snap +0 -1574
  401. package/src/screens/WaterQualityGuide/__test__/__snapshots__/index.test.js.snap +0 -3375
  402. package/src/utils/Converter/__test__/time.test.js +0 -126
  403. package/src/utils/I18n/index.js +0 -19
  404. package/src/utils/I18n/index.test.js +0 -7
@@ -2,19 +2,21 @@ import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
3
  import { Text } from 'react-native-svg';
4
4
  import ChartLoading from '../index';
5
+ import { SCProvider } from '../../../context';
6
+ import { mockSCStore } from '../../../context/mockStore';
7
+
8
+ const wrapComponent = () => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <ChartLoading message="loading" />
11
+ </SCProvider>
12
+ );
5
13
 
6
14
  describe('Test chart loading', () => {
7
15
  let tree;
8
- test('create chart loading', () => {
9
- act(() => {
10
- tree = renderer.create(<ChartLoading message="loading" />);
11
- });
12
- expect(tree.toJSON()).toMatchSnapshot();
13
- });
14
16
 
15
17
  test('create chart message null', () => {
16
18
  act(() => {
17
- tree = renderer.create(<ChartLoading />);
19
+ tree = renderer.create(wrapComponent());
18
20
  });
19
21
  const instance = tree.root;
20
22
  const textInputs = instance.findAllByType(Text);
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
  import Svg, { Text } from 'react-native-svg';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
 
5
5
  const ChartLoading = ({ message }) => {
6
+ const t = useTranslations();
6
7
  return (
7
8
  <Svg width={'100%'} height={300}>
8
9
  <Text
@@ -1,5 +1,5 @@
1
1
  import React, { memo } from 'react';
2
- import { t } from 'i18n-js';
2
+ import { useTranslations } from '../../hooks/Common/useTranslations';
3
3
  import { StyleSheet, View } from 'react-native';
4
4
 
5
5
  import { Colors } from '../../configs';
@@ -8,6 +8,7 @@ import DateTimeButton from './DateTimeButton';
8
8
 
9
9
  const DateTimeRangeChange = memo(
10
10
  ({ startTime, onStart, onEnd, endTime, style, date, formatType }) => {
11
+ const t = useTranslations();
11
12
  return (
12
13
  <View style={[styles.dateTimeView, style]}>
13
14
  <Text size={12} color={Colors.Gray7}>
@@ -1,13 +1,14 @@
1
1
  import React, { memo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { IconOutline } from '@ant-design/icons-react-native';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../configs';
7
7
  import Text from '../../commons/Text';
8
8
  import { timeDifference } from '../../utils/Converter/time';
9
9
 
10
10
  const DisplayTextConnected = memo(({ type }) => {
11
+ const t = useTranslations();
11
12
  let text = '';
12
13
  switch (type) {
13
14
  case 'GoogleHome':
@@ -21,6 +22,7 @@ const DisplayTextConnected = memo(({ type }) => {
21
22
  });
22
23
 
23
24
  const ConnectedViewHeader = memo(({ lastUpdated, type, isDisplayTime }) => {
25
+ const t = useTranslations();
24
26
  const lastUpdatedStr = lastUpdated
25
27
  ? timeDifference(new Date(), lastUpdated)
26
28
  : null;
@@ -3,15 +3,18 @@ import { View, StyleSheet } from 'react-native';
3
3
  import AlertStatusMachine from './WaterPurifierStatus/AlertStatusMachine';
4
4
  import { TESTID } from '../../configs/Constants';
5
5
  import { Colors } from '../../configs';
6
- import { t } from 'i18n-js';
6
+ import { useTranslations } from '../../hooks/Common/useTranslations';
7
7
 
8
8
  const DeviceAlertStatus = memo(
9
9
  ({ data, style, offsetTitle, setOffsetTitle }) => {
10
+ const t = useTranslations();
10
11
  const listStatus = data.filter((item) => item.value === 1);
11
12
 
12
13
  useEffect(() => {
13
14
  if (!!listStatus.length && offsetTitle !== listStatus.length) {
14
- !!listStatus.length && setOffsetTitle(listStatus.length);
15
+ !!listStatus.length &&
16
+ setOffsetTitle &&
17
+ setOffsetTitle(listStatus.length);
15
18
  }
16
19
  }, [listStatus.length, offsetTitle, setOffsetTitle]);
17
20
 
@@ -1,7 +1,7 @@
1
1
  import React, { memo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { IconOutline } from '@ant-design/icons-react-native';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../configs';
7
7
  import { CircleView } from '../../commons';
@@ -29,6 +29,7 @@ const DeviceIcon = memo(({ sensor }) => {
29
29
  });
30
30
 
31
31
  const DisplayTextDisconnected = memo(({ type }) => {
32
+ const t = useTranslations();
32
33
  let text = '';
33
34
  switch (type) {
34
35
  case 'GoogleHome':
@@ -41,35 +42,42 @@ const DisplayTextDisconnected = memo(({ type }) => {
41
42
  return <Text style={styles.redStatus}>{text}</Text>;
42
43
  });
43
44
 
44
- const DisconnectedView = memo(({ sensor, type }) => (
45
- <View style={styles.statusContainer}>
46
- <CircleView size={80} backgroundColor={Colors.Gray3} style={styles.center}>
47
- <CircleView size={64} backgroundColor={Colors.BG} style={styles.center}>
48
- <DeviceIcon sensor={sensor} />
45
+ const DisconnectedView = memo(({ sensor, type }) => {
46
+ const t = useTranslations();
47
+ return (
48
+ <View style={styles.statusContainer}>
49
+ <CircleView
50
+ size={80}
51
+ backgroundColor={Colors.Gray3}
52
+ style={styles.center}
53
+ >
54
+ <CircleView size={64} backgroundColor={Colors.BG} style={styles.center}>
55
+ <DeviceIcon sensor={sensor} />
56
+ </CircleView>
49
57
  </CircleView>
50
- </CircleView>
51
- <View style={styles.connectStatus}>
52
- <WifiOffIcon width={16} height={16} />
53
- <DisplayTextDisconnected type={type} />
54
- </View>
55
- <View style={styles.disconnectSuggestionContainer}>
56
- <View style={styles.row}>
57
- <IconOutline name={'alert'} size={16} />
58
- <Text bold style={styles.boldText}>
59
- {t('suggestions')}:
60
- </Text>
61
- </View>
62
- <View style={styles.infoRow}>
63
- <CircleView size={6} backgroundColor={Colors.Gray8} />
64
- <Text style={styles.noticeText}>{t('check_the_power')}</Text>
58
+ <View style={styles.connectStatus}>
59
+ <WifiOffIcon width={16} height={16} />
60
+ <DisplayTextDisconnected type={type} />
65
61
  </View>
66
- <View style={styles.infoRow}>
67
- <CircleView size={6} backgroundColor={Colors.Gray8} />
68
- <Text style={styles.noticeText}>{t('check_the_wifi')}</Text>
62
+ <View style={styles.disconnectSuggestionContainer}>
63
+ <View style={styles.row}>
64
+ <IconOutline name={'alert'} size={16} />
65
+ <Text bold style={styles.boldText}>
66
+ {t('suggestions')}:
67
+ </Text>
68
+ </View>
69
+ <View style={styles.infoRow}>
70
+ <CircleView size={6} backgroundColor={Colors.Gray8} />
71
+ <Text style={styles.noticeText}>{t('check_the_power')}</Text>
72
+ </View>
73
+ <View style={styles.infoRow}>
74
+ <CircleView size={6} backgroundColor={Colors.Gray8} />
75
+ <Text style={styles.noticeText}>{t('check_the_wifi')}</Text>
76
+ </View>
69
77
  </View>
70
78
  </View>
71
- </View>
72
- ));
79
+ );
80
+ });
73
81
 
74
82
  const styles = StyleSheet.create({
75
83
  statusContainer: {
@@ -1,6 +1,6 @@
1
1
  import React, { memo } from 'react';
2
2
  import { View, StyleSheet, TouchableOpacity } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
4
4
 
5
5
  import Text from '../../Text';
6
6
  import { Colors } from '../../../configs';
@@ -9,6 +9,7 @@ import SvgEmergencyButton from '../../../../assets/images/Emergency/emergency-bu
9
9
  import { Card } from '../../../commons/CardShadow';
10
10
 
11
11
  const EmergencyButton = memo(({ emergency }) => {
12
+ const t = useTranslations();
12
13
  return (
13
14
  <Card title={t('button')}>
14
15
  <View style={styles.container}>
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useCallback, useEffect } from 'react';
2
2
  import { View, StyleSheet, Linking } from 'react-native';
3
3
  import Text from '../../Text';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
5
5
  import MediaPlayer from '../../MediaPlayer';
6
6
  import { standardizeCameraScreenSize } from '../../../utils/Utils';
7
7
  import { Colors, Device } from '../../../configs';
@@ -16,6 +16,7 @@ const { standardizeHeight } = standardizeCameraScreenSize(
16
16
  );
17
17
 
18
18
  const EmergencyDetail = memo(({ item }) => {
19
+ const t = useTranslations();
19
20
  const groupId = item.configuration.device.group.id;
20
21
  const isFocused = useIsFocused();
21
22
  const { listContacts, getListContacts } = useEmeragencyContacts();
@@ -3,14 +3,22 @@ import { TouchableOpacity } from 'react-native';
3
3
  import renderer, { act } from 'react-test-renderer';
4
4
 
5
5
  import { TESTID } from '../../../../configs/Constants';
6
+ import { SCProvider } from '../../../../context';
7
+ import { mockSCStore } from '../../../../context/mockStore';
6
8
  import Text from '../../../Text';
7
9
  import EmergencyButton from '../EmergencyButton';
8
10
 
11
+ const wrapComponent = (mockFunction) => (
12
+ <SCProvider initState={mockSCStore({})}>
13
+ <EmergencyButton emergency={mockFunction} />
14
+ </SCProvider>
15
+ );
16
+
9
17
  describe('Test EmergencyButton', () => {
10
18
  let tree;
11
- test('create EmergencyButton', () => {
12
- act(() => {
13
- tree = renderer.create(<EmergencyButton />);
19
+ test('create EmergencyButton', async () => {
20
+ await act(() => {
21
+ tree = renderer.create(wrapComponent());
14
22
  });
15
23
 
16
24
  const instance = tree.root;
@@ -18,10 +26,10 @@ describe('Test EmergencyButton', () => {
18
26
  expect(textEmergencyDes[0]).toBeDefined();
19
27
  });
20
28
 
21
- test('long press EmergencyButton', () => {
29
+ test('long press EmergencyButton', async () => {
22
30
  const mockFunction = jest.fn();
23
- act(() => {
24
- tree = renderer.create(<EmergencyButton emergency={mockFunction} />);
31
+ await act(() => {
32
+ tree = renderer.create(wrapComponent(mockFunction));
25
33
  });
26
34
 
27
35
  const instance = tree.root;
@@ -3,6 +3,14 @@ import renderer, { act } from 'react-test-renderer';
3
3
  import EmergencyDetail from '../EmergencyDetail';
4
4
  import { useIsFocused } from '@react-navigation/native';
5
5
  import { VLCPlayer } from 'react-native-vlc-media-player';
6
+ import { SCProvider } from '../../../../context';
7
+ import { mockSCStore } from '../../../../context/mockStore';
8
+
9
+ const wrapComponent = (item) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <EmergencyDetail item={item} />
12
+ </SCProvider>
13
+ );
6
14
 
7
15
  const mockUseIsFocused = jest.fn();
8
16
  jest.mock('@react-navigation/core', () => {
@@ -31,10 +39,10 @@ describe('Test EmergencyDetail', () => {
31
39
  };
32
40
  useIsFocused.mockImplementation(() => true);
33
41
  act(() => {
34
- tree = renderer.create(<EmergencyDetail item={item} />);
42
+ tree = renderer.create(wrapComponent(item));
35
43
  });
36
44
  const instance = tree.root;
37
45
  const button = instance.findAllByType(VLCPlayer);
38
- expect(button.length).toEqual(1);
46
+ expect(button.length).toEqual(0);
39
47
  });
40
48
  });
@@ -8,13 +8,14 @@ import Text from '../Text';
8
8
  import Routes from '../../utils/Route';
9
9
  import { IconFill, IconOutline } from '@ant-design/icons-react-native';
10
10
  import { Colors, Constants } from '../../configs';
11
- import { t } from 'i18n-js';
11
+ import { useTranslations } from '../../hooks/Common/useTranslations';
12
12
  import { TESTID } from '../../configs/Constants';
13
13
 
14
14
  const marginHorizontal = 20;
15
15
  const widthItem = (Constants.width - marginHorizontal * 2) / 2;
16
16
 
17
17
  const FlatListItems = memo(({ data, style, title, offsetTitle }) => {
18
+ const t = useTranslations();
18
19
  const [showInfo, setShowInfo, setHideInfo] = useBoolean(false);
19
20
  const filtersNeedReplace = data.filter((item) => item.value <= 10);
20
21
 
@@ -45,7 +46,7 @@ const FlatListItems = memo(({ data, style, title, offsetTitle }) => {
45
46
  }
46
47
  return items.map((item, index) => (
47
48
  <QualityIndicatorItem
48
- key={item.id.toString()}
49
+ key={item?.id}
49
50
  standard={item.standard}
50
51
  value={item.value}
51
52
  measure={item.measure}
@@ -2,10 +2,11 @@ import React, { memo } from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import Text from '../Text';
4
4
  import { Colors } from '../../configs';
5
- import { t } from 'i18n-js';
5
+ import { useTranslations } from '../../hooks/Common/useTranslations';
6
6
  import FImage from '../FImage';
7
7
 
8
8
  const FooterInfo = memo(({ data }) => {
9
+ const t = useTranslations();
9
10
  return (
10
11
  <View style={styles.container}>
11
12
  <View style={styles.containerPoweredBy}>
@@ -1,7 +1,7 @@
1
1
  import React, { memo, useCallback, useState } from 'react';
2
2
  import { StyleSheet, View, Dimensions } from 'react-native';
3
3
  import moment from 'moment';
4
- import { t } from 'i18n-js';
4
+ import { useTranslations } from '../../hooks/Common/useTranslations';
5
5
 
6
6
  import { Colors } from '../../configs';
7
7
  import Text from '../../commons/Text';
@@ -29,6 +29,7 @@ const HistoryChart = memo(
29
29
  setStartDate,
30
30
  configuration,
31
31
  }) => {
32
+ const t = useTranslations();
32
33
  const dateNow = moment().valueOf();
33
34
  const [chartOptions, setChartOptions] = useState({
34
35
  index: -1,
@@ -5,13 +5,18 @@ import Text from '../../Text';
5
5
 
6
6
  import { Colors } from '../../../configs';
7
7
  import styles from './styles';
8
+ import { TESTID } from '../../../configs/Constants';
8
9
 
9
- const ItemAddNew = memo(({ title, onAddNew }) => {
10
+ const ItemAddNew = memo(({ title, onAddNew, wrapStyle }) => {
10
11
  return (
11
12
  <TouchableWithoutFeedback onPress={onAddNew}>
12
- <View style={styles.container}>
13
+ <View style={[styles.container, wrapStyle]}>
13
14
  <View style={styles.boxIcon}>
14
- <TouchableOpacity style={styles.buttonPlus} onPress={onAddNew}>
15
+ <TouchableOpacity
16
+ style={styles.buttonPlus}
17
+ onPress={onAddNew}
18
+ testID={TESTID.PLUS}
19
+ >
15
20
  <IconOutline name="plus" size={22} color={Colors.Gray8} />
16
21
  </TouchableOpacity>
17
22
  </View>
@@ -1,6 +1,6 @@
1
1
  import React, { memo } from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../hooks/Common/useTranslations';
4
4
 
5
5
  import { Colors } from '../../configs';
6
6
  import Text from '../../commons/Text';
@@ -8,6 +8,7 @@ import Connect from '../../../assets/images/Device/Connect.svg';
8
8
  import { TESTID } from '../../configs/Constants';
9
9
 
10
10
  const SensorConnectedStatus = memo(({ txtSensor, timeLastUpdate }) => {
11
+ const t = useTranslations();
11
12
  return (
12
13
  <View style={styles.container} testID={TESTID.SENSOR_CONNECTED_STATUS}>
13
14
  <View style={styles.connectStatus}>
@@ -1,21 +1,29 @@
1
1
  import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
+ import { SCProvider } from '../../../../context';
4
+ import { mockSCStore } from '../../../../context/mockStore';
3
5
  import Text from '../../../Text';
4
6
  import Compass from './index';
5
7
 
8
+ const wrapComponent = (data) => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <Compass data={data} />
11
+ </SCProvider>
12
+ );
13
+
6
14
  describe('Test Compass', () => {
7
15
  let tree;
8
16
  let list_value = [0, 45, 90, 135, 180, 235, 270, 330, 360];
9
17
  let list_result = [
10
- '0° Bắc',
11
- '45° Đông Bắc',
12
- '90° Đông',
13
- '135° Đông Nam',
14
- '180° Nam',
15
- '235° Tây Nam',
16
- '270° Tây',
17
- '330° Tây Bắc',
18
- '0° Bắc',
18
+ '0° North',
19
+ '45° North East',
20
+ '90° East',
21
+ '135° South East',
22
+ '180° South',
23
+ '235° South West',
24
+ '270° West',
25
+ '330° North West',
26
+ '0° North',
19
27
  ];
20
28
  list_value.forEach((value, index) => {
21
29
  test(`create Compass ${value}`, () => {
@@ -25,7 +33,7 @@ describe('Test Compass', () => {
25
33
  },
26
34
  ];
27
35
  act(() => {
28
- tree = renderer.create(<Compass data={data} />);
36
+ tree = renderer.create(wrapComponent(data));
29
37
  });
30
38
  const instance = tree.root;
31
39
  const textInputs = instance.findAllByType(Text);
@@ -36,7 +44,7 @@ describe('Test Compass', () => {
36
44
 
37
45
  test('create Compass data null', () => {
38
46
  act(() => {
39
- tree = renderer.create(<Compass data={[]} />);
47
+ tree = renderer.create(wrapComponent([]));
40
48
  });
41
49
  const instance = tree.root;
42
50
  const textInputs = instance.findAllByType(Text);
@@ -1,7 +1,7 @@
1
1
  import React, { useRef, useEffect, memo } from 'react';
2
2
  import { View, Animated, StyleSheet, Easing } from 'react-native';
3
3
  import Svg, { G, Path, Defs, ClipPath, Rect } from 'react-native-svg';
4
- import { t } from 'i18n-js';
4
+ import t from '../../../../hooks/Common/useTranslations';
5
5
 
6
6
  import Text from '../../../Text';
7
7
  import { Colors } from '../../../../configs';
@@ -1,9 +1,17 @@
1
1
  import LinearChart from '../index';
2
2
  import React from 'react';
3
3
  import renderer, { act } from 'react-test-renderer';
4
+ import { SCProvider } from '../../../../../context';
5
+ import { mockSCStore } from '../../../../../context/mockStore';
4
6
 
5
7
  Date.now = jest.fn(() => 1487076708000);
6
8
 
9
+ const wrapComponent = (chartOptions, datasShow) => (
10
+ <SCProvider initState={mockSCStore({})}>
11
+ <LinearChart chartOptions={chartOptions} datasShow={datasShow} />
12
+ </SCProvider>
13
+ );
14
+
7
15
  describe('Test LinearChart', () => {
8
16
  let wrapper;
9
17
 
@@ -17,9 +25,7 @@ describe('Test LinearChart', () => {
17
25
  },
18
26
  ];
19
27
  act(() => {
20
- wrapper = renderer.create(
21
- <LinearChart chartOptions={chartOptions} datasShow={datasShow} />
22
- );
28
+ wrapper = renderer.create(wrapComponent(chartOptions, datasShow));
23
29
  });
24
30
  expect(wrapper.toJSON()).toMatchSnapshot();
25
31
  });
@@ -101,87 +101,6 @@ exports[`Test LinearChart LinearChart render 1`] = `
101
101
  NaN,
102
102
  ]
103
103
  }
104
- >
105
- <RNSVGTSpan
106
- content="0.000000"
107
- dx={
108
- Array [
109
- 0,
110
- ]
111
- }
112
- dy={
113
- Array [
114
- 0,
115
- ]
116
- }
117
- fill={4284045657}
118
- font={
119
- Object {
120
- "fontFamily": "SFProDisplay-Regular",
121
- "fontSize": 10,
122
- "letterSpacing": "normal",
123
- "textAnchor": "end",
124
- }
125
- }
126
- propList={
127
- Array [
128
- "fill",
129
- ]
130
- }
131
- rotate={Array []}
132
- x={
133
- Array [
134
- 35,
135
- ]
136
- }
137
- y={Array []}
138
- />
139
- </RNSVGText>
140
- </RNSVGGroup>
141
- <RNSVGGroup>
142
- <RNSVGLine
143
- fill={null}
144
- propList={
145
- Array [
146
- "fill",
147
- "stroke",
148
- "strokeDasharray",
149
- ]
150
- }
151
- stroke={4293454056}
152
- strokeDasharray={
153
- Array [
154
- "5",
155
- "5",
156
- ]
157
- }
158
- vectorEffect={1}
159
- x1={50}
160
- x2={700}
161
- y1={NaN}
162
- y2={NaN}
163
- />
164
- <RNSVGText
165
- content={null}
166
- dx={
167
- Array [
168
- 0,
169
- ]
170
- }
171
- dy={Array []}
172
- font={Object {}}
173
- name="axis-tickLabels-1"
174
- rotate={Array []}
175
- x={
176
- Array [
177
- 35,
178
- ]
179
- }
180
- y={
181
- Array [
182
- NaN,
183
- ]
184
- }
185
104
  >
186
105
  <RNSVGTSpan
187
106
  content="NaN"
@@ -6,7 +6,7 @@ import {
6
6
  VictoryScatter,
7
7
  VictoryTooltip,
8
8
  } from 'victory-native';
9
- import { t } from 'i18n-js';
9
+ import { useTranslations } from '../../../../hooks/Common/useTranslations';
10
10
 
11
11
  import { Colors } from '../../../../configs';
12
12
  import ChartLoading from '../../../ChartLoading';
@@ -23,6 +23,7 @@ const LinearChart = memo(
23
23
  datasColor,
24
24
  chartOptions,
25
25
  }) => {
26
+ const t = useTranslations();
26
27
  const datas = chartOptions.showAll
27
28
  ? datasShow
28
29
  : datasShow.filter((item, index) => index === chartOptions.index);
@@ -4,6 +4,15 @@ import moment from 'moment';
4
4
 
5
5
  import Text from '../../Text';
6
6
  import { ConnectedViewHeader } from '../ConnectedViewHeader';
7
+ import { SCProvider } from '../../../context';
8
+ import { mockSCStore } from '../../../context/mockStore';
9
+
10
+ const wrapComponent = (lastUpdated) => (
11
+ <SCProvider initState={mockSCStore({})}>
12
+ <ConnectedViewHeader lastUpdated={lastUpdated} />
13
+ );
14
+ </SCProvider>
15
+ );
7
16
 
8
17
  describe('Test ConnectedViewHeader', () => {
9
18
  let tree;
@@ -12,20 +21,19 @@ describe('Test ConnectedViewHeader', () => {
12
21
  Date.now = jest.fn(() => new Date('2021-01-24T12:00:00.000Z'));
13
22
  });
14
23
 
15
- test('render ConnectedViewHeader', () => {
24
+ test('render ConnectedViewHeader', async () => {
16
25
  const lastUpdated = moment(new Date('2021-01-20T05:00:00.629Z'));
17
- act(() => {
18
- tree = create(<ConnectedViewHeader lastUpdated={lastUpdated} />);
26
+ await act(() => {
27
+ tree = create(wrapComponent(lastUpdated));
19
28
  });
20
29
  const isntance = tree.root;
21
30
  const texts = isntance.findAllByType(Text);
22
- expect(texts).toHaveLength(2);
23
- expect(texts[1].props.children).toContain('Cập nhật lần cuối');
31
+ expect(texts).toHaveLength(1);
24
32
  });
25
33
 
26
- test('render ConnectedViewHeader no last updated', () => {
27
- act(() => {
28
- tree = create(<ConnectedViewHeader />);
34
+ test('render ConnectedViewHeader no last updated', async () => {
35
+ await act(() => {
36
+ tree = create(wrapComponent());
29
37
  });
30
38
  const isntance = tree.root;
31
39
  const texts = isntance.findAllByType(Text);