@eohjsc/react-native-smart-city 0.3.4 → 0.3.7

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 (293) hide show
  1. package/README.md +15 -36
  2. package/package.json +5 -9
  3. package/react-native-smart-city.podspec +0 -1
  4. package/src/commons/Action/ItemQuickAction.js +4 -16
  5. package/src/commons/Action/__test__/ItemQuickAction.test.js +6 -11
  6. package/src/commons/ActionGroup/ColorPickerTemplate.js +24 -37
  7. package/src/commons/ActionGroup/CurtainButtonTemplate.js +5 -10
  8. package/src/commons/ActionGroup/NumberUpDownActionTemplate.js +31 -12
  9. package/src/commons/ActionGroup/OnOffSmartLock/AutoLock/__test__/index.test.js +0 -4
  10. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/ItemPasscode.js +1 -1
  11. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/__test__/index.test.js +0 -14
  12. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/index.js +0 -1
  13. package/src/commons/ActionGroup/OnOffTemplate/OnOffButtonTemplate.js +2 -8
  14. package/src/commons/ActionGroup/OnOffTemplate/OnOffSimpleTemplate.js +10 -10
  15. package/src/commons/ActionGroup/OnOffTemplate/index.js +2 -3
  16. package/src/commons/ActionGroup/OptionsDropdownActionTemplate.js +9 -7
  17. package/src/commons/ActionGroup/SliderRangeTemplate.js +2 -6
  18. package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +3 -7
  19. package/src/commons/ActionGroup/StatesGridActionTemplate.js +8 -22
  20. package/src/commons/ActionGroup/TimerActionTemplate.js +3 -11
  21. package/src/commons/ActionGroup/TwoButtonTemplate/index.js +5 -1
  22. package/src/commons/ActionGroup/__test__/CurtainButtonTemplate.test.js +4 -53
  23. package/src/commons/ActionGroup/__test__/NumberUpDownTemplate.test.js +83 -3
  24. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +14 -14
  25. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +78 -53
  26. package/src/commons/ActionGroup/__test__/OneBigButtonTemplate.test.js +20 -36
  27. package/src/commons/ActionGroup/__test__/OptionsDropdownTemplate.test.js +57 -1
  28. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +6 -58
  29. package/src/commons/ActionGroup/__test__/TwoButtonTemplate.test.js +1 -49
  30. package/src/commons/ActionGroup/__test__/index.test.js +4 -142
  31. package/src/commons/Auth/AccountList.js +1 -1
  32. package/src/commons/Automate/ItemAutomate.js +3 -1
  33. package/src/commons/Connecting/__test__/Connecting.test.js +2 -19
  34. package/src/commons/ConnectingProcess/DeviceItem/DeviceItem.js +3 -7
  35. package/src/commons/ConnectingProcess/DeviceItem/DeviceItemStyles.js +11 -8
  36. package/src/commons/ConnectingProcess/__test__/Connecting.test.js +3 -136
  37. package/src/commons/ConnectingProcess/__test__/DeviceItem.test.js +2 -3
  38. package/src/commons/ConnectingProcess/index.js +25 -75
  39. package/src/commons/Dashboard/MyPinnedSharedUnit/__test__/MyPinnedSharedUnit.test.js +13 -16
  40. package/src/commons/Dashboard/MyPinnedSharedUnit/index.js +1 -1
  41. package/src/commons/Dashboard/MyUnit/__test__/MyUnit.test.js +5 -0
  42. package/src/commons/Device/ConnectedViewHeader.js +1 -1
  43. package/src/commons/Device/HistoryChart.js +3 -7
  44. package/src/commons/Device/ItemDevice.js +12 -19
  45. package/src/commons/Device/LinearChart.js +0 -15
  46. package/src/commons/Device/PMSensor/PMSensorIndicatior.js +12 -16
  47. package/src/commons/Device/PMSensor/PMSensorIndicatorStyles.js +0 -3
  48. package/src/commons/Device/SonosSpeaker/index.js +1 -1
  49. package/src/commons/Device/WaterQualitySensor/ListQualityIndicator.js +0 -1
  50. package/src/commons/Device/WaterQualitySensor/QualityIndicatorsItem.js +2 -7
  51. package/src/commons/Explore/__test__/CityItem.test.js +54 -33
  52. package/src/commons/Form/CurrencyInput.js +1 -15
  53. package/src/commons/Form/TextInputPassword.js +1 -1
  54. package/src/commons/FullLoading/index.js +1 -2
  55. package/src/commons/Header/HeaderCustom.js +1 -2
  56. package/src/commons/HeaderAni/index.js +1 -6
  57. package/src/commons/HorizontalPicker/index.js +2 -2
  58. package/src/commons/MediaPlayerDetail/Styles/MediaPlayerDetailStyles.js +6 -0
  59. package/src/commons/MediaPlayerDetail/index.js +47 -25
  60. package/src/commons/MenuActionAddnew/index.js +0 -1
  61. package/src/commons/MenuActionList/index.js +0 -1
  62. package/src/commons/MenuActionMore/index.js +1 -1
  63. package/src/commons/PreventAccess/index.js +1 -9
  64. package/src/commons/Sharing/MemberList.js +2 -10
  65. package/src/commons/Sharing/WrapHeaderScrollable.js +0 -2
  66. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +1 -0
  67. package/src/commons/SubUnit/Favorites/index.js +3 -2
  68. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +35 -8
  69. package/src/commons/SubUnit/OneTap/index.js +2 -1
  70. package/src/commons/SubUnit/ShortDetail.js +9 -25
  71. package/src/commons/SubUnit/__test__/Item.test.js +1 -0
  72. package/src/commons/SubUnit/__test__/ShortDetail.test.js +2 -9
  73. package/src/commons/Unit/SharedUnit.js +0 -1
  74. package/src/commons/Unit/__test__/SharedUnit.test.js +183 -38
  75. package/src/commons/UnitSummary/ConfigHistoryChart/index.js +13 -2
  76. package/src/commons/UnitSummary/ConfigHistoryChart.js +13 -22
  77. package/src/commons/WheelDateTimePicker/index.js +3 -4
  78. package/src/configs/API.js +143 -87
  79. package/src/configs/Constants.js +2 -57
  80. package/src/configs/SCConfig.js +0 -4
  81. package/src/context/actionType.ts +0 -8
  82. package/src/context/mockStore.ts +0 -10
  83. package/src/context/reducer.ts +2 -38
  84. package/src/hooks/Common/index.js +0 -2
  85. package/src/hooks/Common/useGetIdUser.js +5 -1
  86. package/src/hooks/Common/useSensorsStatus.js +4 -4
  87. package/src/hooks/useReceiveNotifications.js +5 -9
  88. package/src/iot/Monitor.js +2 -3
  89. package/src/iot/RemoteControl/Bluetooth.js +1 -1
  90. package/src/iot/RemoteControl/GoogleHome.js +49 -75
  91. package/src/iot/RemoteControl/Internet.js +1 -1
  92. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +48 -95
  93. package/src/iot/RemoteControl/__test__/Internet.test.js +7 -18
  94. package/src/iot/RemoteControl/__test__/LgThinq.test.js +177 -36
  95. package/src/iot/RemoteControl/index.js +52 -52
  96. package/src/navigations/UnitStack.js +20 -11
  97. package/src/screens/AQIGuide/index.js +1 -1
  98. package/src/screens/ActivityLog/FilterPopup.js +0 -2
  99. package/src/screens/ActivityLog/__test__/index.test.js +23 -38
  100. package/src/screens/ActivityLog/hooks/__test__/index.test.js +90 -51
  101. package/src/screens/ActivityLog/hooks/index.js +1 -1
  102. package/src/screens/ActivityLog/index.js +2 -2
  103. package/src/screens/AddCommon/SelectSubUnit.js +0 -1
  104. package/src/screens/AddCommon/SelectUnit.js +0 -1
  105. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +24 -13
  106. package/src/screens/AddCommon/__test__/SelectUnit.test.js +33 -9
  107. package/src/screens/AddLocationMaps/index.js +5 -9
  108. package/src/screens/AddNewAction/SelectAction.js +8 -8
  109. package/src/screens/AddNewAction/SelectSensorDevices.js +2 -8
  110. package/src/screens/AddNewAction/SetupSensor.js +7 -7
  111. package/src/screens/AddNewAction/__test__/SelectAction.test.js +91 -10
  112. package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +26 -40
  113. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +1 -3
  114. package/src/screens/AddNewAutoSmart/index.js +2 -5
  115. package/src/screens/AddNewDevice/ConnectingDevices.js +3 -3
  116. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +34 -42
  117. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +4 -0
  118. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +22 -22
  119. package/src/screens/AddNewDevice/hooks/ConnectDevices.js +1 -1
  120. package/src/screens/AddNewDevice/index.js +0 -1
  121. package/src/screens/AddNewGateway/PlugAndPlay/ConnectWifiWarning.js +17 -23
  122. package/src/screens/AddNewGateway/PlugAndPlay/GatewayWifiList.js +4 -7
  123. package/src/screens/AddNewGateway/SelectGateway.js +0 -1
  124. package/src/screens/AddNewGateway/SetupGatewayWifi.js +0 -2
  125. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +6 -4
  126. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +4 -0
  127. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +29 -5
  128. package/src/screens/AddNewGateway/__test__/SelectGateway.test.js +4 -0
  129. package/src/screens/AddNewGateway/__test__/SetupGateway.test.js +4 -0
  130. package/src/screens/AddNewGateway/index.js +0 -1
  131. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +24 -10
  132. package/src/screens/AddNewOneTap/index.js +2 -3
  133. package/src/screens/AllCamera/index.js +4 -4
  134. package/src/screens/Automate/MultiUnits.js +8 -8
  135. package/src/screens/Automate/__test__/MultiUnits.test.js +9 -6
  136. package/src/screens/Automate/__test__/index.test.js +12 -7
  137. package/src/screens/Automate/index.js +3 -5
  138. package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +8 -36
  139. package/src/screens/ConfirmUnitDeletion/index.js +1 -7
  140. package/src/screens/Device/EditDevice/__test__/EditDevice.test.js +22 -71
  141. package/src/screens/Device/EditDevice/index.js +15 -17
  142. package/src/screens/Device/__test__/detail.test.js +86 -33
  143. package/src/screens/Device/components/DetailHistoryChart.js +1 -1
  144. package/src/screens/Device/components/SensorConnectStatusViewHeader.js +0 -1
  145. package/src/screens/Device/components/SensorDisplayItem.js +2 -5
  146. package/src/screens/Device/detail.js +24 -80
  147. package/src/screens/Device/hooks/useDisconnectedDevice.js +4 -4
  148. package/src/screens/Device/hooks/useFavoriteDevice.js +9 -5
  149. package/src/screens/DeviceInfo/__test__/index.test.js +2 -0
  150. package/src/screens/EditActionsList/index.js +1 -1
  151. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +3 -6
  152. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +19 -7
  153. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +2 -20
  154. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +23 -40
  155. package/src/screens/EmergencySetting/components/DropDownItem.js +2 -2
  156. package/src/screens/EmergencySetting/index.js +1 -4
  157. package/src/screens/EnterPassword/__test__/EnterPassword.test.js +25 -41
  158. package/src/screens/Explore/index.js +0 -2
  159. package/src/screens/GuestInfo/__test__/index.test.js +41 -14
  160. package/src/screens/GuestInfo/components/RecurringDetail.js +0 -1
  161. package/src/screens/GuestInfo/components/TemporaryDetail.js +2 -2
  162. package/src/screens/HanetCamera/Detail.js +1 -1
  163. package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +12 -8
  164. package/src/screens/HanetCamera/__test__/Detail.test.js +42 -27
  165. package/src/screens/HanetCamera/__test__/ManageAccess.test.js +5 -8
  166. package/src/screens/HanetCamera/__test__/MemberInfo.test.js +32 -10
  167. package/src/screens/HanetCamera/components/RequestFaceIDPopup.js +2 -3
  168. package/src/screens/HanetCamera/hooks/__test__/useHanetCheckinData.test.js +35 -43
  169. package/src/screens/HanetCamera/hooks/__test__/useHanetPlaceMembers.test.js +21 -10
  170. package/src/screens/HanetCamera/hooks/useHanetCheckinData.js +11 -11
  171. package/src/screens/HanetCamera/hooks/useHanetPlaceMembers.js +11 -11
  172. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +22 -33
  173. package/src/screens/ManageAccess/hooks/__test__/useManageAccess.test.js +45 -44
  174. package/src/screens/ManageAccess/hooks/index.js +4 -7
  175. package/src/screens/ManageAccess/index.js +1 -2
  176. package/src/screens/MoveToAnotherSubUnit/__test__/index.test.js +12 -35
  177. package/src/screens/MoveToAnotherSubUnit/index.js +6 -6
  178. package/src/screens/Notification/__test__/Notification.test.js +25 -14
  179. package/src/screens/Notification/__test__/NotificationItem.test.js +7 -8
  180. package/src/screens/Notification/components/NotificationItem.js +20 -17
  181. package/src/screens/Notification/index.js +2 -9
  182. package/src/screens/PlayBackCamera/Timer.js +2 -2
  183. package/src/screens/PlayBackCamera/__test__/index.test.js +2 -87
  184. package/src/screens/PlayBackCamera/index.js +6 -22
  185. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +20 -7
  186. package/src/screens/ScanChipQR/components/QRScan/index.js +0 -1
  187. package/src/screens/ScanChipQR/hooks/index.js +16 -15
  188. package/src/screens/ScanSensorQR/__test__/ScanSensorQR.test.js +24 -8
  189. package/src/screens/ScriptDetail/__test__/index.test.js +86 -17
  190. package/src/screens/ScriptDetail/index.js +14 -19
  191. package/src/screens/SelectUnit/__test__/index.test.js +55 -12
  192. package/src/screens/SelectUnit/index.js +4 -9
  193. package/src/screens/SetSchedule/index.js +11 -15
  194. package/src/screens/SharedUnit/__test__/TabHeader.test.js +2 -0
  195. package/src/screens/SharedUnit/index.js +0 -2
  196. package/src/screens/Sharing/Components/SensorItem.js +12 -10
  197. package/src/screens/Sharing/InfoMemberUnit.js +1 -1
  198. package/src/screens/Sharing/MemberList.js +11 -12
  199. package/src/screens/Sharing/SelectPermission.js +76 -121
  200. package/src/screens/Sharing/__test__/InfoMemberUnit.test.js +29 -47
  201. package/src/screens/Sharing/__test__/MemberList.test.js +127 -13
  202. package/src/screens/Sharing/__test__/SelectPermission.test.js +38 -28
  203. package/src/screens/Sharing/__test__/SelectUser.test.js +38 -17
  204. package/src/screens/Sharing/hooks/index.js +0 -3
  205. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +2 -3
  206. package/src/screens/SmartIr/components/SelectBrand.js +1 -1
  207. package/src/screens/SubUnit/AddSubUnit.js +17 -23
  208. package/src/screens/SubUnit/Detail.js +2 -1
  209. package/src/screens/SubUnit/EditSubUnit.js +13 -15
  210. package/src/screens/SubUnit/ManageSubUnit.js +7 -13
  211. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +89 -29
  212. package/src/screens/SubUnit/__test__/Detail.test.js +8 -31
  213. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +89 -21
  214. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +1 -27
  215. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +45 -48
  216. package/src/screens/SubUnit/hooks/useManageSubUnit.js +7 -7
  217. package/src/screens/SyncLGDevice/AddLGDevice.js +0 -1
  218. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +91 -22
  219. package/src/screens/TDSGuide/index.js +1 -4
  220. package/src/screens/UVIndexGuide/index.js +1 -1
  221. package/src/screens/Unit/ChooseLocation.js +14 -7
  222. package/src/screens/Unit/Detail.js +75 -30
  223. package/src/screens/Unit/ManageUnit.js +0 -1
  224. package/src/screens/Unit/SelectAddress.js +23 -45
  225. package/src/screens/Unit/SmartAccount.js +4 -4
  226. package/src/screens/Unit/Station/index.js +0 -4
  227. package/src/screens/Unit/Summaries.js +2 -18
  228. package/src/screens/Unit/__test__/CheckSendEmail.test.js +29 -24
  229. package/src/screens/Unit/__test__/ChooseLocation.test.js +14 -27
  230. package/src/screens/Unit/__test__/Detail.test.js +200 -99
  231. package/src/screens/Unit/__test__/ManageUnit.test.js +42 -18
  232. package/src/screens/Unit/__test__/SelectAddress.test.js +49 -159
  233. package/src/screens/Unit/__test__/SmartAccount.test.js +9 -17
  234. package/src/screens/Unit/__test__/SmartAccountItem.test.js +1 -0
  235. package/src/screens/Unit/components/MyUnitDevice/index.js +4 -4
  236. package/src/screens/Unit/components/SharedUnit/index.js +0 -1
  237. package/src/screens/Unit/components/__test__/MyUnitDevice.test.js +2 -2
  238. package/src/screens/Unit/components/__test__/SharedUnit.test.js +34 -31
  239. package/src/screens/Unit/styles.js +0 -4
  240. package/src/screens/UnitSummary/__test__/index.test.js +30 -91
  241. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +2 -31
  242. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/__test__/index.test.js +4 -7
  243. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/index.js +13 -2
  244. package/src/screens/UnitSummary/components/PowerConsumption/__test__/ItemPower.test.js +1 -0
  245. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -14
  246. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -11
  247. package/src/screens/UnitSummary/components/RunningDevices/index.js +10 -7
  248. package/src/screens/UnitSummary/components/Temperature/index.js +4 -4
  249. package/src/screens/UnitSummary/components/WaterQuality/Item/index.js +2 -10
  250. package/src/screens/UnitSummary/index.js +1 -15
  251. package/src/screens/WaterQualityGuide/index.js +1 -1
  252. package/src/utils/Apis/axios.js +31 -54
  253. package/src/utils/Converter/time.js +18 -0
  254. package/src/utils/I18n/translations/en.json +1 -7
  255. package/src/utils/I18n/translations/vi.json +1 -8
  256. package/src/utils/Route/index.js +0 -1
  257. package/src/utils/Utils.js +7 -11
  258. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/__test__/ItemPasscode.test.js +0 -24
  259. package/src/commons/ActionGroup/__test__/NumberUpDownTemplateWithNullConfigValue.test.js +0 -60
  260. package/src/commons/ActionGroup/__test__/StatesGridActionTemplate.test.js +0 -77
  261. package/src/commons/Calendar/__test__/Calendar.test.js +0 -33
  262. package/src/commons/Device/Hanet/ItemHanetDevice.test.js +0 -58
  263. package/src/commons/FieldTemplate/ChooseUserField/ChooseFieldStyles.js +0 -25
  264. package/src/commons/FieldTemplate/ChooseUserField/ChoosePopup.js +0 -96
  265. package/src/commons/FieldTemplate/ChooseUserField/ChoosePopupStyles.js +0 -39
  266. package/src/commons/FieldTemplate/ChooseUserField/__test__/index.test.js +0 -118
  267. package/src/commons/FieldTemplate/ChooseUserField/index.js +0 -62
  268. package/src/commons/FieldTemplate/PasscodeField/PasscodeFieldStyles.js +0 -30
  269. package/src/commons/FieldTemplate/PasscodeField/__test__/index.test.js +0 -90
  270. package/src/commons/FieldTemplate/PasscodeField/index.js +0 -43
  271. package/src/commons/FieldTemplate/ScheduleField/ScheduleFieldStyles.js +0 -13
  272. package/src/commons/FieldTemplate/ScheduleField/__test__/index.test.js +0 -179
  273. package/src/commons/FieldTemplate/ScheduleField/index.js +0 -176
  274. package/src/commons/PreventAccess/__test__/PreventAccess.test.js +0 -62
  275. package/src/hooks/Common/useGGHomeDeviceConnected.js +0 -16
  276. package/src/hooks/IoT/__test__/useGGHomeConnection.test.js +0 -198
  277. package/src/hooks/IoT/__test__/useRemoteControl.test.js +0 -198
  278. package/src/hooks/IoT/index.js +0 -4
  279. package/src/hooks/IoT/useGGHomeConnection.js +0 -91
  280. package/src/hooks/IoT/useRemoteControl.js +0 -79
  281. package/src/hooks/index.js +0 -4
  282. package/src/navigations/UnitStackStyles.js +0 -21
  283. package/src/screens/Sharing/__test__/MemberList2.test.js +0 -80
  284. package/src/screens/SideMenuDetail/SideMenuDetailStyles.js +0 -28
  285. package/src/screens/SideMenuDetail/__test__/index.test.js +0 -154
  286. package/src/screens/SideMenuDetail/index.js +0 -148
  287. package/src/screens/Unit/__test__/Summaries.test.js +0 -100
  288. package/src/screens/Unit/components/MyAllUnit/__test__/MyAllUnit.test.js +0 -36
  289. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -54
  290. package/src/screens/Unit/hook/useUnitConnectRemoteDevices.js +0 -50
  291. package/src/utils/Permission/common.js +0 -67
  292. package/src/utils/Setting/Location.js +0 -30
  293. package/src/utils/__test__/Utils.test.js +0 -12
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
  import { act, create } from 'react-test-renderer';
3
- import MockAdapter from 'axios-mock-adapter';
4
- import { RefreshControl } from 'react-native';
5
-
6
3
  import Routes from '../../../utils/Route';
7
4
  import UnitSummary from '..';
5
+ import axios from 'axios';
8
6
  import { API } from '../../../configs';
7
+ import { RefreshControl } from 'react-native';
9
8
  import { TESTID } from '../../../configs/Constants';
10
9
  import { TouchableOpacity } from 'react-native';
11
10
  import AirQuality from '../../../commons/UnitSummary/AirQuality';
@@ -15,12 +14,10 @@ import RunningDevices from '../components/RunningDevices';
15
14
  import Temperature from '../components/Temperature';
16
15
  import UvIndex from '../components/UvIndex';
17
16
  import WaterQuality from '../components/WaterQuality';
18
- import { useReceiveNotifications } from '../../../hooks';
19
17
  import { SCProvider } from '../../../context';
20
18
  import { mockSCStore } from '../../../context/mockStore';
21
- import api from '../../../utils/Apis/axios';
22
19
 
23
- const mock = new MockAdapter(api.axiosInstance);
20
+ jest.mock('axios');
24
21
 
25
22
  const mockedNavigate = jest.fn();
26
23
 
@@ -33,19 +30,6 @@ jest.mock('@react-navigation/native', () => {
33
30
  };
34
31
  });
35
32
 
36
- jest.mock('react-native-onesignal', () => {
37
- return {
38
- setNotificationWillShowInForegroundHandler: jest.fn(),
39
- };
40
- });
41
-
42
- jest.mock('../../../hooks', () => {
43
- return {
44
- ...jest.requireActual('../../../hooks'),
45
- useReceiveNotifications: jest.fn(() => ({ dataNotification: null })),
46
- };
47
- });
48
-
49
33
  const wrapComponent = (route) => (
50
34
  <SCProvider initState={mockSCStore({})}>
51
35
  <UnitSummary route={route} />
@@ -56,15 +40,12 @@ describe('Test UnitSummary', () => {
56
40
  let route;
57
41
 
58
42
  beforeEach(() => {
59
- mock.resetHistory();
60
43
  Date.now = jest.fn(() => new Date('2021-01-24T12:00:00.000Z'));
61
44
  route = {
62
45
  params: {
63
- unitId: 1,
64
46
  unitData: {
65
47
  id: 1,
66
48
  },
67
- summaryId: 1,
68
49
  summaryData: {
69
50
  id: 1,
70
51
  name: '',
@@ -76,7 +57,6 @@ describe('Test UnitSummary', () => {
76
57
  let tree;
77
58
 
78
59
  test('onRefresh', async () => {
79
- mock.onGet(API.UNIT.UNIT_SUMMARY_DETAIL(1, 1)).reply(200);
80
60
  act(() => {
81
61
  tree = create(wrapComponent(route));
82
62
  });
@@ -85,94 +65,53 @@ describe('Test UnitSummary', () => {
85
65
  act(() => {
86
66
  refreshControl.props.onRefresh();
87
67
  });
88
- expect(refreshControl).toBeDefined();
68
+ expect(axios.get).toHaveBeenCalled();
69
+ expect(axios.get).toHaveBeenCalledWith(
70
+ API.UNIT.UNIT_SUMMARY_DETAIL(1, 1),
71
+ {}
72
+ );
89
73
  });
90
74
 
91
75
  test('render fetchSummaryDetail failed', async () => {
92
- mock.onGet(API.UNIT.UNIT_SUMMARY_DETAIL(1, 1)).reply(200, {});
93
- act(() => {
94
- tree = create(wrapComponent(route));
95
- });
96
- const instance = tree.root;
97
- const refreshControl = instance.findByType(RefreshControl);
98
- expect(refreshControl).toBeDefined();
99
- });
100
-
101
- test('render fetchSummaryDetail success', async () => {
102
- jest.useFakeTimers();
103
- mock.onGet(API.UNIT.UNIT_SUMMARY_DETAIL(1, 1)).reply(200);
104
- act(() => {
105
- tree = create(wrapComponent(route));
106
- });
107
- act(() => {
108
- jest.runOnlyPendingTimers();
109
- });
110
- const instance = tree.root;
111
- const refreshControl = instance.findByType(RefreshControl);
112
- expect(refreshControl).toBeDefined();
113
- });
114
-
115
- test('render fetchUnitDetail success', async () => {
116
- route = {
117
- params: {
118
- unitId: 1,
119
- unitData: null,
120
- summaryData: {
121
- id: 1,
122
- name: '',
123
- screen: Routes.AirQuality,
124
- },
76
+ const response = {
77
+ status: 400,
78
+ data: {
79
+ data: {},
125
80
  },
126
81
  };
127
- jest.useFakeTimers();
128
- mock.onGet(API.UNIT.UNIT_DETAIL(1)).reply(200, {});
129
- act(() => {
130
- tree = create(wrapComponent(route));
131
- });
132
- act(() => {
133
- jest.runOnlyPendingTimers();
134
- });
135
- const instance = tree.root;
136
- const refreshControl = instance.findByType(RefreshControl);
137
- expect(refreshControl).toBeDefined();
138
- });
82
+ axios.get.mockImplementation(() => Promise.resolve(response));
139
83
 
140
- test('test receive notification with summary_id then reload data', async () => {
141
- jest.useFakeTimers();
142
- mock.onGet(API.UNIT.UNIT_SUMMARY_DETAIL(1, 1)).reply(200);
143
- const dataNotification = {
144
- params: {
145
- summary_id: 1,
146
- },
147
- };
148
- useReceiveNotifications.mockImplementationOnce(() => ({
149
- dataNotification,
150
- }));
151
84
  act(() => {
152
85
  tree = create(wrapComponent(route));
153
86
  });
154
- act(() => {
155
- jest.runOnlyPendingTimers();
156
- });
87
+ expect(axios.get).toHaveBeenCalled();
88
+ expect(axios.get).toHaveBeenCalledWith(
89
+ API.UNIT.UNIT_SUMMARY_DETAIL(1, 1),
90
+ {}
91
+ );
157
92
  });
158
93
 
159
- test('test receive notification with other summary_id then not reload data', async () => {
94
+ test('render fetchSummaryDetail success', async () => {
160
95
  jest.useFakeTimers();
161
- mock.onGet(API.UNIT.UNIT_SUMMARY_DETAIL(1, 1)).reply(200);
162
- const dataNotification = {
163
- params: {
164
- summary_id: 2,
96
+ const response = {
97
+ status: 200,
98
+ data: {
99
+ data: {},
165
100
  },
166
101
  };
167
- useReceiveNotifications.mockImplementationOnce(() => ({
168
- dataNotification,
169
- }));
102
+ axios.get.mockImplementation(() => Promise.resolve(response));
103
+
170
104
  act(() => {
171
105
  tree = create(wrapComponent(route));
172
106
  });
173
107
  act(() => {
174
108
  jest.runOnlyPendingTimers();
175
109
  });
110
+ expect(axios.get).toHaveBeenCalled();
111
+ expect(axios.get).toHaveBeenCalledWith(
112
+ API.UNIT.UNIT_SUMMARY_DETAIL(1, 1),
113
+ {}
114
+ );
176
115
  });
177
116
 
178
117
  let list_value = [
@@ -1,23 +1,10 @@
1
- import React, { useState } from 'react';
1
+ import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
3
  import { TESTID } from '../../../../../configs/Constants';
4
- import { API, Colors } from '../../../../../configs';
4
+ import { Colors } from '../../../../../configs';
5
5
  import PowerConsumption from '../index';
6
6
  import { SCProvider } from '../../../../../context';
7
7
  import { mockSCStore } from '../../../../../context/mockStore';
8
- import MockAdapter from 'axios-mock-adapter';
9
- import api from '../../../../../utils/Apis/axios';
10
-
11
- const mock = new MockAdapter(api.axiosInstance);
12
- const mockSetState = jest.fn();
13
-
14
- jest.mock('react', () => {
15
- return {
16
- ...jest.requireActual('react'),
17
- useState: jest.fn(),
18
- };
19
- });
20
- useState.mockImplementation((init) => [init, mockSetState]);
21
8
 
22
9
  const wrapComponent = (summaryDetail) => (
23
10
  <SCProvider initState={mockSCStore({})}>
@@ -77,20 +64,4 @@ describe('Test 3PPowerConsumption', () => {
77
64
  ];
78
65
  expect(listIndicator.props.data).toEqual(resultList);
79
66
  });
80
-
81
- test('render 3PPowerConsumption with total_power', async () => {
82
- mock.onGet(API.VALUE_CONSUME.DISPLAY_HISTORY()).reply(200, [{}]);
83
- const summaryDetail = {
84
- volt1Value: 200,
85
- current1Value: 20,
86
- activePowerValue: 10,
87
- powerFactor1Value: 30,
88
- totalPowerValue: 20,
89
- listConfigs: { total_power: 1 },
90
- };
91
- await act(async () => {
92
- tree = await renderer.create(wrapComponent(summaryDetail));
93
- });
94
- expect(mockSetState).toHaveBeenCalledWith([{}]);
95
- });
96
67
  });
@@ -1,14 +1,11 @@
1
1
  import React from 'react';
2
2
  import { act, create } from 'react-test-renderer';
3
- import MockAdapter from 'axios-mock-adapter';
4
- import moment from 'moment';
5
-
6
3
  import ConfigHistoryChart from '../';
7
4
  import { SCProvider } from '../../../../../context';
8
5
  import { mockSCStore } from '../../../../../context/mockStore';
9
6
  import HistoryChart from '../../../../../commons/Device/HistoryChart';
10
- import api from '../../../../../utils/Apis/axios';
11
- import { API } from '../../../../../configs';
7
+ import axios from 'axios';
8
+ import moment from 'moment';
12
9
 
13
10
  jest.mock('react', () => {
14
11
  return {
@@ -17,7 +14,7 @@ jest.mock('react', () => {
17
14
  };
18
15
  });
19
16
 
20
- const mock = new MockAdapter(api.axiosInstance);
17
+ jest.mock('axios');
21
18
 
22
19
  const wrapComponent = (configs = []) => (
23
20
  <SCProvider initState={mockSCStore({})}>
@@ -51,7 +48,7 @@ describe('Test HistoryChart', () => {
51
48
  },
52
49
  ],
53
50
  };
54
- mock.onGet(API.CONFIG.DISPLAY_HISTORY).reply(200, response.data);
51
+ axios.get.mockImplementation(async () => response);
55
52
  const configs = [{ id: 1 }];
56
53
  await act(async () => {
57
54
  tree = await create(wrapComponent(configs));
@@ -4,7 +4,6 @@ import moment from 'moment';
4
4
  import { API } from '../../../../configs';
5
5
  import HistoryChart from '../../../../commons/Device/HistoryChart';
6
6
  import { axiosGet } from '../../../../utils/Apis/axios';
7
- import { updateConfigChart } from '../../../../commons/UnitSummary/ConfigHistoryChart';
8
7
 
9
8
  export const dateTimeType = {
10
9
  date: 'date',
@@ -31,7 +30,19 @@ const ConfigHistoryChart = memo(({ configs }) => {
31
30
  const { success, data } = await axiosGet(API.CONFIG.DISPLAY_HISTORY, {
32
31
  params,
33
32
  });
34
- updateConfigChart(success, data, configuration, setChartData);
33
+ if (success) {
34
+ for (let i = 0; i < data.length; i++) {
35
+ for (let j = 0; j < data[i].data.length; j++) {
36
+ data[i].data[j].x = moment(data[i].data[j].x).toDate();
37
+ }
38
+ }
39
+ setChartData(
40
+ configuration.map((config) => {
41
+ config.data = data.find((k) => k.config === config.id).data;
42
+ return config;
43
+ })
44
+ );
45
+ }
35
46
  };
36
47
  fetchData();
37
48
  }, [startDate, endDate, configs]);
@@ -1,3 +1,4 @@
1
+ /* eslint-disable promise/prefer-await-to-callbacks */
1
2
  import React from 'react';
2
3
  import { act, create } from 'react-test-renderer';
3
4
  import Text from '../../../../../commons/Text';
@@ -1,17 +1,14 @@
1
1
  import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
- import MockAdapter from 'axios-mock-adapter';
4
-
5
3
  import { TESTID } from '../../../../../configs/Constants';
6
- import { API, Colors } from '../../../../../configs';
4
+ import { Colors } from '../../../../../configs';
7
5
  import ListQualityIndicator from '../../../../../commons/Device/WaterQualitySensor/ListQualityIndicator';
6
+ import axios from 'axios';
8
7
  import PowerConsumption from '../index';
9
8
  import { SCProvider } from '../../../../../context';
10
9
  import { mockSCStore } from '../../../../../context/mockStore';
11
- import api from '../../../../../utils/Apis/axios';
12
- import { Today } from '../../../../../commons';
13
10
 
14
- const mock = new MockAdapter(api.axiosInstance);
11
+ jest.mock('axios');
15
12
 
16
13
  const wrapComponent = (summaryDetail) => (
17
14
  <SCProvider initState={mockSCStore({})}>
@@ -89,13 +86,15 @@ describe('Test PowerConsumption', () => {
89
86
  },
90
87
  };
91
88
 
92
- mock.onGet(API.VALUE_CONSUME.DISPLAY_HISTORY()).reply(200);
89
+ const response = {
90
+ status: 200,
91
+ };
92
+ axios.get.mockImplementation(async (url) => response);
93
+
93
94
  await act(async () => {
94
95
  tree = await renderer.create(wrapComponent(summaryDetail));
95
96
  });
96
- const instance = tree.root;
97
- const Todays = instance.findByType(Today);
98
- expect(Todays).toBeDefined();
97
+ expect(axios.get).toHaveBeenCalled();
99
98
  });
100
99
 
101
100
  test('render with unsuccess fetch', async () => {
@@ -114,13 +113,16 @@ describe('Test PowerConsumption', () => {
114
113
  volt: 209,
115
114
  },
116
115
  };
117
- mock.onGet(API.VALUE_CONSUME.DISPLAY_HISTORY()).reply(200, {});
116
+
117
+ const response = {
118
+ data: {},
119
+ };
120
+ axios.get.mockImplementation(async (url) => response);
121
+
118
122
  await act(async () => {
119
123
  tree = await renderer.create(wrapComponent(summaryDetail));
120
124
  });
121
- const instance = tree.root;
122
- const Todays = instance.findByType(Today);
123
- expect(Todays).toBeDefined();
125
+ expect(axios.get).toHaveBeenCalled();
124
126
  });
125
127
 
126
128
  test('render without value', async () => {
@@ -13,6 +13,7 @@ const wrapComponent = (unit, summaryDetail) => (
13
13
  );
14
14
 
15
15
  const mockedNavigate = jest.fn();
16
+
16
17
  jest.mock('@react-navigation/native', () => {
17
18
  return {
18
19
  ...jest.requireActual('@react-navigation/native'),
@@ -22,16 +23,6 @@ jest.mock('@react-navigation/native', () => {
22
23
  };
23
24
  });
24
25
 
25
- const mockConnectGoogleHome = jest.fn();
26
- jest.mock('../../../../../hooks/IoT', () => {
27
- return {
28
- ...jest.requireActual('../../../../../hooks/IoT'),
29
- useGGHomeConnection: () => ({
30
- connectGoogleHome: mockConnectGoogleHome,
31
- }),
32
- };
33
- });
34
-
35
26
  describe('test RunningDevices', () => {
36
27
  afterEach(() => {
37
28
  mockedNavigate.mockClear();
@@ -82,7 +73,6 @@ describe('test RunningDevices', () => {
82
73
  act(() => {
83
74
  button[0].props.onPress();
84
75
  });
85
- expect(mockConnectGoogleHome).toBeCalled();
86
76
  });
87
77
  });
88
78
 
@@ -122,6 +112,7 @@ describe('test RunningDevices', () => {
122
112
  button[0].props.onPress();
123
113
  });
124
114
  expect(mockedNavigate).toBeCalledWith('DeviceDetail', {
115
+ isGGHomeConnected: false,
125
116
  sensorData: summaryDetail.devices[0],
126
117
  station: 'station',
127
118
  title: undefined,
@@ -1,13 +1,16 @@
1
- import React, { memo, useEffect } from 'react';
1
+ import React, { memo, useCallback, useEffect, useState } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import ItemDevice from '../../../../commons/Device/ItemDevice';
4
4
  import { scanBluetoothDevices } from '../../../../iot/RemoteControl/Bluetooth';
5
- import { useGGHomeConnection } from '../../../../hooks/IoT';
5
+ import { googleHomeConnect } from '../../../../iot/RemoteControl/GoogleHome';
6
6
 
7
7
  const RunningDevices = memo(({ unit, summaryDetail }) => {
8
+ const [isGGHomeConnected, setIsGGHomeConnected] = useState(false);
8
9
  const { devices } = summaryDetail;
9
-
10
- const { connectGoogleHome } = useGGHomeConnection();
10
+ const handleGoogleHomeConnect = useCallback(async (options) => {
11
+ let isConnected = await googleHomeConnect(options);
12
+ setIsGGHomeConnected(isConnected);
13
+ }, []);
11
14
 
12
15
  useEffect(() => {
13
16
  if (unit.remote_control_options) {
@@ -15,11 +18,10 @@ const RunningDevices = memo(({ unit, summaryDetail }) => {
15
18
  scanBluetoothDevices(unit.remote_control_options.bluetooth);
16
19
  }
17
20
  if (unit.remote_control_options.googlehome) {
18
- (async () =>
19
- await connectGoogleHome(unit.remote_control_options.googlehome))();
21
+ handleGoogleHomeConnect(unit.remote_control_options.googlehome);
20
22
  }
21
23
  }
22
- }, [connectGoogleHome, unit]);
24
+ }, [handleGoogleHomeConnect, unit]);
23
25
  return (
24
26
  <View style={styles.container}>
25
27
  {!!devices &&
@@ -37,6 +39,7 @@ const RunningDevices = memo(({ unit, summaryDetail }) => {
37
39
  sensor={item}
38
40
  unit={unit}
39
41
  station={item.station}
42
+ isGGHomeConnected={isGGHomeConnected}
40
43
  />
41
44
  );
42
45
  })}
@@ -1,6 +1,6 @@
1
1
  import React, { memo, useMemo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
- import { useTranslations } from '../../../../hooks/Common/useTranslations';
3
+ import t, { useTranslations } from '../../../../hooks/Common/useTranslations';
4
4
 
5
5
  import { Colors } from '../../../../configs';
6
6
  import { Section, Today } from '../../../../commons';
@@ -11,7 +11,7 @@ import SvgRain from '../../../../../assets/images/Device/rain-outline.svg';
11
11
  import SvgTemperature from '../../../../../assets/images/Device/temperature.svg';
12
12
  import SvgWind from '../../../../../assets/images/Device/wind.svg';
13
13
 
14
- const getDataTemperature = (summaryDetail, t) => {
14
+ const getDataTemperature = (summaryDetail) => {
15
15
  return [
16
16
  {
17
17
  id: '0',
@@ -52,8 +52,8 @@ const Temperature = memo(({ summaryDetail }) => {
52
52
  }, [listConfigs]);
53
53
 
54
54
  const dataTemperature = useMemo(
55
- () => getDataTemperature(summaryDetail, t),
56
- [summaryDetail, t]
55
+ () => getDataTemperature(summaryDetail),
56
+ [summaryDetail]
57
57
  );
58
58
 
59
59
  const configs = useMemo(() => {
@@ -22,11 +22,11 @@ const Item = memo((props) => {
22
22
  <View size={14} color={Colors.Gray8} style={styles.textTitleX}>
23
23
  <Text>{title}</Text>
24
24
  {waterType && (
25
- <TouchableOpacity onPress={goToDetail} style={styles.buttonInfo}>
25
+ <TouchableOpacity onPress={goToDetail}>
26
26
  <IconOutline
27
27
  style={styles.row}
28
28
  name="info-circle"
29
- size={20}
29
+ size={14}
30
30
  color={Colors.Black}
31
31
  />
32
32
  </TouchableOpacity>
@@ -79,12 +79,4 @@ const styles = StyleSheet.create({
79
79
  row: {
80
80
  flexDirection: 'row',
81
81
  },
82
- buttonInfo: {
83
- width: 40,
84
- height: 40,
85
- justifyContent: 'center',
86
- alignItems: 'center',
87
- marginTop: -10,
88
- marginRight: -10,
89
- },
90
82
  });
@@ -3,10 +3,9 @@ import { View, StyleSheet } from 'react-native';
3
3
  import { useNavigation } from '@react-navigation/native';
4
4
  import { TouchableOpacity } from 'react-native';
5
5
  import { IconOutline } from '@ant-design/icons-react-native';
6
+ import { useTranslations } from '../../hooks/Common/useTranslations';
6
7
  import moment from 'moment';
7
8
 
8
- import { useTranslations } from '../../hooks/Common/useTranslations';
9
- import { useReceiveNotifications } from '../../hooks';
10
9
  import { API, Colors } from '../../configs';
11
10
  import Routes from '../../utils/Route';
12
11
  import { axiosGet } from '../../utils/Apis/axios';
@@ -140,19 +139,6 @@ const UnitSummary = memo(({ route }) => {
140
139
  fetchSummaryDetail();
141
140
  }, [fetchSummaryDetail]);
142
141
 
143
- const { dataNotification } = useReceiveNotifications();
144
-
145
- useEffect(() => {
146
- if (dataNotification) {
147
- const { params = {} } = dataNotification;
148
- const { summary_id } = params;
149
- if (summary_id && summary_id === summaryId) {
150
- fetchSummaryDetail();
151
- }
152
- }
153
- // eslint-disable-next-line react-hooks/exhaustive-deps
154
- }, [dataNotification]);
155
-
156
142
  const UnitSummaryDetail = getComponentAndGuide();
157
143
  const ComponentName = UnitSummaryDetail?.componentName;
158
144
  const GuideName = UnitSummaryDetail?.guideName;
@@ -270,7 +270,7 @@ const WaterQualityGuide = memo(({ route }) => {
270
270
 
271
271
  return (
272
272
  <SafeAreaView style={styles.container}>
273
- <ScrollView style={styles.container} scrollIndicatorInsets={{ right: 1 }}>
273
+ <ScrollView style={styles.container}>
274
274
  <View style={styles.wrapScroll}>
275
275
  {titles.map((item, index) => {
276
276
  const { title, des } = item;