@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
@@ -0,0 +1,26 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ wrap: {
6
+ marginTop: 16,
7
+ },
8
+ row: {
9
+ marginTop: 16,
10
+ flexDirection: 'row',
11
+ justifyContent: 'space-between',
12
+ },
13
+ item: {
14
+ width: 45,
15
+ justifyContent: 'center',
16
+ alignItems: 'center',
17
+ borderRadius: 5,
18
+ backgroundColor: Colors.Gray3,
19
+ },
20
+ selected: {
21
+ backgroundColor: Colors.Primary,
22
+ },
23
+ text: {
24
+ marginTop: 4,
25
+ },
26
+ });
@@ -0,0 +1,22 @@
1
+ import { Colors } from '../../../configs';
2
+ import { StyleSheet } from 'react-native';
3
+
4
+ export default StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: Colors.White,
8
+ },
9
+ title: {
10
+ marginBottom: 32,
11
+ },
12
+ scollView: {
13
+ paddingHorizontal: 16,
14
+ paddingBottom: 150,
15
+ },
16
+ viewBottom: {
17
+ borderColor: Colors.Gray4,
18
+ paddingVertical: 24,
19
+ borderTopWidth: 1,
20
+ backgroundColor: Colors.White,
21
+ },
22
+ });
@@ -1,13 +1,14 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { View, TouchableOpacity } 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 Text from '../../commons/Text';
7
7
 
8
8
  import styles from './styles';
9
9
 
10
10
  const TabHeader = ({ current, getCurrentTab, showModal, textFilter }) => {
11
+ const t = useTranslations();
11
12
  const [currentTab, setCurrentTabState] = useState(current);
12
13
 
13
14
  useEffect(() => {
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { create } from 'react-test-renderer';
3
+ import { act } from '@testing-library/react-hooks';
4
+ import TabHeader from '../TabHeader';
5
+ import { TouchableOpacity } from 'react-native';
6
+ import { SCProvider } from '../../../context';
7
+ import { mockSCStore } from '../../../context/mockStore';
8
+
9
+ jest.mock('axios');
10
+
11
+ const wrapComponent = (current, getCurrentTab, showModal, textFilter) => (
12
+ <SCProvider initState={mockSCStore({})}>
13
+ <TabHeader
14
+ current={current}
15
+ getCurrentTab={getCurrentTab}
16
+ showModal={showModal}
17
+ textFilter={textFilter}
18
+ />
19
+ </SCProvider>
20
+ );
21
+
22
+ describe('Test TabHeader', () => {
23
+ let tree;
24
+
25
+ const current = 0;
26
+ const getCurrentTab = () => {};
27
+ const showModal = true;
28
+ const textFilter = '';
29
+
30
+ it('render TabHeader', async () => {
31
+ act(() => {
32
+ tree = create(
33
+ wrapComponent(current, getCurrentTab, showModal, textFilter)
34
+ );
35
+ });
36
+ const instance = tree.root;
37
+ const touchableOpacity = instance.findAllByType(TouchableOpacity);
38
+ expect(touchableOpacity).toHaveLength(3);
39
+ });
40
+ });
@@ -3,7 +3,7 @@ import { View, TouchableOpacity, FlatList, RefreshControl } from 'react-native';
3
3
  import { useNavigation } from '@react-navigation/native';
4
4
  import Modal from 'react-native-modal';
5
5
  import { axiosGet } from '../../utils/Apis/axios';
6
- import { t } from 'i18n-js';
6
+ import { useTranslations } from '../../hooks/Common/useTranslations';
7
7
 
8
8
  import { API } from '../../configs';
9
9
  import Text from '../../commons/Text';
@@ -21,6 +21,7 @@ import { useSCContextSelector } from '../../context';
21
21
  const Shared = () => {
22
22
  useBlockBackAndroid();
23
23
  useTitleHeader(t('text_shared_with_me'));
24
+ const t = useTranslations();
24
25
  const navigation = useNavigation();
25
26
  const [tab, setTabActiveState] = useState(0);
26
27
 
@@ -102,7 +103,7 @@ const Shared = () => {
102
103
  textFilter: t('text_can_edit'),
103
104
  },
104
105
  ],
105
- []
106
+ [t]
106
107
  );
107
108
 
108
109
  return (
@@ -7,7 +7,7 @@ import {
7
7
  View,
8
8
  ActivityIndicator,
9
9
  } from 'react-native';
10
- import { t } from 'i18n-js';
10
+ import { useTranslations } from '../../hooks/Common/useTranslations';
11
11
 
12
12
  import { Colors } from '../../configs';
13
13
  import Routes from '../../utils/Route';
@@ -21,6 +21,7 @@ import { TESTID } from '../../configs/Constants';
21
21
  import { useSCContextSelector } from '../../context';
22
22
 
23
23
  const MemberList = ({ route }) => {
24
+ const t = useTranslations();
24
25
  const { navigate } = useNavigation();
25
26
  const account = useSCContextSelector((state) => state.auth.account);
26
27
  const { unitId, unit } = route.params;
@@ -8,7 +8,7 @@ import {
8
8
  Platform,
9
9
  } from 'react-native';
10
10
  import { useNavigation } from '@react-navigation/native';
11
- import { t } from 'i18n-js';
11
+ import { useTranslations } from '../../hooks/Common/useTranslations';
12
12
 
13
13
  import { API, Colors } from '../../configs';
14
14
  import ViewButtonBottom from '../../commons/ViewButtonBottom';
@@ -23,6 +23,7 @@ import { TESTID } from '../../configs/Constants';
23
23
  let dataStationTemp = [];
24
24
 
25
25
  const SelectPermission = ({ route }) => {
26
+ const t = useTranslations();
26
27
  const { unit } = route.params;
27
28
  const navigation = useNavigation();
28
29
  const [dataStations, setDataStations] = useState([]);
@@ -7,7 +7,7 @@ import {
7
7
  SafeAreaView,
8
8
  } from 'react-native';
9
9
  import { useNavigation } from '@react-navigation/native';
10
- import { t } from 'i18n-js';
10
+ import { useTranslations } from '../../hooks/Common/useTranslations';
11
11
 
12
12
  import { API, Colors, Theme } from '../../configs';
13
13
  import AccountList from '../../commons/Auth/AccountList';
@@ -22,6 +22,7 @@ import { TESTID } from '../../configs/Constants';
22
22
  import Text from '../../commons/Text';
23
23
 
24
24
  const SelectUser = ({ route }) => {
25
+ const t = useTranslations();
25
26
  const navigation = useNavigation();
26
27
  const { unit, permissions } = route.params;
27
28
  const [errorText, setErrorText] = useState('');
@@ -64,7 +65,7 @@ const SelectUser = ({ route }) => {
64
65
  }
65
66
  setErrorText('');
66
67
  sharePermissions(phone, email);
67
- }, [content, sharePermissions]);
68
+ }, [content, sharePermissions, t]);
68
69
 
69
70
  const onPressNext = useCallback(() => {
70
71
  navigation.dangerouslyGetParent().goBack();
@@ -3,14 +3,15 @@ import React from 'react';
3
3
  import { create, act } from 'react-test-renderer';
4
4
  import axios from 'axios';
5
5
  import Toast from 'react-native-toast-message';
6
- import { useSelector } from 'react-redux';
7
6
  import MemberList from '../MemberList';
8
7
  import { AlertAction } from '../../../commons';
9
8
  import SharingMembers from '../../../commons/Sharing/MemberList';
10
9
  import API from '../../../configs/API';
11
- import { t } from 'i18n-js';
12
10
  import { TESTID } from '../../../configs/Constants';
13
11
  import { TouchableOpacity } from 'react-native';
12
+ import { getTranslate } from '../../../utils/I18n';
13
+ import { SCProvider } from '../../../context';
14
+ import { mockSCStore } from '../../../context/mockStore';
14
15
  import Routes from '../../../utils/Route';
15
16
 
16
17
  const mockedNavigate = jest.fn();
@@ -41,24 +42,25 @@ jest.mock('react-redux', () => {
41
42
  };
42
43
  });
43
44
 
45
+ const wrapComponent = (route, state) => (
46
+ <SCProvider initState={mockSCStore(state)}>
47
+ <MemberList route={route} />
48
+ </SCProvider>
49
+ );
50
+
44
51
  describe('test MemberList', () => {
45
52
  let route;
46
- let account;
47
-
48
- beforeEach(() => {
49
- const localState = {
50
- auth: {
51
- account: {
52
- user: {
53
- id: 2,
54
- },
53
+ let localState = {
54
+ auth: {
55
+ account: {
56
+ user: {
57
+ id: 2,
55
58
  },
56
59
  },
57
- };
58
- useSelector.mockImplementation((cb) => {
59
- return cb(localState);
60
- });
60
+ },
61
+ };
61
62
 
63
+ beforeEach(() => {
62
64
  route = {
63
65
  params: {
64
66
  unitId: 1,
@@ -69,11 +71,6 @@ describe('test MemberList', () => {
69
71
  },
70
72
  },
71
73
  };
72
- account = {
73
- user: {
74
- id: 1,
75
- },
76
- };
77
74
  });
78
75
 
79
76
  afterEach(() => {
@@ -82,7 +79,7 @@ describe('test MemberList', () => {
82
79
 
83
80
  test('render MemberList', async () => {
84
81
  await act(async () => {
85
- await create(<MemberList route={route} account={account} />);
82
+ await create(wrapComponent(route, localState));
86
83
  });
87
84
  expect(axios.get).toHaveBeenCalledWith(API.SHARE.UNITS_MEMBERS(1), {});
88
85
  });
@@ -98,7 +95,7 @@ describe('test MemberList', () => {
98
95
 
99
96
  let tree;
100
97
  await act(async () => {
101
- tree = await create(<MemberList route={route} account={account} />);
98
+ tree = await create(wrapComponent(route, localState));
102
99
  });
103
100
  const instance = tree.root;
104
101
  const alertAction = instance.findByType(AlertAction);
@@ -111,8 +108,8 @@ describe('test MemberList', () => {
111
108
  expect(Toast.show).toHaveBeenCalledWith({
112
109
  type: 'success',
113
110
  position: 'bottom',
114
- text1: t('sharing_removed_user', {
115
- name: '[missing %{name} value]',
111
+ text1: getTranslate('en', 'sharing_removed_user', {
112
+ name: 'undefined',
116
113
  }),
117
114
  visibilityTime: 1000,
118
115
  });
@@ -134,7 +131,7 @@ describe('test MemberList', () => {
134
131
 
135
132
  let tree;
136
133
  await act(async () => {
137
- tree = await create(<MemberList route={route} account={account} />);
134
+ tree = await create(wrapComponent(route, localState));
138
135
  });
139
136
  const instance = tree.root;
140
137
  const sharingMember = instance.findAllByType(SharingMembers);
@@ -158,7 +155,7 @@ describe('test MemberList', () => {
158
155
 
159
156
  let tree;
160
157
  await act(async () => {
161
- tree = await create(<MemberList route={route} account={account} />);
158
+ tree = await create(wrapComponent(route, localState));
162
159
  });
163
160
  const instance = tree.root;
164
161
  const button = instance.find(
@@ -172,7 +169,7 @@ describe('test MemberList', () => {
172
169
  expect(axios.get).toHaveBeenCalledWith(API.SHARE.UNITS_MEMBERS(1), {});
173
170
  expect(mockedNavigate).toHaveBeenCalledWith(Routes.AddMemberStack, {
174
171
  screen: Routes.SharingSelectPermission,
175
- params: { unit: { id: 1 } },
172
+ params: { unit: { id: route.params.unitId } },
176
173
  });
177
174
  });
178
175
 
@@ -193,7 +190,7 @@ describe('test MemberList', () => {
193
190
 
194
191
  let tree;
195
192
  await act(async () => {
196
- tree = await create(<MemberList route={route} account={account} />);
193
+ tree = await create(wrapComponent(route, localState));
197
194
  });
198
195
  const instance = tree.root;
199
196
  const button = instance.find(
@@ -7,6 +7,8 @@ import axios from 'axios';
7
7
  import { SensorItem, TitleCheckBox } from '../Components';
8
8
  import { ViewButtonBottom } from '../../../commons';
9
9
  import Routes from '../../../utils/Route';
10
+ import { SCProvider } from '../../../context';
11
+ import { mockSCStore } from '../../../context/mockStore';
10
12
 
11
13
  jest.mock('axios');
12
14
 
@@ -31,6 +33,12 @@ jest.mock('@react-navigation/native', () => {
31
33
  };
32
34
  });
33
35
 
36
+ const wrapComponent = (route) => (
37
+ <SCProvider initState={mockSCStore({})}>
38
+ <SelectPermission route={route} />
39
+ </SCProvider>
40
+ );
41
+
34
42
  describe('Test SelectPermission', () => {
35
43
  let tree;
36
44
  let route = { params: { unit: null } };
@@ -81,7 +89,7 @@ describe('Test SelectPermission', () => {
81
89
  it('test unit null', () => {
82
90
  Platform.OS = 'android';
83
91
  act(() => {
84
- tree = create(<SelectPermission route={route} />);
92
+ tree = create(wrapComponent(route));
85
93
  });
86
94
  expect(axios.get).not.toBeCalled();
87
95
  });
@@ -93,11 +101,11 @@ describe('Test SelectPermission', () => {
93
101
  route.params.unit = 1;
94
102
  axios.get.mockImplementationOnce(() => ({ status: 200, data: [] }));
95
103
  act(() => {
96
- tree = create(<SelectPermission route={route} />);
104
+ tree = create(wrapComponent(route));
97
105
  });
98
106
  const instance = tree.root;
99
107
  const TextElement = instance.findAllByType(Text);
100
- expect(TextElement[2].props.children).toBe('Không có dữ liệu');
108
+ expect(TextElement[2].props.children).toBe('No data');
101
109
  });
102
110
 
103
111
  it('test get unit fail', () => {
@@ -106,17 +114,17 @@ describe('Test SelectPermission', () => {
106
114
  route.params.unit = 1;
107
115
  axios.get.mockImplementationOnce(() => ({ status: 400, data: [] }));
108
116
  act(() => {
109
- tree = create(<SelectPermission route={route} />);
117
+ tree = create(wrapComponent(route));
110
118
  });
111
119
  const instance = tree.root;
112
120
  const TextElement = instance.findAllByType(Text);
113
- expect(TextElement[2].props.children).toBe('Không có dữ liệu');
121
+ expect(TextElement[2].props.children).toBe('No data');
114
122
  });
115
123
 
116
124
  it('render list', () => {
117
125
  mocSetdata();
118
126
  act(() => {
119
- tree = create(<SelectPermission route={route} />);
127
+ tree = create(wrapComponent(route));
120
128
  });
121
129
  const instance = tree.root;
122
130
  const FlatListElement = instance.findAllByType(FlatList);
@@ -151,7 +159,7 @@ describe('Test SelectPermission', () => {
151
159
  it('test onTickedChild function', () => {
152
160
  mocSetdata();
153
161
  act(() => {
154
- tree = create(<SelectPermission route={route} />);
162
+ tree = create(wrapComponent(route));
155
163
  });
156
164
  const instance = tree.root;
157
165
  const SensorItemElement = instance.findAllByType(SensorItem);
@@ -165,7 +173,7 @@ describe('Test SelectPermission', () => {
165
173
  it('test ViewButtonBottom', () => {
166
174
  mocSetdata();
167
175
  act(() => {
168
- tree = create(<SelectPermission route={route} />);
176
+ tree = create(wrapComponent(route));
169
177
  });
170
178
  const instance = tree.root;
171
179
  const ViewButtonBottomElement = instance.findAllByType(ViewButtonBottom);
@@ -3,12 +3,20 @@ import { create, act } from 'react-test-renderer';
3
3
  import axios from 'axios';
4
4
 
5
5
  import SelectUser from '../SelectUser';
6
- import { t } from 'i18n-js';
7
6
  import { TESTID } from '../../../configs/Constants';
8
7
  import { ViewButtonBottom, Button } from '../../../commons';
9
8
  import _TextInput from '../../../commons/Form/TextInput';
10
9
  import AccountList from '../../../commons/Auth/AccountList';
11
10
  import { API } from '../../../configs';
11
+ import { getTranslate } from '../../../utils/I18n';
12
+ import { SCProvider } from '../../../context';
13
+ import { mockSCStore } from '../../../context/mockStore';
14
+
15
+ const wrapComponent = (route) => (
16
+ <SCProvider initState={mockSCStore({})}>
17
+ <SelectUser route={route} />
18
+ </SCProvider>
19
+ );
12
20
 
13
21
  const mockedNavigate = jest.fn();
14
22
  const mockedGoBack = jest.fn();
@@ -73,7 +81,7 @@ describe('test SelectUser container', () => {
73
81
 
74
82
  test('create', async () => {
75
83
  await act(async () => {
76
- tree = create(<SelectUser route={route} />);
84
+ tree = create(wrapComponent(route));
77
85
  });
78
86
  const instance = tree.root;
79
87
  const textTitle = findByTestId(instance, TESTID.SELECT_USER_ADD_USER_TITLE);
@@ -81,18 +89,26 @@ describe('test SelectUser container', () => {
81
89
  instance,
82
90
  TESTID.SELECT_USER_ADD_USER_SUB_TITLE
83
91
  );
84
- expect(textTitle.props.children).toEqual(t('add_user_title'));
85
- expect(textSubTitle.props.children).toEqual(t('add_user_sub_title'));
92
+ expect(textTitle.props.children).toEqual(
93
+ getTranslate('en', 'add_user_title')
94
+ );
95
+ expect(textSubTitle.props.children).toEqual(
96
+ getTranslate('en', 'add_user_sub_title')
97
+ );
86
98
  });
87
99
 
88
100
  test('viewButtonBottom and onLeftClick', async () => {
89
101
  await act(async () => {
90
- tree = create(<SelectUser route={route} />);
102
+ tree = create(wrapComponent(route));
91
103
  });
92
104
  const instance = tree.root;
93
105
  const viewButtonBottom = instance.findByType(ViewButtonBottom);
94
- expect(viewButtonBottom.props.leftTitle).toEqual(t('cancel'));
95
- expect(viewButtonBottom.props.rightTitle).toEqual(t('done'));
106
+ expect(viewButtonBottom.props.leftTitle).toEqual(
107
+ getTranslate('en', 'cancel')
108
+ );
109
+ expect(viewButtonBottom.props.rightTitle).toEqual(
110
+ getTranslate('en', 'done')
111
+ );
96
112
  act(() => {
97
113
  viewButtonBottom.props.onLeftClick();
98
114
  });
@@ -101,7 +117,7 @@ describe('test SelectUser container', () => {
101
117
 
102
118
  test('viewButtonBottom onRightClick', async () => {
103
119
  await act(async () => {
104
- tree = create(<SelectUser route={route} />);
120
+ tree = create(wrapComponent(route));
105
121
  });
106
122
  const instance = tree.root;
107
123
  const viewButtonBottom = instance.findByType(ViewButtonBottom);
@@ -121,16 +137,18 @@ describe('test SelectUser container', () => {
121
137
  mockAxiosPost(response);
122
138
 
123
139
  await act(async () => {
124
- tree = await create(<SelectUser route={route} />);
140
+ tree = await create(wrapComponent(route));
125
141
  });
126
142
  const instance = tree.root;
127
143
 
128
144
  const textInput = instance.findByType(_TextInput);
129
- expect(textInput.props.placeholder).toEqual(t('phone_number_or_email'));
145
+ expect(textInput.props.placeholder).toEqual(
146
+ getTranslate('en', 'phone_number_or_email')
147
+ );
130
148
  expect(textInput.props.errorText).toEqual('');
131
149
 
132
150
  const button = instance.findByType(Button);
133
- expect(button.props.title).toEqual(t('add_user_invite'));
151
+ expect(button.props.title).toEqual(getTranslate('en', 'add_user_invite'));
134
152
  expect(button.props.type).toEqual('primary');
135
153
 
136
154
  let accountList = instance.findAllByType(AccountList);
@@ -173,7 +191,7 @@ describe('test SelectUser container', () => {
173
191
  };
174
192
 
175
193
  await act(async () => {
176
- tree = create(<SelectUser route={route} />);
194
+ tree = create(wrapComponent(route));
177
195
  });
178
196
  const instance = tree.root;
179
197
  const textInput = instance.findByType(_TextInput);
@@ -210,7 +228,7 @@ describe('test SelectUser container', () => {
210
228
  mockAxiosPost(response);
211
229
 
212
230
  await act(async () => {
213
- tree = create(<SelectUser route={route} />);
231
+ tree = create(wrapComponent(route));
214
232
  });
215
233
  const instance = tree.root;
216
234
 
@@ -228,7 +246,7 @@ describe('test SelectUser container', () => {
228
246
  });
229
247
 
230
248
  expect(textInput.props.errorText).toEqual(
231
- t('invalid_phone_number_or_email')
249
+ getTranslate('en', 'invalid_phone_number_or_email')
232
250
  );
233
251
  expect(axios.post).not.toHaveBeenCalled();
234
252
  });
@@ -238,7 +256,7 @@ describe('test SelectUser container', () => {
238
256
  mockAxiosPost(response);
239
257
 
240
258
  await act(async () => {
241
- tree = create(<SelectUser route={route} />);
259
+ tree = create(wrapComponent(route));
242
260
  });
243
261
  const instance = tree.root;
244
262
 
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
2
  import { useNavigation } from '@react-navigation/native';
3
- import { t } from 'i18n-js';
3
+ import { useTranslations } from '../../../hooks/Common/useTranslations';
4
4
 
5
5
  import { API } from '../../../configs';
6
6
  import Routes from '../../../utils/Route';
@@ -8,6 +8,7 @@ import { axiosDelete, axiosGet } from '../../../utils/Apis/axios';
8
8
  import { ToastBottomHelper } from '../../../utils/Utils';
9
9
 
10
10
  const useDataMember = (unitId) => {
11
+ const t = useTranslations();
11
12
  const { navigate, addListener } = useNavigation();
12
13
  const [dataMembers, setDataMembers] = useState([]);
13
14
  const [loading, setLoading] = useState(false);
@@ -30,7 +31,7 @@ const useDataMember = (unitId) => {
30
31
  );
31
32
  setDataMembers(dataMembers.filter((item) => item.share_id !== id));
32
33
  },
33
- [dataMembers, unitId]
34
+ [dataMembers, t, unitId]
34
35
  );
35
36
  const leaveUnit = useCallback(
36
37
  (unitName) => async () => {
@@ -39,7 +40,7 @@ const useDataMember = (unitId) => {
39
40
  setDataMembers([]);
40
41
  navigate(Routes.Dashboard);
41
42
  },
42
- [navigate, unitId]
43
+ [navigate, t, unitId]
43
44
  );
44
45
 
45
46
  const onRefresh = useCallback(async () => {
@@ -74,6 +75,7 @@ const useDataMember = (unitId) => {
74
75
  };
75
76
 
76
77
  const useStateAlertAction = () => {
78
+ const t = useTranslations();
77
79
  const [stateAlertAction, setStateAlertAction] = useState({
78
80
  visible: false,
79
81
  title: '',
@@ -85,19 +87,22 @@ const useStateAlertAction = () => {
85
87
  const hideAlertAction = useCallback(() => {
86
88
  setStateAlertAction({ ...stateAlertAction, visible: false });
87
89
  }, [stateAlertAction]);
88
- const onPressRemoveUser = useCallback((member) => {
89
- setStateAlertAction((action) => {
90
- let name = member.name || 'N/A';
91
- return {
92
- ...action,
93
- visible: true,
94
- title: t('sharing_remove_user', { name: name }),
95
- message: t('sharing_remove_user_message', { name: name }),
96
- rightButton: t('remove'),
97
- member: member,
98
- };
99
- });
100
- }, []);
90
+ const onPressRemoveUser = useCallback(
91
+ (member) => {
92
+ setStateAlertAction((action) => {
93
+ let name = member.name || 'N/A';
94
+ return {
95
+ ...action,
96
+ visible: true,
97
+ title: t('sharing_remove_user', { name: name }),
98
+ message: t('sharing_remove_user_message', { name: name }),
99
+ rightButton: t('remove'),
100
+ member: member,
101
+ };
102
+ });
103
+ },
104
+ [t]
105
+ );
101
106
  const stateLeaveUnit = useCallback(() => {
102
107
  setStateAlertAction((action) => {
103
108
  return {
@@ -109,7 +114,7 @@ const useStateAlertAction = () => {
109
114
  member: null,
110
115
  };
111
116
  });
112
- }, []);
117
+ }, [t]);
113
118
 
114
119
  return {
115
120
  stateAlertAction,
@@ -7,7 +7,7 @@ import {
7
7
  SafeAreaView,
8
8
  } from 'react-native';
9
9
  import { useNavigation } from '@react-navigation/native';
10
- import { t } from 'i18n-js';
10
+ import { useTranslations } from '../../hooks/Common/useTranslations';
11
11
 
12
12
  import { API, Colors } from '../../configs';
13
13
  import { ViewButtonBottom, ImagePicker } from '../../commons';
@@ -20,6 +20,7 @@ import { TESTID } from '../../configs/Constants';
20
20
  import styles from './AddSubUnitStyles';
21
21
 
22
22
  const AddSubUnit = ({ route }) => {
23
+ const t = useTranslations();
23
24
  const navigation = useNavigation();
24
25
  const { unit, addType } = route.params;
25
26
  const [roomName, setRoomName] = useState('');
@@ -56,7 +57,7 @@ const AddSubUnit = ({ route }) => {
56
57
  } else {
57
58
  ToastBottomHelper.error(t('text_create_sub_unit_fail'));
58
59
  }
59
- }, [addType, navigation, roomName, route.params, unit, wallpaper]);
60
+ }, [addType, navigation, roomName, route.params, t, unit, wallpaper]);
60
61
 
61
62
  const onChoosePhoto = useCallback(() => {
62
63
  setShowImagePicker(true);