@rentlydev/rently-tuya 0.1.0

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 (288) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +281 -0
  3. package/android/build.gradle +182 -0
  4. package/android/gradle.properties +7 -0
  5. package/android/libs/airbrake-android-1.4.0.jar +0 -0
  6. package/android/src/main/AndroidManifest.xml +1 -0
  7. package/android/src/main/AndroidManifestNew.xml +25 -0
  8. package/android/src/main/java/com/rentlytuya/RentlyTuyaModule.kt +503 -0
  9. package/android/src/main/java/com/rentlytuya/RentlyTuyaPackage.kt +18 -0
  10. package/android/src/main/java/com/rentlytuya/TuyaActivity.kt +45 -0
  11. package/android/src/main/java/com/rentlytuya/alerts/FormatSDCardAlert.kt +83 -0
  12. package/android/src/main/java/com/rentlytuya/alerts/PermissionAlert.kt +91 -0
  13. package/android/src/main/java/com/rentlytuya/alerts/RemoveDoorbellAlert.kt +83 -0
  14. package/android/src/main/java/com/rentlytuya/alerts/RemoveDoorbellFailureAlert.kt +71 -0
  15. package/android/src/main/java/com/rentlytuya/alerts/ResetWifiAlert.kt +83 -0
  16. package/android/src/main/java/com/rentlytuya/alerts/SuccessAlert.kt +74 -0
  17. package/android/src/main/java/com/rentlytuya/components/Alert.kt +47 -0
  18. package/android/src/main/java/com/rentlytuya/components/AnchorButton.kt +125 -0
  19. package/android/src/main/java/com/rentlytuya/components/Button.kt +147 -0
  20. package/android/src/main/java/com/rentlytuya/components/CustomDatePicker.kt +275 -0
  21. package/android/src/main/java/com/rentlytuya/components/Divider.kt +53 -0
  22. package/android/src/main/java/com/rentlytuya/components/EncryptedImageView.kt +59 -0
  23. package/android/src/main/java/com/rentlytuya/components/Label.kt +155 -0
  24. package/android/src/main/java/com/rentlytuya/components/LoadingIndicator.kt +75 -0
  25. package/android/src/main/java/com/rentlytuya/components/Slider.kt +66 -0
  26. package/android/src/main/java/com/rentlytuya/components/Switch.kt +51 -0
  27. package/android/src/main/java/com/rentlytuya/components/VideoView.kt +45 -0
  28. package/android/src/main/java/com/rentlytuya/dashboard/AdvancedSettings.kt +259 -0
  29. package/android/src/main/java/com/rentlytuya/dashboard/Dashboard.kt +551 -0
  30. package/android/src/main/java/com/rentlytuya/dashboard/DoorbellSettings.kt +874 -0
  31. package/android/src/main/java/com/rentlytuya/dashboard/Messages.kt +463 -0
  32. package/android/src/main/java/com/rentlytuya/dashboard/NavController.kt +358 -0
  33. package/android/src/main/java/com/rentlytuya/dashboard/OfflineScreen.kt +160 -0
  34. package/android/src/main/java/com/rentlytuya/dashboard/Playback.kt +685 -0
  35. package/android/src/main/java/com/rentlytuya/tuya/Messages.kt +234 -0
  36. package/android/src/main/java/com/rentlytuya/tuya/Playback.kt +385 -0
  37. package/android/src/main/java/com/rentlytuya/tuya/ScreenCapture.kt +244 -0
  38. package/android/src/main/java/com/rentlytuya/tuya/Settings.kt +809 -0
  39. package/android/src/main/java/com/rentlytuya/tuya/Tuya.kt +497 -0
  40. package/android/src/main/java/com/rentlytuya/ui/theme/LocalColor.kt +80 -0
  41. package/android/src/main/java/com/rentlytuya/ui/theme/LocalFont.kt +35 -0
  42. package/android/src/main/java/com/rentlytuya/ui/theme/Theme.kt +34 -0
  43. package/android/src/main/java/com/rentlytuya/ui/theme/Type.kt +34 -0
  44. package/android/src/main/java/com/rentlytuya/util/Airbrake.kt +40 -0
  45. package/android/src/main/java/com/rentlytuya/util/DpConstants.kt +53 -0
  46. package/android/src/main/java/com/rentlytuya/util/FrescoManager.kt +86 -0
  47. package/android/src/main/java/com/rentlytuya/util/HeapAnalytics.kt +16 -0
  48. package/android/src/main/java/com/rentlytuya/util/KeylessModule.kt +81 -0
  49. package/android/src/main/java/com/rentlytuya/util/PermissionHandler.kt +75 -0
  50. package/android/src/main/java/com/rentlytuya/util/ReactParamsCheck.kt +152 -0
  51. package/android/src/main/java/com/rentlytuya/util/Util.kt +128 -0
  52. package/android/src/main/res/drawable/ic_close.xml +12 -0
  53. package/android/src/main/res/drawable/ic_launcher_background.xml +170 -0
  54. package/android/src/main/res/drawable/ic_launcher_foreground.xml +30 -0
  55. package/android/src/main/res/drawable/img_place_holder.png +0 -0
  56. package/android/src/main/res/drawable-hdpi/ic_action_arrow_backward.png +0 -0
  57. package/android/src/main/res/drawable-hdpi/ic_arrow_backward_white.png +0 -0
  58. package/android/src/main/res/drawable-hdpi/ic_arrow_blue_right.png +0 -0
  59. package/android/src/main/res/drawable-hdpi/ic_calendar.png +0 -0
  60. package/android/src/main/res/drawable-hdpi/ic_camera.png +0 -0
  61. package/android/src/main/res/drawable-hdpi/ic_message.png +0 -0
  62. package/android/src/main/res/drawable-hdpi/ic_pause.png +0 -0
  63. package/android/src/main/res/drawable-hdpi/ic_play.png +0 -0
  64. package/android/src/main/res/drawable-hdpi/ic_play_back.png +0 -0
  65. package/android/src/main/res/drawable-hdpi/ic_record.png +0 -0
  66. package/android/src/main/res/drawable-hdpi/ic_retry.png +0 -0
  67. package/android/src/main/res/drawable-hdpi/ic_setting.png +0 -0
  68. package/android/src/main/res/drawable-hdpi/ic_sound_off.png +0 -0
  69. package/android/src/main/res/drawable-hdpi/ic_sound_on.png +0 -0
  70. package/android/src/main/res/drawable-mdpi/ic_action_arrow_backward.png +0 -0
  71. package/android/src/main/res/drawable-mdpi/ic_arrow_backward_white.png +0 -0
  72. package/android/src/main/res/drawable-mdpi/ic_arrow_blue_right.png +0 -0
  73. package/android/src/main/res/drawable-mdpi/ic_battery_average.png +0 -0
  74. package/android/src/main/res/drawable-mdpi/ic_battery_charging.png +0 -0
  75. package/android/src/main/res/drawable-mdpi/ic_battery_full.png +0 -0
  76. package/android/src/main/res/drawable-mdpi/ic_battery_good.png +0 -0
  77. package/android/src/main/res/drawable-mdpi/ic_battery_low.png +0 -0
  78. package/android/src/main/res/drawable-mdpi/ic_calendar.png +0 -0
  79. package/android/src/main/res/drawable-mdpi/ic_camera.png +0 -0
  80. package/android/src/main/res/drawable-mdpi/ic_message.png +0 -0
  81. package/android/src/main/res/drawable-mdpi/ic_pause.png +0 -0
  82. package/android/src/main/res/drawable-mdpi/ic_play.png +0 -0
  83. package/android/src/main/res/drawable-mdpi/ic_play_back.png +0 -0
  84. package/android/src/main/res/drawable-mdpi/ic_record.png +0 -0
  85. package/android/src/main/res/drawable-mdpi/ic_retry.png +0 -0
  86. package/android/src/main/res/drawable-mdpi/ic_setting.png +0 -0
  87. package/android/src/main/res/drawable-mdpi/ic_sound_off.png +0 -0
  88. package/android/src/main/res/drawable-mdpi/ic_sound_on.png +0 -0
  89. package/android/src/main/res/drawable-xhdpi/ic_action_arrow_backward.png +0 -0
  90. package/android/src/main/res/drawable-xhdpi/ic_arrow_backward_white.png +0 -0
  91. package/android/src/main/res/drawable-xhdpi/ic_arrow_blue_right.png +0 -0
  92. package/android/src/main/res/drawable-xhdpi/ic_battery_average.png +0 -0
  93. package/android/src/main/res/drawable-xhdpi/ic_battery_charging.png +0 -0
  94. package/android/src/main/res/drawable-xhdpi/ic_battery_full.png +0 -0
  95. package/android/src/main/res/drawable-xhdpi/ic_battery_good.png +0 -0
  96. package/android/src/main/res/drawable-xhdpi/ic_battery_low.png +0 -0
  97. package/android/src/main/res/drawable-xhdpi/ic_calendar.png +0 -0
  98. package/android/src/main/res/drawable-xhdpi/ic_camera.png +0 -0
  99. package/android/src/main/res/drawable-xhdpi/ic_message.png +0 -0
  100. package/android/src/main/res/drawable-xhdpi/ic_pause.png +0 -0
  101. package/android/src/main/res/drawable-xhdpi/ic_play.png +0 -0
  102. package/android/src/main/res/drawable-xhdpi/ic_play_back.png +0 -0
  103. package/android/src/main/res/drawable-xhdpi/ic_record.png +0 -0
  104. package/android/src/main/res/drawable-xhdpi/ic_retry.png +0 -0
  105. package/android/src/main/res/drawable-xhdpi/ic_setting.png +0 -0
  106. package/android/src/main/res/drawable-xhdpi/ic_sound_off.png +0 -0
  107. package/android/src/main/res/drawable-xhdpi/ic_sound_on.png +0 -0
  108. package/android/src/main/res/drawable-xxhdpi/ic_action_arrow_backward.png +0 -0
  109. package/android/src/main/res/drawable-xxhdpi/ic_arrow_backward_white.png +0 -0
  110. package/android/src/main/res/drawable-xxhdpi/ic_arrow_blue_right.png +0 -0
  111. package/android/src/main/res/drawable-xxhdpi/ic_battery_average.png +0 -0
  112. package/android/src/main/res/drawable-xxhdpi/ic_battery_charging.png +0 -0
  113. package/android/src/main/res/drawable-xxhdpi/ic_battery_full.png +0 -0
  114. package/android/src/main/res/drawable-xxhdpi/ic_battery_good.png +0 -0
  115. package/android/src/main/res/drawable-xxhdpi/ic_battery_low.png +0 -0
  116. package/android/src/main/res/drawable-xxhdpi/ic_calendar.png +0 -0
  117. package/android/src/main/res/drawable-xxhdpi/ic_camera.png +0 -0
  118. package/android/src/main/res/drawable-xxhdpi/ic_message.png +0 -0
  119. package/android/src/main/res/drawable-xxhdpi/ic_pause.png +0 -0
  120. package/android/src/main/res/drawable-xxhdpi/ic_play.png +0 -0
  121. package/android/src/main/res/drawable-xxhdpi/ic_play_back.png +0 -0
  122. package/android/src/main/res/drawable-xxhdpi/ic_record.png +0 -0
  123. package/android/src/main/res/drawable-xxhdpi/ic_retry.png +0 -0
  124. package/android/src/main/res/drawable-xxhdpi/ic_setting.png +0 -0
  125. package/android/src/main/res/drawable-xxhdpi/ic_sound_off.png +0 -0
  126. package/android/src/main/res/drawable-xxhdpi/ic_sound_on.png +0 -0
  127. package/android/src/main/res/drawable-xxxhdpi/ic_action_arrow_backward.png +0 -0
  128. package/android/src/main/res/drawable-xxxhdpi/ic_arrow_backward_white.png +0 -0
  129. package/android/src/main/res/drawable-xxxhdpi/ic_arrow_blue_right.png +0 -0
  130. package/android/src/main/res/drawable-xxxhdpi/ic_calendar.png +0 -0
  131. package/android/src/main/res/drawable-xxxhdpi/ic_camera.png +0 -0
  132. package/android/src/main/res/drawable-xxxhdpi/ic_message.png +0 -0
  133. package/android/src/main/res/drawable-xxxhdpi/ic_pause.png +0 -0
  134. package/android/src/main/res/drawable-xxxhdpi/ic_play.png +0 -0
  135. package/android/src/main/res/drawable-xxxhdpi/ic_play_back.png +0 -0
  136. package/android/src/main/res/drawable-xxxhdpi/ic_record.png +0 -0
  137. package/android/src/main/res/drawable-xxxhdpi/ic_retry.png +0 -0
  138. package/android/src/main/res/drawable-xxxhdpi/ic_setting.png +0 -0
  139. package/android/src/main/res/drawable-xxxhdpi/ic_sound_off.png +0 -0
  140. package/android/src/main/res/drawable-xxxhdpi/ic_sound_on.png +0 -0
  141. package/android/src/main/res/font/quicksand_bold.ttf +0 -0
  142. package/android/src/main/res/font/quicksand_light.ttf +0 -0
  143. package/android/src/main/res/font/quicksand_medium.ttf +0 -0
  144. package/android/src/main/res/font/quicksand_regular.ttf +0 -0
  145. package/android/src/main/res/font/quicksand_semi_bold.ttf +0 -0
  146. package/android/src/main/res/values/strings.xml +121 -0
  147. package/android/thingMapping.gradle +200 -0
  148. package/android/thingMapping.json +2014 -0
  149. package/ios/components/Alert.swift +54 -0
  150. package/ios/components/AnchorButton.swift +100 -0
  151. package/ios/components/Button.swift +118 -0
  152. package/ios/components/CustomDatePicker.swift +275 -0
  153. package/ios/components/Divider.swift +28 -0
  154. package/ios/components/Image.swift +72 -0
  155. package/ios/components/Label.swift +105 -0
  156. package/ios/components/Switch.swift +61 -0
  157. package/ios/dashboard/AdvanceSettings.swift +127 -0
  158. package/ios/dashboard/Dashboard.swift +354 -0
  159. package/ios/dashboard/Messages.swift +361 -0
  160. package/ios/dashboard/NavigationController.swift +173 -0
  161. package/ios/dashboard/OfflineScreen.swift +109 -0
  162. package/ios/dashboard/Playback.swift +543 -0
  163. package/ios/dashboard/PreviewManager.swift +117 -0
  164. package/ios/dashboard/Settings.swift +672 -0
  165. package/ios/icons/Charging.png +0 -0
  166. package/ios/icons/Charging@2x.png +0 -0
  167. package/ios/icons/Charging@3x.png +0 -0
  168. package/ios/icons/back_arraow.png +0 -0
  169. package/ios/icons/back_arraow@2x.png +0 -0
  170. package/ios/icons/back_arraow@3x.png +0 -0
  171. package/ios/icons/battery_average.png +0 -0
  172. package/ios/icons/battery_average@2x.png +0 -0
  173. package/ios/icons/battery_average@3x.png +0 -0
  174. package/ios/icons/battery_full.png +0 -0
  175. package/ios/icons/battery_full@2x.png +0 -0
  176. package/ios/icons/battery_full@3x.png +0 -0
  177. package/ios/icons/battery_good.png +0 -0
  178. package/ios/icons/battery_good@2x.png +0 -0
  179. package/ios/icons/battery_good@3x.png +0 -0
  180. package/ios/icons/battery_low.png +0 -0
  181. package/ios/icons/battery_low@2x.png +0 -0
  182. package/ios/icons/battery_low@3x.png +0 -0
  183. package/ios/icons/calendar.png +0 -0
  184. package/ios/icons/calendar@2x.png +0 -0
  185. package/ios/icons/calendar@3x.png +0 -0
  186. package/ios/icons/cloud.png +0 -0
  187. package/ios/icons/cloud@2x.png +0 -0
  188. package/ios/icons/cloud@3x.png +0 -0
  189. package/ios/icons/down_update.png +0 -0
  190. package/ios/icons/down_update@2x.png +0 -0
  191. package/ios/icons/down_update@3x.png +0 -0
  192. package/ios/icons/exit_fullscreen.png +0 -0
  193. package/ios/icons/exit_fullscreen@2x.png +0 -0
  194. package/ios/icons/exit_fullscreen@3x.png +0 -0
  195. package/ios/icons/expand.png +0 -0
  196. package/ios/icons/fullscreen.png +0 -0
  197. package/ios/icons/fullscreen@2x.png +0 -0
  198. package/ios/icons/fullscreen@3x.png +0 -0
  199. package/ios/icons/image_placeholder.png +0 -0
  200. package/ios/icons/information.png +0 -0
  201. package/ios/icons/information@2x.png +0 -0
  202. package/ios/icons/information@3x.png +0 -0
  203. package/ios/icons/keyless_Setting.png +0 -0
  204. package/ios/icons/keyless_Setting@2x.png +0 -0
  205. package/ios/icons/keyless_Setting@3x.png +0 -0
  206. package/ios/icons/keyless_back@1x.png +0 -0
  207. package/ios/icons/keyless_back@2x.png +0 -0
  208. package/ios/icons/keyless_back@3x.png +0 -0
  209. package/ios/icons/keyless_filter.png +0 -0
  210. package/ios/icons/keyless_filter@2x.png +0 -0
  211. package/ios/icons/keyless_filter@3x.png +0 -0
  212. package/ios/icons/keyless_message.png +0 -0
  213. package/ios/icons/keyless_message@2x.png +0 -0
  214. package/ios/icons/keyless_message@3x.png +0 -0
  215. package/ios/icons/keyless_pause.png +0 -0
  216. package/ios/icons/keyless_pause@2x.png +0 -0
  217. package/ios/icons/keyless_pause@3x.png +0 -0
  218. package/ios/icons/keyless_photo.png +0 -0
  219. package/ios/icons/keyless_photo@2x.png +0 -0
  220. package/ios/icons/keyless_photo@3x.png +0 -0
  221. package/ios/icons/keyless_play.png +0 -0
  222. package/ios/icons/keyless_play@2x.png +0 -0
  223. package/ios/icons/keyless_play@3x.png +0 -0
  224. package/ios/icons/keyless_play_list.png +0 -0
  225. package/ios/icons/keyless_play_list@2x.png +0 -0
  226. package/ios/icons/keyless_play_list@3x.png +0 -0
  227. package/ios/icons/keyless_play_playback.png +0 -0
  228. package/ios/icons/keyless_play_playback@2x.png +0 -0
  229. package/ios/icons/keyless_play_playback@3x.png +0 -0
  230. package/ios/icons/keyless_record.png +0 -0
  231. package/ios/icons/keyless_record@2x.png +0 -0
  232. package/ios/icons/keyless_record@3x.png +0 -0
  233. package/ios/icons/keyless_record_on.png +0 -0
  234. package/ios/icons/keyless_record_on@2x.png +0 -0
  235. package/ios/icons/keyless_record_on@3x.png +0 -0
  236. package/ios/icons/keyless_sound_off.png +0 -0
  237. package/ios/icons/keyless_sound_off@2x.png +0 -0
  238. package/ios/icons/keyless_sound_off@3x.png +0 -0
  239. package/ios/icons/keyless_sound_on.png +0 -0
  240. package/ios/icons/keyless_sound_on@2x.png +0 -0
  241. package/ios/icons/keyless_sound_on@3x.png +0 -0
  242. package/ios/icons/keyless_speak_off.png +0 -0
  243. package/ios/icons/keyless_speak_off@2x.png +0 -0
  244. package/ios/icons/keyless_speak_on.png +0 -0
  245. package/ios/icons/keyless_speak_on@2x.png +0 -0
  246. package/ios/icons/keyless_speak_on@3x.png +0 -0
  247. package/ios/icons/refresh.png +0 -0
  248. package/ios/icons/refresh@2x.png +0 -0
  249. package/ios/icons/refresh@3x.png +0 -0
  250. package/ios/icons/ty_camera_control_hd_normal@2x.png +0 -0
  251. package/ios/icons/ty_camera_control_hd_normal@3x.png +0 -0
  252. package/ios/icons/ty_camera_control_sd_normal@2x.png +0 -0
  253. package/ios/icons/ty_camera_control_sd_normal@3x.png +0 -0
  254. package/ios/icons/upgrade_success.png +0 -0
  255. package/ios/icons/upgrade_success@2x.png +0 -0
  256. package/ios/icons/upgrade_success@3x.png +0 -0
  257. package/ios/listener/KeylessListener.m +8 -0
  258. package/ios/listener/KeylessListener.swift +56 -0
  259. package/ios/listener/RentlyTuya-Bridging-Header.h +5 -0
  260. package/ios/listener/RentlyTuya.mm +56 -0
  261. package/ios/listener/RentlyTuya.swift +544 -0
  262. package/ios/theme/LocalColor.swift +33 -0
  263. package/ios/theme/LocalFont.swift +32 -0
  264. package/ios/theme/Theme.swift +71 -0
  265. package/ios/tuya/CameraManager.swift +296 -0
  266. package/ios/tuya/SettingsManager.swift +475 -0
  267. package/ios/tuya/Tuya.swift +570 -0
  268. package/ios/tuya/TuyaMessages.swift +98 -0
  269. package/ios/utils/Airbrake.swift +31 -0
  270. package/ios/utils/AppUtility.swift +76 -0
  271. package/ios/utils/HeapAnalytics.swift +8 -0
  272. package/ios/utils/OrientationManager.swift +60 -0
  273. package/ios/utils/PromiseHandler.swift +36 -0
  274. package/lib/commonjs/index.js +90 -0
  275. package/lib/commonjs/index.js.map +1 -0
  276. package/lib/commonjs/package.json +1 -0
  277. package/lib/module/index.js +83 -0
  278. package/lib/module/index.js.map +1 -0
  279. package/lib/module/package.json +1 -0
  280. package/lib/typescript/commonjs/package.json +1 -0
  281. package/lib/typescript/commonjs/src/index.d.ts +75 -0
  282. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  283. package/lib/typescript/module/package.json +1 -0
  284. package/lib/typescript/module/src/index.d.ts +75 -0
  285. package/lib/typescript/module/src/index.d.ts.map +1 -0
  286. package/package.json +188 -0
  287. package/rently-tuya.podspec +52 -0
  288. package/src/index.tsx +158 -0
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 harishkumar00
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,281 @@
1
+ # @rentlydev/rently-tuya
2
+
3
+ A React Native module for integrating the Tuya Doorbell SDK, enabling applications to interact with Tuya-compatible smart doorbells. This library provides essential functionalities such as device pairing, live preview, and push notification registration, ensuring a seamless smart home experience.
4
+
5
+ Fully compatible with TypeScript.
6
+
7
+ ## Supported platforms
8
+
9
+ | Platform | Support |
10
+ |---|---|
11
+ | iOS | ✅ |
12
+ | Android | ✅ |
13
+ | Web | ❌ |
14
+ | Windows | ❌ |
15
+ | macOS | ❌ |
16
+
17
+ ## Installation
18
+
19
+ ```sh
20
+ npm install @rentlydev/rently-tuya
21
+ ```
22
+ or
23
+
24
+ ```sh
25
+ yarn add @rentlydev/rently-tuya
26
+ ```
27
+
28
+ ## Configuration and Permissions
29
+
30
+ ### iOS
31
+ (Configuration details to be added)
32
+
33
+ ### Android
34
+ (Configuration details to be added)
35
+
36
+ ## Summary
37
+
38
+ ### Methods
39
+
40
+ * [`initAirbrake`](#initAirbrake)
41
+ * [`getCurrentWifi`](#getCurrentWifi)
42
+ * [`getDeviceData`](#getDeviceData)
43
+ * [`setTuyaHome`](#setTuyaHome)
44
+ * [`getTokenForQRCode`](#getTokenForQRCode)
45
+ * [`initActivatorForQRCode`](#initActivatorForQRCode)
46
+ * [`loginWithUid`](#loginWithUid)
47
+ * [`logout`](#logout)
48
+ * [`openCameraLivePreview`](#openCameraLivePreview)
49
+ * [`registerForPushNotification`](#registerForPushNotification)
50
+ * [`renameDevice`](#renameDevice)
51
+ * [`resetDevice`](#resetDevice)
52
+
53
+ ### Listeners
54
+
55
+ * [`Listeners`](#Listeners)
56
+
57
+ ---
58
+
59
+ ## Usage
60
+
61
+ ### initAirbrake
62
+ ```javascript
63
+ import RentlyTuya from '@rentlydev/rently-tuya';
64
+
65
+ const response = await RentlyTuya.initAirbrake({ key: '', id: '' });
66
+ ```
67
+
68
+ Parameters:
69
+ * `key` (String) - Airbrake Project Key.
70
+ * `id` (String) - Airbrake Project Id.
71
+
72
+ ### getCurrentWifi
73
+ ```javascript
74
+ import RentlyTuya from '@rentlydev/rently-tuya';
75
+
76
+ const response = await RentlyTuya.getCurrentWifi();
77
+ ```
78
+ Response:
79
+
80
+ (String) - Current connected Wi-Fi name.
81
+
82
+ ### getDeviceData
83
+ ```javascript
84
+ import RentlyTuya from '@rentlydev/rently-tuya';
85
+
86
+ const response = await RentlyTuya.getDeviceData({ devId: '' });
87
+ ```
88
+ Parameters:
89
+ * `devId` (String) - Doorbell Device Id.
90
+
91
+ ### setTuyaHome
92
+ ```javascript
93
+ import RentlyTuya from '@rentlydev/rently-tuya';
94
+
95
+ const response = await RentlyTuya.setTuyaHome({ homeId: '' })
96
+ ```
97
+ Parameters:
98
+ * `homeId` (String) - Home Id associated with Doorbell.
99
+
100
+ ### getTokenForQRCode
101
+ ```javascript
102
+ import RentlyTuya from '@rentlydev/rently-tuya';
103
+
104
+ const response = await RentlyTuya.getTokenForQRCode({ homeId: '' })
105
+ ```
106
+ Parameters:
107
+ * `homeId` (String) - Home Id associated with Doorbell.
108
+
109
+ Response:
110
+
111
+ (String) - Token required for QR code activation.
112
+
113
+ ### initActivatorForQRCode
114
+ ```javascript
115
+ import RentlyTuya from '@rentlydev/rently-tuya';
116
+
117
+ const response = await RentlyTuya.initActivatorForQRCode({
118
+ ssid: '',
119
+ paasword: '',
120
+ time: '',
121
+ token: ''
122
+ })
123
+ ```
124
+ Parameters:
125
+ * `ssid` (String) - Wi-Fi name.
126
+ * `password` (String) - Wi-Fi Password.
127
+ * `time` (String) - Timeout for activation.
128
+ * `token` (String) - Token from getTokenForQRCode.
129
+
130
+ ### loginWithUid
131
+ ```javascript
132
+ import RentlyTuya from '@rentlydev/rently-tuya';
133
+
134
+ const response = await RentlyTuya.loginWithUid({
135
+ uid: '',
136
+ paasword: '',
137
+ countryCode: ''
138
+ })
139
+ ```
140
+ Parameters:
141
+ * `uid` (String) - Login Uid.
142
+ * `password` (String) - Login Password.
143
+ * `countryCode` (String) - Login Country code.
144
+
145
+ ### logout
146
+ ```javascript
147
+ import RentlyTuya from '@rentlydev/rently-tuya';
148
+
149
+ const response = await RentlyTuya.logout()
150
+ ```
151
+
152
+ ### openCameraLivePreview
153
+ ```javascript
154
+ import RentlyTuya from '@rentlydev/rently-tuya';
155
+
156
+ const response = await RentlyTuya.openCameraLivePreview({
157
+ id: '',
158
+ countryCode: '',
159
+ uid: '',
160
+ passwd: '',
161
+ devId: '',
162
+ homeId: '',
163
+ last_moveout_at: '',
164
+ resetRequired: true,
165
+ isResident: true,
166
+ display_remove_doorbell_button: true,
167
+ propertyCredentialUsername: '',
168
+ propertyCredentialPassword: '',
169
+ tuya_product_name: '',
170
+ device_uuid: '',
171
+ serial_no: '',
172
+ flavour: '',
173
+ doorbell_default_settings_updated: true,
174
+ motion_detection: true,
175
+ continuous_recording: true,
176
+ event_recording: true,
177
+ set_sensitivity_low: true
178
+ })
179
+ ```
180
+ Parameters:
181
+ * `id` (String) - Unique identifier for the user.
182
+ * `countryCode` (String) - The country code associated with the user.
183
+ * `uid` (String) - Unique user identifier used for authentication.
184
+ * `passwd` (String) - Password for the user account.
185
+ * `devId` (String) - Unique identifier for the Tuya doorbell device.
186
+ * `homeId` (String) - Identifier for the home where the Tuya doorbell is registered.
187
+ * `last_moveout_at` (String) - Timestamp of the last move-out event for the asset.
188
+ * `resetRequired` (String) - Indicates whether a reset is required for the device.
189
+ * `isResident` (String) - Specifies if the user is a resident of the associated home.
190
+ * `display_remove_doorbell_button` (String) - Determines if the option to remove the doorbell should be shown.
191
+ * `propertyCredentialUsername` (String) - Username for property authentication.
192
+ * `propertyCredentialPassword` (String) - Password for property management system authentication.
193
+ * `tuya_product_name` (String) - Name of the Tuya doorbell product.
194
+ * `device_uuid` (String) - UUID of the device.
195
+ * `serial_no` (String) - Serial number of the doorbell device.
196
+ * `flavour` (String) - Theme for the UI.
197
+ * `doorbell_default_settings_updated` (String) - Specifies whether the default doorbell settings should be updated.
198
+ * `motion_detection` (String) - Indicates if motion detection should be enabled.
199
+ * `continuous_recording` (String) - Indicates if continuous recording should be enabled.
200
+ * `event_recording` (String) - Indicates if evet recording should be enabled.
201
+ * `set_sensitivity_low` (String) - Indicates if sensitivity should be set to low.
202
+
203
+ ### registerForPushNotification
204
+ ```javascript
205
+ import RentlyTuya from '@rentlydev/rently-tuya';
206
+
207
+ const response = await RentlyTuya.registerForPushNotification({ token: '' })
208
+ ```
209
+ Parameters:
210
+ * `token` (String) - FCM Token.
211
+
212
+ ### renameDevice
213
+ ```javascript
214
+ import RentlyTuya from '@rentlydev/rently-tuya';
215
+
216
+ const response = await RentlyTuya.renameDevice({ deviceId: '', name: '' })
217
+ ```
218
+ Parameters:
219
+ * `deviceId` (String) - Device Id.
220
+ * `name` (String) - New device name.
221
+
222
+ ### resetDevice
223
+ ```javascript
224
+ import RentlyTuya from '@rentlydev/rently-tuya';
225
+
226
+ const response = await RentlyTuya.resetDevice({
227
+ devId: '',
228
+ homeId: '',
229
+ username: '',
230
+ password: '',
231
+ countryCode: ''
232
+ })
233
+ ```
234
+
235
+ Parameters:
236
+ * `devId` (String) - Doorbell Device Id.
237
+ * `homeId` (String) - Home Id associated with Doorbell.
238
+ * `username` (String) - User ID.
239
+ * `password` (String) - Password.
240
+ * `countryCode` (String) - Country Code.
241
+
242
+ ### Listeners
243
+ > [!IMPORTANT]
244
+ After processing, a success or failure event should be sent.
245
+
246
+ ## Android
247
+ ```javascript
248
+ import RentlyTuya from '@rentlydev/rently-tuya';
249
+
250
+ export class ExposedToJava {
251
+ removeCamera(devId: string) {}
252
+
253
+ navigateToAddDoorbell(devId: string) {}
254
+
255
+ resetDoorbellDefaultSettingsFlag(id: string) {}
256
+ }
257
+ ```
258
+
259
+ ## iOS
260
+ ```javascript
261
+ React.useEffect(() => {
262
+ const data = new NativeEventEmitter(NativeModules.KeylessListener);
263
+ data.addListener('REMOVE_CAMERA', (data: any) => {});
264
+ data.addListener('RESET_WIFI', (data: any) => {});
265
+ data.addListener('RESET_DEFAULT_SETTINGS_FLAG', (data: any) => {});
266
+ }, []);
267
+ ```
268
+
269
+ ## How To Run Example App ?
270
+
271
+ To run example app, follow the below steps
272
+
273
+ 1. Clone the repository
274
+ 2. Run `yarn install`
275
+ 3. Navigate to example/ios folder i.e `cd example/ios` and do `pod install`, then `cd ..`
276
+ 4. For android run `yarn example android`
277
+ 5. For ios run `yarn example ios`
278
+
279
+ ## Demo Video
280
+
281
+ [Android & iOS](https://drive.google.com/drive/folders/1307uBsdACw-H_FxlF3TWz7cqm6Phhx-6?usp=sharing)
@@ -0,0 +1,182 @@
1
+ import com.android.Version
2
+
3
+ buildscript {
4
+ ext {
5
+ agp_version = '8.2.0'
6
+ heapVersion = '1.10.+'
7
+ }
8
+
9
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
10
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["RentlyTuya_kotlinVersion"]
11
+
12
+ repositories {
13
+ maven { url 'https://maven-other.tuya.com/repository/maven-releases/' }
14
+ maven { url "https://maven-other.tuya.com/repository/maven-commercial-releases/" }
15
+ maven { url 'https://jitpack.io' }
16
+ google()
17
+ mavenCentral()
18
+ maven { url 'https://maven.aliyun.com/repository/public' }
19
+ maven { url 'https://central.maven.org/maven2/' }
20
+ maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
21
+ maven { url 'https : //dl.bintray.com/jenly/maven ' }
22
+ maven { url 'https://developer.huawei.com/repo/' }
23
+ }
24
+
25
+ dependencies {
26
+ classpath "com.android.tools.build:gradle:$agp_version"
27
+ // noinspection DifferentKotlinGradleVersion
28
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
29
+ }
30
+ }
31
+
32
+ def reactNativeArchitectures() {
33
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
34
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
35
+ }
36
+
37
+ def isNewArchitectureEnabled() {
38
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
39
+ }
40
+
41
+ apply plugin: "com.android.library"
42
+ apply plugin: "kotlin-android"
43
+ apply from: "thingMapping.gradle"
44
+
45
+ if (isNewArchitectureEnabled()) {
46
+ apply plugin: "com.facebook.react"
47
+ }
48
+
49
+ def getExtOrDefault(name) {
50
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["RentlyTuya_" + name]
51
+ }
52
+
53
+ def getExtOrIntegerDefault(name) {
54
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["RentlyTuya_" + name]).toInteger()
55
+ }
56
+
57
+ static def supportsNamespace() {
58
+ def parsed = Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
59
+ def major = parsed[0].toInteger()
60
+ def minor = parsed[1].toInteger()
61
+
62
+ // Namespace support was added in 7.3.0
63
+ return (major == 7 && minor >= 3) || major >= 8
64
+ }
65
+
66
+ android {
67
+ if (supportsNamespace()) {
68
+ namespace "com.rentlytuya"
69
+
70
+ sourceSets {
71
+ main {
72
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
73
+ }
74
+ }
75
+ }
76
+
77
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
78
+
79
+ defaultConfig {
80
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
81
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
82
+
83
+ ndk {
84
+ abiFilters "armeabi-v7a", "arm64-v8a"
85
+ }
86
+ packagingOptions {
87
+ pickFirst 'lib/*/libc++_shared.so'
88
+ pickFirst 'lib/*/libgnustl_shared.so'
89
+ pickFirst 'lib/*/liblog.so'
90
+ pickFirst 'lib/*/libopenh264.so'
91
+ pickFirst 'lib/*/libyuv.so'
92
+ }
93
+ }
94
+
95
+ buildTypes {
96
+ release {
97
+ minifyEnabled false
98
+ }
99
+ }
100
+
101
+ lintOptions {
102
+ disable "GradleCompatible"
103
+ }
104
+
105
+ buildFeatures {
106
+ compose true
107
+ }
108
+
109
+ composeOptions {
110
+ kotlinCompilerExtensionVersion '1.5.10'
111
+ }
112
+
113
+ compileOptions {
114
+ sourceCompatibility JavaVersion.VERSION_17
115
+ targetCompatibility JavaVersion.VERSION_17
116
+ }
117
+ }
118
+
119
+ repositories {
120
+ maven { url 'https://maven-other.tuya.com/repository/maven-releases/' }
121
+ maven { url "https://maven-other.tuya.com/repository/maven-commercial-releases/" }
122
+ mavenCentral()
123
+ google()
124
+ maven { url 'https://jitpack.io' }
125
+ maven { url 'https : //dl.bintray.com/jenly/maven ' }
126
+ }
127
+
128
+ def kotlin_version = getExtOrDefault("kotlinVersion")
129
+
130
+ configurations.configureEach {
131
+ exclude group: "com.thingclips.smart", module: 'thingsmart-modularCampAnno'
132
+ }
133
+
134
+ dependencies {
135
+ // For < 0.71, this will be from the local maven repo
136
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
137
+ // noinspection GradleDynamicVersion
138
+ implementation "com.facebook.react:react-android:0.74.1"
139
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
140
+
141
+ // Airbrake
142
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
143
+
144
+ // Tuya
145
+ compileOnly fileTree(dir: 'libs', include: ['*.aar'])
146
+ // compileOnly files('libs/security-algorithm-1.0.0.aar')
147
+
148
+ implementation 'com.alibaba:fastjson:1.1.67.android'
149
+ implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.2'
150
+
151
+ // Tuya - The latest stable App SDK for Android.
152
+ implementation 'com.facebook.soloader:soloader:0.12.1'
153
+ implementation 'com.thingclips.smart:thingsmart:5.15.0'
154
+ api('com.thingclips.smart:thingsmart:5.15.0') {
155
+ exclude group: 'com.thingclips.smart', module: 'thingsmart-asynclib'
156
+ }
157
+ api 'com.thingclips.smart:thingsmart-ipcsdk:5.14.1'
158
+ implementation 'com.thingclips.smart:thingsmart-ipc-camera-autotest:5.0.0'
159
+ implementation 'com.thingclips.smart:thingsmart-ipc-camera-cloudtool:5.0.0'
160
+ implementation 'com.thingclips.smart:thingsmart-ipc-camera-timeline:1.1.0'
161
+
162
+ implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
163
+ implementation 'androidx.recyclerview:recyclerview:1.3.2'
164
+ implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
165
+
166
+ // Jetpack Compose
167
+ implementation platform('androidx.compose:compose-bom:2024.11.00')
168
+ implementation 'androidx.compose.ui:ui'
169
+ implementation 'androidx.compose.ui:ui-graphics'
170
+ implementation 'androidx.compose.ui:ui-tooling-preview'
171
+ implementation 'androidx.compose.material3:material3'
172
+ implementation 'androidx.activity:activity-compose:1.9.3'
173
+
174
+ // Navigation
175
+ implementation "androidx.navigation:navigation-compose:2.8.4"
176
+
177
+ // Fresco
178
+ implementation 'com.facebook.fresco:fresco:3.4.0'
179
+
180
+ // Heap
181
+ implementation "com.heapanalytics.android:heap-android-client:$heapVersion"
182
+ }
@@ -0,0 +1,7 @@
1
+ RentlyTuya_kotlinVersion=1.9.22
2
+ RentlyTuya_minSdkVersion=23
3
+ RentlyTuya_targetSdkVersion=34
4
+ RentlyTuya_compileSdkVersion=34
5
+ RentlyTuya_ndkversion=21.4.7075529
6
+ android.useAndroidX=true
7
+ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
@@ -0,0 +1 @@
1
+ <manifest package="com.rentlytuya"></manifest>
@@ -0,0 +1,25 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+
3
+ <uses-permission android:name="android.permission.INTERNET" />
4
+ <uses-permission android:name="android.permission.BLUETOOTH" />
5
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
6
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
7
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
8
+ <uses-permission android:name="android.permission.CAMERA" />
9
+ <uses-permission android:name="android.permission.VIBRATE" />
10
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
11
+ <uses-permission android:name="android.permission.FLASHLIGHT" />
12
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
13
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
14
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
15
+
16
+ <uses-feature android:name="android.hardware.camera" />
17
+ <uses-feature android:name="android.hardware.camera.autofocus" />
18
+
19
+ <application>
20
+ <activity
21
+ android:name=".TuyaActivity"
22
+ android:configChanges="keyboardHidden|orientation|screenSize" />
23
+
24
+ </application>
25
+ </manifest>