@eohjsc/react-native-smart-city 0.3.6 → 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 (289) 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/OnOffSmartLock/AutoLock/__test__/index.test.js +0 -4
  9. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/ItemPasscode.js +1 -1
  10. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/__test__/index.test.js +0 -14
  11. package/src/commons/ActionGroup/OnOffSmartLock/SetupGeneratePasscode/index.js +0 -1
  12. package/src/commons/ActionGroup/OnOffTemplate/OnOffButtonTemplate.js +2 -8
  13. package/src/commons/ActionGroup/OnOffTemplate/OnOffSimpleTemplate.js +10 -10
  14. package/src/commons/ActionGroup/OnOffTemplate/index.js +2 -3
  15. package/src/commons/ActionGroup/SliderRangeTemplate.js +2 -6
  16. package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +3 -7
  17. package/src/commons/ActionGroup/StatesGridActionTemplate.js +8 -22
  18. package/src/commons/ActionGroup/TimerActionTemplate.js +3 -11
  19. package/src/commons/ActionGroup/TwoButtonTemplate/index.js +5 -1
  20. package/src/commons/ActionGroup/__test__/CurtainButtonTemplate.test.js +4 -53
  21. package/src/commons/ActionGroup/__test__/OnOffButtonTemplate.test.js +14 -14
  22. package/src/commons/ActionGroup/__test__/OnOffTemplate.test.js +78 -53
  23. package/src/commons/ActionGroup/__test__/OneBigButtonTemplate.test.js +20 -36
  24. package/src/commons/ActionGroup/__test__/TimerActionTemplate.test.js +6 -58
  25. package/src/commons/ActionGroup/__test__/TwoButtonTemplate.test.js +1 -49
  26. package/src/commons/ActionGroup/__test__/index.test.js +0 -135
  27. package/src/commons/Auth/AccountList.js +1 -1
  28. package/src/commons/Automate/ItemAutomate.js +3 -1
  29. package/src/commons/Connecting/__test__/Connecting.test.js +2 -19
  30. package/src/commons/ConnectingProcess/DeviceItem/DeviceItem.js +3 -7
  31. package/src/commons/ConnectingProcess/DeviceItem/DeviceItemStyles.js +11 -8
  32. package/src/commons/ConnectingProcess/__test__/Connecting.test.js +3 -136
  33. package/src/commons/ConnectingProcess/__test__/DeviceItem.test.js +2 -3
  34. package/src/commons/ConnectingProcess/index.js +26 -76
  35. package/src/commons/Dashboard/MyPinnedSharedUnit/__test__/MyPinnedSharedUnit.test.js +13 -16
  36. package/src/commons/Dashboard/MyPinnedSharedUnit/index.js +1 -1
  37. package/src/commons/Dashboard/MyUnit/__test__/MyUnit.test.js +5 -0
  38. package/src/commons/Device/ConnectedViewHeader.js +1 -1
  39. package/src/commons/Device/HistoryChart.js +3 -7
  40. package/src/commons/Device/ItemDevice.js +12 -19
  41. package/src/commons/Device/LinearChart.js +0 -15
  42. package/src/commons/Device/PMSensor/PMSensorIndicatior.js +12 -16
  43. package/src/commons/Device/PMSensor/PMSensorIndicatorStyles.js +0 -3
  44. package/src/commons/Device/SonosSpeaker/index.js +1 -1
  45. package/src/commons/Device/WaterQualitySensor/ListQualityIndicator.js +0 -1
  46. package/src/commons/Device/WaterQualitySensor/QualityIndicatorsItem.js +2 -7
  47. package/src/commons/Explore/__test__/CityItem.test.js +54 -33
  48. package/src/commons/Form/CurrencyInput.js +1 -15
  49. package/src/commons/Form/TextInputPassword.js +1 -1
  50. package/src/commons/FullLoading/index.js +1 -2
  51. package/src/commons/Header/HeaderCustom.js +1 -2
  52. package/src/commons/HeaderAni/index.js +1 -6
  53. package/src/commons/HorizontalPicker/index.js +2 -2
  54. package/src/commons/MediaPlayerDetail/Styles/MediaPlayerDetailStyles.js +6 -0
  55. package/src/commons/MediaPlayerDetail/index.js +47 -25
  56. package/src/commons/MenuActionAddnew/index.js +0 -1
  57. package/src/commons/MenuActionList/index.js +0 -1
  58. package/src/commons/MenuActionMore/index.js +1 -1
  59. package/src/commons/PreventAccess/index.js +1 -9
  60. package/src/commons/Sharing/MemberList.js +2 -10
  61. package/src/commons/Sharing/WrapHeaderScrollable.js +0 -2
  62. package/src/commons/Sharing/__test__/DevicePermissionsCheckbox.test.js +1 -0
  63. package/src/commons/SubUnit/Favorites/index.js +3 -2
  64. package/src/commons/SubUnit/OneTap/__test__/SubUnitAutomate.test.js +35 -8
  65. package/src/commons/SubUnit/OneTap/index.js +2 -1
  66. package/src/commons/SubUnit/ShortDetail.js +9 -25
  67. package/src/commons/SubUnit/__test__/Item.test.js +1 -0
  68. package/src/commons/SubUnit/__test__/ShortDetail.test.js +2 -9
  69. package/src/commons/Unit/SharedUnit.js +0 -1
  70. package/src/commons/Unit/__test__/SharedUnit.test.js +183 -38
  71. package/src/commons/UnitSummary/ConfigHistoryChart/index.js +13 -2
  72. package/src/commons/UnitSummary/ConfigHistoryChart.js +13 -22
  73. package/src/commons/WheelDateTimePicker/index.js +3 -4
  74. package/src/configs/API.js +143 -87
  75. package/src/configs/Constants.js +1 -57
  76. package/src/configs/SCConfig.js +0 -4
  77. package/src/context/actionType.ts +0 -8
  78. package/src/context/mockStore.ts +0 -10
  79. package/src/context/reducer.ts +2 -38
  80. package/src/hooks/Common/index.js +0 -2
  81. package/src/hooks/Common/useGetIdUser.js +5 -1
  82. package/src/hooks/Common/useSensorsStatus.js +4 -4
  83. package/src/hooks/useReceiveNotifications.js +5 -9
  84. package/src/iot/Monitor.js +2 -3
  85. package/src/iot/RemoteControl/Bluetooth.js +1 -1
  86. package/src/iot/RemoteControl/GoogleHome.js +49 -75
  87. package/src/iot/RemoteControl/Internet.js +1 -1
  88. package/src/iot/RemoteControl/__test__/GoogleHome.test.js +48 -95
  89. package/src/iot/RemoteControl/__test__/Internet.test.js +7 -18
  90. package/src/iot/RemoteControl/__test__/LgThinq.test.js +177 -36
  91. package/src/iot/RemoteControl/index.js +52 -52
  92. package/src/navigations/UnitStack.js +20 -11
  93. package/src/screens/AQIGuide/index.js +1 -1
  94. package/src/screens/ActivityLog/FilterPopup.js +0 -2
  95. package/src/screens/ActivityLog/__test__/index.test.js +23 -38
  96. package/src/screens/ActivityLog/hooks/__test__/index.test.js +90 -51
  97. package/src/screens/ActivityLog/hooks/index.js +1 -1
  98. package/src/screens/ActivityLog/index.js +2 -2
  99. package/src/screens/AddCommon/SelectSubUnit.js +0 -1
  100. package/src/screens/AddCommon/SelectUnit.js +0 -1
  101. package/src/screens/AddCommon/__test__/SelectSubUnit.test.js +24 -13
  102. package/src/screens/AddCommon/__test__/SelectUnit.test.js +33 -9
  103. package/src/screens/AddLocationMaps/index.js +5 -9
  104. package/src/screens/AddNewAction/SelectAction.js +8 -8
  105. package/src/screens/AddNewAction/SelectSensorDevices.js +2 -8
  106. package/src/screens/AddNewAction/SetupSensor.js +7 -7
  107. package/src/screens/AddNewAction/__test__/SelectAction.test.js +91 -10
  108. package/src/screens/AddNewAction/__test__/SelectSensorDevices.test.js +26 -40
  109. package/src/screens/AddNewAutoSmart/__test__/AddNewAutoSmart.test.js +1 -3
  110. package/src/screens/AddNewAutoSmart/index.js +2 -5
  111. package/src/screens/AddNewDevice/ConnectingDevices.js +3 -3
  112. package/src/screens/AddNewDevice/__test__/AddNewDevice.test.js +34 -42
  113. package/src/screens/AddNewDevice/__test__/ConnectDevices.test.js +4 -0
  114. package/src/screens/AddNewDevice/__test__/ConnectingDevices.test.js +22 -22
  115. package/src/screens/AddNewDevice/hooks/ConnectDevices.js +1 -1
  116. package/src/screens/AddNewDevice/index.js +0 -1
  117. package/src/screens/AddNewGateway/PlugAndPlay/ConnectWifiWarning.js +17 -23
  118. package/src/screens/AddNewGateway/PlugAndPlay/GatewayWifiList.js +40 -46
  119. package/src/screens/AddNewGateway/PlugAndPlay/__test__/GatewayWifiList.test.js +10 -64
  120. package/src/screens/AddNewGateway/SelectGateway.js +0 -1
  121. package/src/screens/AddNewGateway/SetupGatewayWifi.js +0 -2
  122. package/src/screens/AddNewGateway/__test__/AddNewGateway.test.js +6 -4
  123. package/src/screens/AddNewGateway/__test__/ConnectedGateway.test.js +4 -0
  124. package/src/screens/AddNewGateway/__test__/ConnectingGateway.test.js +29 -5
  125. package/src/screens/AddNewGateway/__test__/SelectGateway.test.js +4 -0
  126. package/src/screens/AddNewGateway/__test__/SetupGateway.test.js +4 -0
  127. package/src/screens/AddNewGateway/index.js +0 -1
  128. package/src/screens/AddNewOneTap/__test__/AddNewOneTap.test.js +24 -10
  129. package/src/screens/AddNewOneTap/index.js +2 -3
  130. package/src/screens/AllCamera/index.js +4 -4
  131. package/src/screens/Automate/MultiUnits.js +8 -8
  132. package/src/screens/Automate/__test__/MultiUnits.test.js +9 -6
  133. package/src/screens/Automate/__test__/index.test.js +12 -7
  134. package/src/screens/Automate/index.js +3 -5
  135. package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +8 -36
  136. package/src/screens/ConfirmUnitDeletion/index.js +1 -7
  137. package/src/screens/Device/EditDevice/__test__/EditDevice.test.js +22 -71
  138. package/src/screens/Device/EditDevice/index.js +15 -17
  139. package/src/screens/Device/__test__/detail.test.js +86 -33
  140. package/src/screens/Device/components/DetailHistoryChart.js +1 -1
  141. package/src/screens/Device/components/SensorConnectStatusViewHeader.js +0 -1
  142. package/src/screens/Device/components/SensorDisplayItem.js +2 -5
  143. package/src/screens/Device/detail.js +24 -80
  144. package/src/screens/Device/hooks/useDisconnectedDevice.js +4 -4
  145. package/src/screens/Device/hooks/useFavoriteDevice.js +9 -5
  146. package/src/screens/DeviceInfo/__test__/index.test.js +2 -0
  147. package/src/screens/EditActionsList/index.js +1 -1
  148. package/src/screens/EmergencyContacts/EmergencyContactsSelectContacts.js +3 -6
  149. package/src/screens/EmergencyContacts/__test__/EmergencyContactAddNew.test.js +19 -7
  150. package/src/screens/EmergencyContacts/__test__/EmergencyContactList.test.js +2 -20
  151. package/src/screens/EmergencyContacts/__test__/EmergencyContactsSelectContacts.test.js +23 -40
  152. package/src/screens/EmergencySetting/components/DropDownItem.js +2 -2
  153. package/src/screens/EmergencySetting/index.js +1 -4
  154. package/src/screens/EnterPassword/__test__/EnterPassword.test.js +25 -41
  155. package/src/screens/Explore/index.js +0 -2
  156. package/src/screens/GuestInfo/__test__/index.test.js +41 -14
  157. package/src/screens/GuestInfo/components/RecurringDetail.js +0 -1
  158. package/src/screens/GuestInfo/components/TemporaryDetail.js +2 -2
  159. package/src/screens/HanetCamera/Detail.js +1 -1
  160. package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +12 -8
  161. package/src/screens/HanetCamera/__test__/Detail.test.js +42 -27
  162. package/src/screens/HanetCamera/__test__/ManageAccess.test.js +5 -8
  163. package/src/screens/HanetCamera/__test__/MemberInfo.test.js +32 -10
  164. package/src/screens/HanetCamera/components/RequestFaceIDPopup.js +2 -3
  165. package/src/screens/HanetCamera/hooks/__test__/useHanetCheckinData.test.js +35 -43
  166. package/src/screens/HanetCamera/hooks/__test__/useHanetPlaceMembers.test.js +21 -10
  167. package/src/screens/HanetCamera/hooks/useHanetCheckinData.js +11 -11
  168. package/src/screens/HanetCamera/hooks/useHanetPlaceMembers.js +11 -11
  169. package/src/screens/ManageAccess/__test__/ManageAccess.test.js +22 -33
  170. package/src/screens/ManageAccess/hooks/__test__/useManageAccess.test.js +45 -44
  171. package/src/screens/ManageAccess/hooks/index.js +4 -7
  172. package/src/screens/ManageAccess/index.js +1 -2
  173. package/src/screens/MoveToAnotherSubUnit/__test__/index.test.js +12 -35
  174. package/src/screens/MoveToAnotherSubUnit/index.js +6 -6
  175. package/src/screens/Notification/__test__/Notification.test.js +25 -14
  176. package/src/screens/Notification/__test__/NotificationItem.test.js +7 -8
  177. package/src/screens/Notification/components/NotificationItem.js +20 -17
  178. package/src/screens/Notification/index.js +2 -9
  179. package/src/screens/PlayBackCamera/Timer.js +2 -2
  180. package/src/screens/PlayBackCamera/__test__/index.test.js +2 -87
  181. package/src/screens/PlayBackCamera/index.js +6 -22
  182. package/src/screens/ScanChipQR/__test__/ScanChipQR.test.js +20 -7
  183. package/src/screens/ScanChipQR/components/QRScan/index.js +0 -1
  184. package/src/screens/ScanChipQR/hooks/index.js +16 -15
  185. package/src/screens/ScanSensorQR/__test__/ScanSensorQR.test.js +24 -8
  186. package/src/screens/ScriptDetail/__test__/index.test.js +86 -17
  187. package/src/screens/ScriptDetail/index.js +14 -19
  188. package/src/screens/SelectUnit/__test__/index.test.js +55 -12
  189. package/src/screens/SelectUnit/index.js +4 -9
  190. package/src/screens/SetSchedule/index.js +11 -15
  191. package/src/screens/SharedUnit/__test__/TabHeader.test.js +2 -0
  192. package/src/screens/SharedUnit/index.js +0 -2
  193. package/src/screens/Sharing/Components/SensorItem.js +12 -10
  194. package/src/screens/Sharing/InfoMemberUnit.js +1 -1
  195. package/src/screens/Sharing/MemberList.js +11 -12
  196. package/src/screens/Sharing/SelectPermission.js +76 -121
  197. package/src/screens/Sharing/__test__/InfoMemberUnit.test.js +29 -47
  198. package/src/screens/Sharing/__test__/MemberList.test.js +127 -13
  199. package/src/screens/Sharing/__test__/SelectPermission.test.js +38 -28
  200. package/src/screens/Sharing/__test__/SelectUser.test.js +38 -17
  201. package/src/screens/Sharing/hooks/index.js +0 -3
  202. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +2 -3
  203. package/src/screens/SmartIr/components/SelectBrand.js +1 -1
  204. package/src/screens/SubUnit/AddSubUnit.js +17 -23
  205. package/src/screens/SubUnit/Detail.js +2 -1
  206. package/src/screens/SubUnit/EditSubUnit.js +13 -15
  207. package/src/screens/SubUnit/ManageSubUnit.js +7 -13
  208. package/src/screens/SubUnit/__test__/AddSubUnit.test.js +89 -29
  209. package/src/screens/SubUnit/__test__/Detail.test.js +8 -31
  210. package/src/screens/SubUnit/__test__/EditSubUnit.test.js +89 -21
  211. package/src/screens/SubUnit/__test__/ManageSubUnit.test.js +1 -27
  212. package/src/screens/SubUnit/hooks/__test__/useManageSubUnit.test.js +45 -48
  213. package/src/screens/SubUnit/hooks/useManageSubUnit.js +7 -7
  214. package/src/screens/SyncLGDevice/AddLGDevice.js +0 -1
  215. package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +91 -22
  216. package/src/screens/TDSGuide/index.js +1 -4
  217. package/src/screens/UVIndexGuide/index.js +1 -1
  218. package/src/screens/Unit/ChooseLocation.js +14 -7
  219. package/src/screens/Unit/Detail.js +75 -30
  220. package/src/screens/Unit/ManageUnit.js +0 -1
  221. package/src/screens/Unit/SelectAddress.js +23 -45
  222. package/src/screens/Unit/SmartAccount.js +4 -4
  223. package/src/screens/Unit/Station/index.js +0 -4
  224. package/src/screens/Unit/Summaries.js +2 -18
  225. package/src/screens/Unit/__test__/CheckSendEmail.test.js +29 -24
  226. package/src/screens/Unit/__test__/ChooseLocation.test.js +14 -27
  227. package/src/screens/Unit/__test__/Detail.test.js +200 -99
  228. package/src/screens/Unit/__test__/ManageUnit.test.js +42 -18
  229. package/src/screens/Unit/__test__/SelectAddress.test.js +49 -159
  230. package/src/screens/Unit/__test__/SmartAccount.test.js +9 -17
  231. package/src/screens/Unit/__test__/SmartAccountItem.test.js +1 -0
  232. package/src/screens/Unit/components/MyUnitDevice/index.js +4 -4
  233. package/src/screens/Unit/components/SharedUnit/index.js +0 -1
  234. package/src/screens/Unit/components/__test__/MyUnitDevice.test.js +2 -2
  235. package/src/screens/Unit/components/__test__/SharedUnit.test.js +34 -31
  236. package/src/screens/Unit/styles.js +0 -4
  237. package/src/screens/UnitSummary/__test__/index.test.js +30 -91
  238. package/src/screens/UnitSummary/components/3PPowerConsumption/__test__/3PPowerConsumption.test.js +2 -31
  239. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/__test__/index.test.js +4 -7
  240. package/src/screens/UnitSummary/components/PowerConsumeHistoryChart/index.js +13 -2
  241. package/src/screens/UnitSummary/components/PowerConsumption/__test__/ItemPower.test.js +1 -0
  242. package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +16 -14
  243. package/src/screens/UnitSummary/components/RunningDevices/__test__/index.test.js +2 -11
  244. package/src/screens/UnitSummary/components/RunningDevices/index.js +10 -7
  245. package/src/screens/UnitSummary/components/Temperature/index.js +4 -4
  246. package/src/screens/UnitSummary/components/WaterQuality/Item/index.js +2 -10
  247. package/src/screens/UnitSummary/index.js +1 -15
  248. package/src/screens/WaterQualityGuide/index.js +1 -1
  249. package/src/utils/Apis/axios.js +31 -54
  250. package/src/utils/Converter/time.js +18 -0
  251. package/src/utils/I18n/translations/en.json +1 -7
  252. package/src/utils/I18n/translations/vi.json +1 -8
  253. package/src/utils/Route/index.js +0 -1
  254. package/src/utils/Utils.js +7 -11
  255. package/src/commons/ActionGroup/OnOffSmartLock/PasscodeList/__test__/ItemPasscode.test.js +0 -24
  256. package/src/commons/ActionGroup/__test__/StatesGridActionTemplate.test.js +0 -77
  257. package/src/commons/Calendar/__test__/Calendar.test.js +0 -33
  258. package/src/commons/Device/Hanet/ItemHanetDevice.test.js +0 -58
  259. package/src/commons/FieldTemplate/ChooseUserField/ChooseFieldStyles.js +0 -25
  260. package/src/commons/FieldTemplate/ChooseUserField/ChoosePopup.js +0 -96
  261. package/src/commons/FieldTemplate/ChooseUserField/ChoosePopupStyles.js +0 -39
  262. package/src/commons/FieldTemplate/ChooseUserField/__test__/index.test.js +0 -118
  263. package/src/commons/FieldTemplate/ChooseUserField/index.js +0 -62
  264. package/src/commons/FieldTemplate/PasscodeField/PasscodeFieldStyles.js +0 -30
  265. package/src/commons/FieldTemplate/PasscodeField/__test__/index.test.js +0 -90
  266. package/src/commons/FieldTemplate/PasscodeField/index.js +0 -43
  267. package/src/commons/FieldTemplate/ScheduleField/ScheduleFieldStyles.js +0 -13
  268. package/src/commons/FieldTemplate/ScheduleField/__test__/index.test.js +0 -179
  269. package/src/commons/FieldTemplate/ScheduleField/index.js +0 -176
  270. package/src/commons/PreventAccess/__test__/PreventAccess.test.js +0 -62
  271. package/src/hooks/Common/useGGHomeDeviceConnected.js +0 -16
  272. package/src/hooks/IoT/__test__/useGGHomeConnection.test.js +0 -198
  273. package/src/hooks/IoT/__test__/useRemoteControl.test.js +0 -198
  274. package/src/hooks/IoT/index.js +0 -4
  275. package/src/hooks/IoT/useGGHomeConnection.js +0 -91
  276. package/src/hooks/IoT/useRemoteControl.js +0 -79
  277. package/src/hooks/index.js +0 -4
  278. package/src/navigations/UnitStackStyles.js +0 -21
  279. package/src/screens/Sharing/__test__/MemberList2.test.js +0 -80
  280. package/src/screens/SideMenuDetail/SideMenuDetailStyles.js +0 -28
  281. package/src/screens/SideMenuDetail/__test__/index.test.js +0 -154
  282. package/src/screens/SideMenuDetail/index.js +0 -148
  283. package/src/screens/Unit/__test__/Summaries.test.js +0 -100
  284. package/src/screens/Unit/components/MyAllUnit/__test__/MyAllUnit.test.js +0 -36
  285. package/src/screens/Unit/components/MyAllUnit/__test__/index.test.js +0 -54
  286. package/src/screens/Unit/hook/useUnitConnectRemoteDevices.js +0 -50
  287. package/src/utils/Permission/common.js +0 -67
  288. package/src/utils/Setting/Location.js +0 -30
  289. package/src/utils/__test__/Utils.test.js +0 -12
@@ -45,20 +45,10 @@ const GridItem = ({ item, index, length, doAction, sensor, title }) => {
45
45
  actionName = actionName.replace(/\s+/g, ' ').trim();
46
46
  doAction(actionData, null, actionName);
47
47
  if (sensor?.is_managed_by_backend) {
48
- config &&
49
- sensor.device_type !== 'GOOGLE_HOME' &&
50
- watchMultiConfigs([config]);
48
+ config && watchMultiConfigs([config]);
51
49
  }
52
50
  },
53
- [
54
- config,
55
- doAction,
56
- sensor?.is_managed_by_backend,
57
- sensor?.name,
58
- sensor?.device_type,
59
- text,
60
- title,
61
- ]
51
+ [config, doAction, sensor?.is_managed_by_backend, sensor?.name, text, title]
62
52
  );
63
53
 
64
54
  const iconKit = !!icon_kit_data && icon_kit_data.icon;
@@ -105,19 +95,15 @@ const GridItem = ({ item, index, length, doAction, sensor, title }) => {
105
95
  );
106
96
  };
107
97
 
108
- const StatesGridActionTemplate = ({
109
- actionGroup = {},
110
- doAction,
111
- sensor = {},
112
- }) => {
113
- const { configuration = {}, title } = actionGroup;
98
+ const StatesGridActionTemplate = ({ actionGroup, doAction, sensor }) => {
99
+ const { configuration, title } = actionGroup;
114
100
 
115
101
  // eslint-disable-next-line no-unused-vars
116
102
  const [configValues, setConfigValues] = useConfigGlobalState('configValues');
117
103
 
118
104
  const options = useMemo(() => {
119
- return (configuration?.options || []).map((option) => {
120
- if (configValues[option?.config] === option?.is_on_value) {
105
+ return configuration.options.map((option) => {
106
+ if (configValues[option.config] === option.is_on_value) {
121
107
  return {
122
108
  ...option,
123
109
  active: true,
@@ -128,10 +114,10 @@ const StatesGridActionTemplate = ({
128
114
  }, [configuration, configValues]);
129
115
 
130
116
  useEffect(() => {
131
- if (sensor?.is_managed_by_backend && sensor.device_type !== 'GOOGLE_HOME') {
117
+ if (sensor?.is_managed_by_backend) {
132
118
  watchMultiConfigs(configuration.options.map((option) => option.config));
133
119
  }
134
- }, [sensor.is_managed_by_backend, sensor.device_type, configuration.options]);
120
+ }, [sensor.is_managed_by_backend, configuration.options]);
135
121
 
136
122
  return (
137
123
  <View style={styles.wrap}>
@@ -14,9 +14,9 @@ import { Colors } from '../../configs';
14
14
  import { useConfigGlobalState } from '../../iot/states';
15
15
  import BottomScrollPicker from '../BottomScrollPicker';
16
16
 
17
- const TimerActionTemplate = ({ actionGroup = {}, doAction, sensor = {} }) => {
17
+ const TimerActionTemplate = ({ actionGroup, doAction, sensor }) => {
18
18
  const t = useTranslations();
19
- const { configuration = {}, title } = actionGroup;
19
+ const { configuration, title } = actionGroup;
20
20
  const [showTime, setShowTime] = useState(false);
21
21
  const [showHour, setShowHour] = useState(false);
22
22
 
@@ -94,7 +94,6 @@ const TimerActionTemplate = ({ actionGroup = {}, doAction, sensor = {} }) => {
94
94
  if (sensor.is_managed_by_backend) {
95
95
  hour !== undefined &&
96
96
  minute !== undefined &&
97
- sensor.device_type !== 'GOOGLE_HOME' &&
98
97
  watchMultiConfigs([
99
98
  configuration.config_hour,
100
99
  configuration.config_minute,
@@ -107,17 +106,13 @@ const TimerActionTemplate = ({ actionGroup = {}, doAction, sensor = {} }) => {
107
106
  configuration.config_minute,
108
107
  doAction,
109
108
  sensor.is_managed_by_backend,
110
- sensor.device_type,
111
109
  ]
112
110
  );
113
111
 
114
112
  const doActionHour = useCallback(
115
113
  (hour) => {
116
114
  doAction(configuration.action_data, hour);
117
- if (
118
- sensor.is_managed_by_backend &&
119
- sensor.device_type !== 'GOOGLE_HOME'
120
- ) {
115
+ if (sensor.is_managed_by_backend) {
121
116
  hour && watchMultiConfigs([configuration.config_hour]);
122
117
  }
123
118
  },
@@ -126,7 +121,6 @@ const TimerActionTemplate = ({ actionGroup = {}, doAction, sensor = {} }) => {
126
121
  configuration.config_hour,
127
122
  doAction,
128
123
  sensor.is_managed_by_backend,
129
- sensor.device_type,
130
124
  ]
131
125
  );
132
126
 
@@ -207,8 +201,6 @@ const TimerActionTemplate = ({ actionGroup = {}, doAction, sensor = {} }) => {
207
201
  onConfirm={onConfirmTime}
208
202
  onCancel={onHideTime}
209
203
  display="spinner"
210
- cancelTextIOS={t('cancel')}
211
- confirmTextIOS={t('confirm')}
212
204
  />
213
205
  <BottomScrollPicker
214
206
  min={configuration.min}
@@ -14,6 +14,7 @@ const TwoButtonTemplate = memo(({ actionGroup, doAction, sensor }) => {
14
14
  const { button1, button2 } = configuration;
15
15
  const [isOn, setIsOn] = useState(true);
16
16
  const [isStart, setIsStart] = useState(true);
17
+ // eslint-disable-next-line no-unused-vars
17
18
  const [configValues] = useConfigGlobalState('configValues');
18
19
  const isLight = false;
19
20
 
@@ -101,7 +102,10 @@ const TwoButtonTemplate = memo(({ actionGroup, doAction, sensor }) => {
101
102
  if (sensor?.device_type === DEVICE_TYPE.LG_THINQ) {
102
103
  return;
103
104
  }
104
- if (sensor?.is_managed_by_backend && sensor.device_type !== 'GOOGLE_HOME') {
105
+ if (
106
+ sensor?.is_managed_by_backend &&
107
+ sensor?.device_type !== 'GOOGLE_HOME'
108
+ ) {
105
109
  watchMultiConfigs([configuration.config]);
106
110
  }
107
111
  }, [sensor, configuration.config]);
@@ -1,37 +1,20 @@
1
1
  import React from 'react';
2
2
  import renderer, { act } from 'react-test-renderer';
3
- import { TouchableOpacity, Switch } from 'react-native';
3
+ import { TouchableOpacity } from 'react-native';
4
4
 
5
5
  import CurtainButtonTemplate from '../CurtainButtonTemplate';
6
6
  import { SCProvider } from '../../../context';
7
7
  import { mockSCStore } from '../../../context/mockStore';
8
8
 
9
- const mockDoAction = jest.fn();
10
- const mockActionOffData = jest.fn();
11
- const mockActionOnData = jest.fn();
12
- const mockCloseActionData = jest.fn();
13
-
14
- const wrapComponent = (actionGroup = {}, sensor = {}) => (
9
+ const wrapComponent = (actionGroup) => (
15
10
  <SCProvider initState={mockSCStore({})}>
16
- <CurtainButtonTemplate
17
- actionGroup={actionGroup}
18
- doAction={mockDoAction}
19
- sensor={sensor}
20
- />
11
+ <CurtainButtonTemplate actionGroup={actionGroup} doAction={jest.fn()} />
21
12
  </SCProvider>
22
13
  );
23
14
 
24
15
  describe('Test CurtainButtonTemplate', () => {
25
- const sensor = {
26
- name: 'test',
27
- };
28
16
  const actionGroup = {
29
17
  configuration: {
30
- text_open: 'open',
31
- is_display_lock: true,
32
- action_off_data: mockActionOffData,
33
- action_on_data: mockActionOnData,
34
- close_action_data: mockCloseActionData,
35
18
  action1: '2b949045-8e03-4c07-a855-7794ade2e69c',
36
19
  action1_data: {
37
20
  color: '#00979D',
@@ -78,44 +61,12 @@ describe('Test CurtainButtonTemplate', () => {
78
61
 
79
62
  let wrapper;
80
63
 
81
- test('render without params', async () => {
82
- await act(() => {
83
- wrapper = renderer.create(wrapComponent());
84
- });
85
- const instance = wrapper.root;
86
- const touchableOpacities = instance.findAllByType(TouchableOpacity);
87
- expect(touchableOpacities.length).toEqual(3);
88
- });
89
-
90
64
  test('render CurtainButtonTemplate', async () => {
91
65
  await act(() => {
92
- wrapper = renderer.create(wrapComponent(actionGroup, sensor));
66
+ wrapper = renderer.create(wrapComponent(actionGroup));
93
67
  });
94
68
  const instance = wrapper.root;
95
69
  const touchableOpacities = instance.findAllByType(TouchableOpacity);
96
70
  expect(touchableOpacities.length).toEqual(3);
97
- await touchableOpacities[0].props.onPress();
98
- await touchableOpacities[1].props.onPress();
99
- await touchableOpacities[2].props.onPress();
100
- expect(mockDoAction).toBeCalledWith(
101
- mockCloseActionData,
102
- null,
103
- sensor?.name + ' undefined'
104
- );
105
-
106
- const Switchs = instance.findAllByType(Switch);
107
- expect(Switchs).toHaveLength(1);
108
- await Switchs[0].props.onValueChange();
109
- expect(mockDoAction).toBeCalledWith(
110
- mockActionOnData,
111
- null,
112
- `${sensor.name} lock`
113
- );
114
- await Switchs[0].props.onValueChange();
115
- expect(mockDoAction).toBeCalledWith(
116
- mockActionOffData,
117
- null,
118
- `${sensor.name} unlock`
119
- );
120
71
  });
121
72
  });
@@ -1,14 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { act, create } from 'react-test-renderer';
3
- import OnOffTemplate from '../OnOffTemplate';
4
- import { mockSCStore } from '../../../context/mockStore';
5
- import { SCProvider } from '../../../context';
6
-
7
- const wrapComponent = (actionGroup, mockDoAction) => (
8
- <SCProvider initState={mockSCStore({})}>
9
- <OnOffTemplate actionGroup={actionGroup} doAction={mockDoAction} />
10
- </SCProvider>
11
- );
3
+ import Index from '../OnOffTemplate';
12
4
 
13
5
  jest.mock('react', () => ({
14
6
  ...jest.requireActual('react'),
@@ -57,15 +49,21 @@ describe('Test OneBigButtonTemplate', () => {
57
49
  const assertRender = (state, text) => {
58
50
  useState.mockImplementationOnce((init) => [state, setState]);
59
51
  const mockDoAction = jest.fn();
60
-
61
52
  act(() => {
62
- wrapper = create(wrapComponent(actionGroup, mockDoAction));
53
+ wrapper = create(
54
+ <Index actionGroup={actionGroup} doAction={mockDoAction} />
55
+ );
63
56
  });
64
57
 
65
58
  const renderJson = wrapper.toJSON();
66
59
 
67
- expect(renderJson?.props?.visible).toEqual(false);
68
- expect(renderJson?.type).toEqual('Modal');
60
+ expect(renderJson?.children[0].children[0].children[1].children).toEqual(
61
+ undefined
62
+ );
63
+
64
+ expect(
65
+ renderJson?.children[0].children[0].children[1].children
66
+ ).not.toEqual([text]);
69
67
  };
70
68
 
71
69
  test('render state on', () => {
@@ -80,7 +78,9 @@ describe('Test OneBigButtonTemplate', () => {
80
78
  useState.mockImplementationOnce((init) => [state, setState]);
81
79
  const mockDoAction = jest.fn();
82
80
  act(() => {
83
- wrapper = create(wrapComponent(actionGroup, mockDoAction));
81
+ wrapper = create(
82
+ <Index actionGroup={actionGroup} doAction={mockDoAction} />
83
+ );
84
84
  });
85
85
 
86
86
  expect(mockDoAction).not.toHaveBeenCalled();
@@ -1,25 +1,11 @@
1
- /* eslint-disable promise/prefer-await-to-callbacks */
2
1
  import { TESTID } from '../../../configs/Constants';
3
2
  import { watchMultiConfigs } from '../../../iot/Monitor';
4
3
  import React from 'react';
5
4
  import { View } from 'react-native';
6
- import { useSelector } from 'react-redux';
7
5
  import { act, create } from 'react-test-renderer';
8
6
  import OnOffTemplate from '../OnOffTemplate';
9
7
  import OnOffButtonTemplate from '../OnOffTemplate/OnOffButtonTemplate';
10
8
  import OnOffSimpleTemplate from '../OnOffTemplate/OnOffSimpleTemplate';
11
- import { mockSCStore } from '../../../context/mockStore';
12
- import { SCProvider } from '../../../context';
13
-
14
- const wrapComponent = (actionGroup, mockDoAction, sensor) => (
15
- <SCProvider initState={mockSCStore({})}>
16
- <OnOffTemplate
17
- actionGroup={actionGroup}
18
- doAction={mockDoAction}
19
- sensor={sensor}
20
- />
21
- </SCProvider>
22
- );
23
9
 
24
10
  jest.mock('../../../iot/Monitor');
25
11
 
@@ -27,15 +13,9 @@ jest.mock('../../../iot/states', () => ({
27
13
  useConfigGlobalState: () => [{ 5: 2 }, null],
28
14
  }));
29
15
 
30
- jest.mock('react-redux', () => ({
31
- ...jest.requireActual('react-redux'),
32
- useSelector: jest.fn(),
33
- }));
34
-
35
16
  describe('Test OnOffTemplate', () => {
17
+ let wrapper;
36
18
  let actionGroup;
37
- let tree;
38
- let sensor;
39
19
 
40
20
  const action_data = {
41
21
  color: '#00979D',
@@ -82,23 +62,20 @@ describe('Test OnOffTemplate', () => {
82
62
  },
83
63
  title: 'Turn on / off',
84
64
  };
85
-
86
- sensor = { name: 'Sensor' };
87
-
88
- const localState = {
89
- isOnSwich: false,
90
- };
91
- useSelector.mockImplementation((cb) => {
92
- return cb(localState);
93
- });
94
65
  });
95
66
 
96
67
  test('render with template OnOffSimpleActionTemplate', async () => {
97
68
  const mockDoAction = jest.fn();
98
69
  await act(async () => {
99
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
70
+ wrapper = await create(
71
+ <OnOffTemplate
72
+ actionGroup={actionGroup}
73
+ doAction={mockDoAction}
74
+ sensor={{}}
75
+ />
76
+ );
100
77
  });
101
- const instance = tree.root;
78
+ const instance = wrapper.root;
102
79
  const template = instance.findAllByType(OnOffSimpleTemplate);
103
80
  expect(template).toHaveLength(1);
104
81
  });
@@ -107,9 +84,15 @@ describe('Test OnOffTemplate', () => {
107
84
  actionGroup.template = 'on_off_button_action_template';
108
85
  const mockDoAction = jest.fn();
109
86
  await act(async () => {
110
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
87
+ wrapper = await create(
88
+ <OnOffTemplate
89
+ actionGroup={actionGroup}
90
+ doAction={mockDoAction}
91
+ sensor={{}}
92
+ />
93
+ );
111
94
  });
112
- const instance = tree.root;
95
+ const instance = wrapper.root;
113
96
  const template = instance.findAllByType(OnOffButtonTemplate);
114
97
  expect(template).toHaveLength(0);
115
98
  });
@@ -118,9 +101,15 @@ describe('Test OnOffTemplate', () => {
118
101
  actionGroup.template = 'wrong_template';
119
102
  const mockDoAction = jest.fn();
120
103
  await act(async () => {
121
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
104
+ wrapper = await create(
105
+ <OnOffTemplate
106
+ actionGroup={actionGroup}
107
+ doAction={mockDoAction}
108
+ sensor={{}}
109
+ />
110
+ );
122
111
  });
123
- const instance = tree.root;
112
+ const instance = wrapper.root;
124
113
 
125
114
  const templateOnOffButton = instance.findAll(
126
115
  (el) =>
@@ -136,20 +125,32 @@ describe('Test OnOffTemplate', () => {
136
125
  test('render with template OnOffSimpleActionTemplate with is_managed_by_backend', async () => {
137
126
  const mockDoAction = jest.fn();
138
127
  await act(async () => {
139
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
128
+ wrapper = await create(
129
+ <OnOffTemplate
130
+ actionGroup={actionGroup}
131
+ doAction={mockDoAction}
132
+ sensor={{ is_managed_by_backend: true }}
133
+ />
134
+ );
140
135
  });
141
- const instance = tree.root;
136
+ const instance = wrapper.root;
142
137
  const template = instance.findAllByType(OnOffSimpleTemplate);
143
138
  expect(template).toHaveLength(1);
144
- expect(watchMultiConfigs).toBeCalledTimes(0);
139
+ expect(watchMultiConfigs).toBeCalledTimes(1);
145
140
  });
146
141
 
147
142
  test('template OnOffSimpleActionTemplate doAction with is_on_value, match configValue', async () => {
148
143
  const mockDoAction = jest.fn();
149
144
  await act(async () => {
150
- tree = await create(wrapComponent(actionGroup, mockDoAction, sensor));
145
+ wrapper = await create(
146
+ <OnOffTemplate
147
+ actionGroup={actionGroup}
148
+ doAction={mockDoAction}
149
+ sensor={{ name: 'Sensor name' }}
150
+ />
151
+ );
151
152
  });
152
- const instance = tree.root;
153
+ const instance = wrapper.root;
153
154
  const template = instance.findByType(OnOffSimpleTemplate);
154
155
  expect(template.props.isOn).toEqual(true);
155
156
 
@@ -159,7 +160,7 @@ describe('Test OnOffTemplate', () => {
159
160
  expect(mockDoAction).toHaveBeenCalledWith(
160
161
  action_off_data,
161
162
  null,
162
- 'Sensor turn on / off off'
163
+ 'Sensor name turn on / off off'
163
164
  );
164
165
  expect(watchMultiConfigs).toBeCalledTimes(0);
165
166
  });
@@ -168,9 +169,15 @@ describe('Test OnOffTemplate', () => {
168
169
  actionGroup.configuration.is_on_value = [1];
169
170
  const mockDoAction = jest.fn();
170
171
  await act(async () => {
171
- tree = await create(wrapComponent(actionGroup, mockDoAction, sensor));
172
+ wrapper = await create(
173
+ <OnOffTemplate
174
+ actionGroup={actionGroup}
175
+ doAction={mockDoAction}
176
+ sensor={{ name: 'Sensor name' }}
177
+ />
178
+ );
172
179
  });
173
- const instance = tree.root;
180
+ const instance = wrapper.root;
174
181
  const template = instance.findByType(OnOffSimpleTemplate);
175
182
  expect(template.props.isOn).toEqual(false);
176
183
 
@@ -180,16 +187,22 @@ describe('Test OnOffTemplate', () => {
180
187
  expect(mockDoAction).toHaveBeenCalledWith(
181
188
  action_on_data,
182
189
  null,
183
- 'Sensor turn on / off on'
190
+ 'Sensor name turn on / off on'
184
191
  );
185
192
  });
186
193
 
187
194
  test('template OnOffSimpleActionTemplate doAction with is_on_value and is_managed_by_backend', async () => {
188
195
  const mockDoAction = jest.fn();
189
196
  await act(async () => {
190
- tree = await create(wrapComponent(actionGroup, mockDoAction, sensor));
197
+ wrapper = await create(
198
+ <OnOffTemplate
199
+ actionGroup={actionGroup}
200
+ doAction={mockDoAction}
201
+ sensor={{ name: 'Sensor name', is_managed_by_backend: true }}
202
+ />
203
+ );
191
204
  });
192
- const instance = tree.root;
205
+ const instance = wrapper.root;
193
206
  const template = instance.findByType(OnOffSimpleTemplate);
194
207
  expect(template.props.isOn).toEqual(true);
195
208
 
@@ -199,9 +212,9 @@ describe('Test OnOffTemplate', () => {
199
212
  expect(mockDoAction).toHaveBeenCalledWith(
200
213
  action_off_data,
201
214
  null,
202
- 'Sensor turn on / off off'
215
+ 'Sensor name turn on / off off'
203
216
  );
204
- expect(watchMultiConfigs).toBeCalledTimes(0);
217
+ expect(watchMultiConfigs).toBeCalledTimes(2);
205
218
  });
206
219
 
207
220
  test('render with template OnOffSimpleActionTemplate with just action_data', async () => {
@@ -217,9 +230,15 @@ describe('Test OnOffTemplate', () => {
217
230
  };
218
231
  const mockDoAction = jest.fn();
219
232
  await act(async () => {
220
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
233
+ wrapper = await create(
234
+ <OnOffTemplate
235
+ actionGroup={actionGroup}
236
+ doAction={mockDoAction}
237
+ sensor={{ is_managed_by_backend: true }}
238
+ />
239
+ );
221
240
  });
222
- const instance = tree.root;
241
+ const instance = wrapper.root;
223
242
  const template = instance.findAllByType(OnOffSimpleTemplate);
224
243
  expect(template).toHaveLength(1);
225
244
  expect(template[0].props.disabled).toBeFalsy();
@@ -242,9 +261,15 @@ describe('Test OnOffTemplate', () => {
242
261
  };
243
262
  const mockDoAction = jest.fn();
244
263
  await act(async () => {
245
- tree = await create(wrapComponent(actionGroup, mockDoAction, {}));
264
+ wrapper = await create(
265
+ <OnOffTemplate
266
+ actionGroup={actionGroup}
267
+ doAction={mockDoAction}
268
+ sensor={{ is_managed_by_backend: true }}
269
+ />
270
+ );
246
271
  });
247
- const instance = tree.root;
272
+ const instance = wrapper.root;
248
273
  const template = instance.findAllByType(OnOffSimpleTemplate);
249
274
  expect(template).toHaveLength(1);
250
275
  expect(template[0].props.disabled).toBeTruthy();
@@ -1,27 +1,8 @@
1
- /* eslint-disable promise/prefer-await-to-callbacks */
2
1
  import React from 'react';
3
2
  import { create, act } from 'react-test-renderer';
4
3
  import { TouchableOpacity } from 'react-native';
5
- import { useSelector } from 'react-redux';
6
4
 
7
5
  import OneBigButtonTemplate from '../OneBigButtonTemplate';
8
- import { mockSCStore } from '../../../context/mockStore';
9
- import { SCProvider } from '../../../context';
10
-
11
- const wrapComponent = (actionGroup, mockDoAction, sensor) => (
12
- <SCProvider initState={mockSCStore({})}>
13
- <OneBigButtonTemplate
14
- actionGroup={actionGroup}
15
- doAction={mockDoAction}
16
- sensor={sensor}
17
- />
18
- </SCProvider>
19
- );
20
-
21
- jest.mock('react-redux', () => ({
22
- ...jest.requireActual('react-redux'),
23
- useSelector: jest.fn(),
24
- }));
25
6
 
26
7
  describe('Test OneBigButtonTemplate', () => {
27
8
  const action_data = {
@@ -42,25 +23,24 @@ describe('Test OneBigButtonTemplate', () => {
42
23
  text: 'UP',
43
24
  },
44
25
  };
45
- let tree;
46
- let sensor;
47
-
48
- beforeEach(() => {
49
- const localState = {
50
- isOnSwich: false,
51
- };
52
- useSelector.mockImplementation((cb) => {
53
- return cb(localState);
54
- });
55
- sensor = { name: 'Sensor' };
56
- });
26
+ const sensor = {
27
+ name: 'Sensor name',
28
+ };
29
+ let wrapper;
57
30
 
58
- test('render OneBigButtonTemplate', async () => {
31
+ test('render OneBigButtonTemplate', () => {
59
32
  const mockDoAction = jest.fn();
60
- await act(async () => {
61
- tree = await create(wrapComponent(actionGroup, mockDoAction, sensor));
33
+ act(() => {
34
+ wrapper = create(
35
+ <OneBigButtonTemplate
36
+ actionGroup={actionGroup}
37
+ doAction={mockDoAction}
38
+ sensor={sensor}
39
+ />
40
+ );
62
41
  });
63
- const instance = tree.root;
42
+
43
+ const instance = wrapper.root;
64
44
  const buttons = instance.findAllByType(TouchableOpacity);
65
45
  expect(buttons.length).toEqual(1);
66
46
 
@@ -69,6 +49,10 @@ describe('Test OneBigButtonTemplate', () => {
69
49
  });
70
50
 
71
51
  expect(mockDoAction).toHaveBeenCalledTimes(1);
72
- expect(mockDoAction).toHaveBeenCalledWith(action_data, null, 'Sensor up');
52
+ expect(mockDoAction).toHaveBeenCalledWith(
53
+ action_data,
54
+ null,
55
+ 'Sensor name up'
56
+ );
73
57
  });
74
58
  });