@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
@@ -0,0 +1,91 @@
1
+ package com.rentlytuya.alerts
2
+
3
+ import android.app.Activity
4
+ import android.content.Context
5
+ import androidx.compose.foundation.layout.Arrangement
6
+ import androidx.compose.foundation.layout.Column
7
+ import androidx.compose.foundation.layout.Row
8
+ import androidx.compose.foundation.layout.fillMaxWidth
9
+ import androidx.compose.foundation.layout.height
10
+ import androidx.compose.foundation.layout.padding
11
+ import androidx.compose.foundation.layout.width
12
+ import androidx.compose.runtime.Composable
13
+ import androidx.compose.ui.Modifier
14
+ import androidx.compose.ui.unit.dp
15
+ import androidx.compose.ui.unit.sp
16
+ import com.rentlytuya.R
17
+ import com.rentlytuya.components.Alert
18
+ import com.rentlytuya.components.Button
19
+ import com.rentlytuya.components.Label
20
+ import com.rentlytuya.ui.theme.LocalColor
21
+ import com.rentlytuya.util.PermissionHandler
22
+ import com.rentlytuya.util.Util.strings
23
+
24
+ @Composable
25
+ fun PermissionAlert(
26
+ context: Context,
27
+ permissions: Array<String>,
28
+ isPermissionDisclaimerAlertVisible: Boolean,
29
+ onDismiss: () -> Unit
30
+ ) {
31
+ Alert(
32
+ modifier = Modifier
33
+ .fillMaxWidth(0.95f)
34
+ .padding(top = 40.dp, bottom = 30.dp, start = 30.dp, end = 30.dp),
35
+ isVisible = isPermissionDisclaimerAlertVisible,
36
+ onDismiss = onDismiss
37
+ ) {
38
+ Column(
39
+ modifier = Modifier
40
+ ) {
41
+ Label(
42
+ modifier = Modifier
43
+ .padding(bottom = 20.dp),
44
+ title = strings(id = R.string.requestAudioPermission),
45
+ medium = true,
46
+ xl18 = true,
47
+ black = true,
48
+ maxLines = 6,
49
+ lineHeight = 20.sp,
50
+ center = true
51
+ )
52
+
53
+ Row(
54
+ modifier = Modifier
55
+ .fillMaxWidth(),
56
+ horizontalArrangement = Arrangement.SpaceBetween
57
+ ) {
58
+ Button(
59
+ modifier = Modifier
60
+ .width(125.dp)
61
+ .height(50.dp),
62
+ id = "AudioPermission_NotNow",
63
+ title = strings(id = R.string.notNow),
64
+ textColor = LocalColor.Monochrome.White,
65
+ primary = true,
66
+ semiBold = true
67
+ ) {
68
+ onDismiss()
69
+ }
70
+
71
+ Button(
72
+ modifier = Modifier
73
+ .width(125.dp)
74
+ .height(50.dp),
75
+ id = "AudioPermission_Agree",
76
+ title = strings(id = R.string.agree),
77
+ textColor = LocalColor.Monochrome.White,
78
+ primary = true,
79
+ semiBold = true
80
+ ) {
81
+ onDismiss()
82
+ PermissionHandler.checkAndRequestPermissions(
83
+ context as Activity,
84
+ permissions,
85
+ 200
86
+ )
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,83 @@
1
+ package com.rentlytuya.alerts
2
+
3
+ import androidx.compose.foundation.layout.Arrangement
4
+ import androidx.compose.foundation.layout.Row
5
+ import androidx.compose.foundation.layout.fillMaxWidth
6
+ import androidx.compose.foundation.layout.padding
7
+ import androidx.compose.runtime.Composable
8
+ import androidx.compose.ui.Modifier
9
+ import androidx.compose.ui.unit.dp
10
+ import androidx.compose.ui.unit.sp
11
+ import com.rentlytuya.R
12
+ import com.rentlytuya.components.Alert
13
+ import com.rentlytuya.components.AnchorButton
14
+ import com.rentlytuya.components.Label
15
+ import com.rentlytuya.util.Util.strings
16
+
17
+ @Composable
18
+ fun RemoveDoorbellAlert(
19
+ isRemoveDoorbellAlertVisible: Boolean,
20
+ onDismiss: () -> Unit,
21
+ onRemove: () -> Unit
22
+ ) {
23
+
24
+ Alert(
25
+ modifier = Modifier
26
+ .padding(top = 20.dp, start = 20.dp, end = 15.dp),
27
+ isVisible = isRemoveDoorbellAlertVisible,
28
+ onDismiss = onDismiss
29
+ ) {
30
+
31
+ Label(
32
+ modifier = Modifier
33
+ .padding(bottom = 5.dp),
34
+ title = strings(id = R.string.removeDoorbell),
35
+ bold = true,
36
+ xl20 = true,
37
+ black = true
38
+ )
39
+
40
+ Label(
41
+ modifier = Modifier
42
+ .padding(vertical = 5.dp),
43
+ title = strings(id = R.string.removeDoorbellDescription),
44
+ medium = true,
45
+ l = true,
46
+ black = true,
47
+ maxLines = 6,
48
+ lineHeight = 18.sp
49
+ )
50
+
51
+ Row(
52
+ modifier = Modifier
53
+ .fillMaxWidth()
54
+ .padding(bottom = 5.dp),
55
+ horizontalArrangement = Arrangement.End
56
+ ) {
57
+ AnchorButton(
58
+ modifier = Modifier,
59
+ id = "RemoveDoorbell_No",
60
+ title = strings(id = R.string.no),
61
+ semiBold = true,
62
+ black = true,
63
+ m = true,
64
+ onClick = {
65
+ onDismiss()
66
+ }
67
+ )
68
+
69
+ AnchorButton(
70
+ modifier = Modifier,
71
+ id = "RemoveDoorbell_Remove",
72
+ title = strings(id = R.string.remove),
73
+ semiBold = true,
74
+ black = true,
75
+ m = true,
76
+ onClick = {
77
+ onRemove()
78
+ }
79
+ )
80
+ }
81
+ }
82
+ }
83
+
@@ -0,0 +1,71 @@
1
+ package com.rentlytuya.alerts
2
+
3
+ import androidx.compose.foundation.layout.Arrangement
4
+ import androidx.compose.foundation.layout.Row
5
+ import androidx.compose.foundation.layout.fillMaxWidth
6
+ import androidx.compose.foundation.layout.padding
7
+ import androidx.compose.runtime.Composable
8
+ import androidx.compose.ui.Modifier
9
+ import androidx.compose.ui.unit.dp
10
+ import androidx.compose.ui.unit.sp
11
+ import com.rentlytuya.R
12
+ import com.rentlytuya.components.Alert
13
+ import com.rentlytuya.components.AnchorButton
14
+ import com.rentlytuya.components.Label
15
+ import com.rentlytuya.util.Util.strings
16
+
17
+ @Composable
18
+ fun RemoveDoorbellFailureAlert(
19
+ isRemoveDoorbellFailureAlertVisible: Boolean,
20
+ onDismiss: () -> Unit,
21
+ onOK: () -> Unit
22
+ ) {
23
+
24
+ Alert(
25
+ modifier = Modifier
26
+ .padding(top = 20.dp, start = 20.dp, end = 15.dp),
27
+ isVisible = isRemoveDoorbellFailureAlertVisible,
28
+ onDismiss = onDismiss
29
+ ) {
30
+
31
+ Label(
32
+ modifier = Modifier
33
+ .padding(bottom = 5.dp),
34
+ title = strings(id = R.string.error),
35
+ bold = true,
36
+ xl20 = true,
37
+ black = true
38
+ )
39
+
40
+ Label(
41
+ modifier = Modifier
42
+ .padding(vertical = 5.dp),
43
+ title = strings(id = R.string.errorInRemovingDoorbellCamera),
44
+ medium = true,
45
+ l = true,
46
+ black = true,
47
+ maxLines = 6,
48
+ lineHeight = 18.sp
49
+ )
50
+
51
+ Row(
52
+ modifier = Modifier
53
+ .fillMaxWidth()
54
+ .padding(bottom = 5.dp),
55
+ horizontalArrangement = Arrangement.End
56
+ ) {
57
+ AnchorButton(
58
+ modifier = Modifier,
59
+ id = "RemoveDoorbellFailed_OK",
60
+ title = strings(id = R.string.ok),
61
+ semiBold = true,
62
+ black = true,
63
+ m = true,
64
+ onClick = {
65
+ onOK()
66
+ }
67
+ )
68
+ }
69
+ }
70
+ }
71
+
@@ -0,0 +1,83 @@
1
+ package com.rentlytuya.alerts
2
+
3
+ import androidx.compose.foundation.layout.Arrangement
4
+ import androidx.compose.foundation.layout.Row
5
+ import androidx.compose.foundation.layout.fillMaxWidth
6
+ import androidx.compose.foundation.layout.padding
7
+ import androidx.compose.runtime.Composable
8
+ import androidx.compose.ui.Modifier
9
+ import androidx.compose.ui.unit.dp
10
+ import androidx.compose.ui.unit.sp
11
+ import com.rentlytuya.R
12
+ import com.rentlytuya.components.Alert
13
+ import com.rentlytuya.components.AnchorButton
14
+ import com.rentlytuya.components.Label
15
+ import com.rentlytuya.util.Util.strings
16
+
17
+ @Composable
18
+ fun ResetWifiAlert(
19
+ isResetWifiAlertVisible: Boolean,
20
+ onDismiss: () -> Unit,
21
+ onReset: () -> Unit
22
+ ) {
23
+
24
+ Alert(
25
+ modifier = Modifier
26
+ .padding(top = 20.dp, start = 20.dp, end = 15.dp),
27
+ isVisible = isResetWifiAlertVisible,
28
+ onDismiss = onDismiss
29
+ ) {
30
+
31
+ Label(
32
+ modifier = Modifier
33
+ .padding(bottom = 5.dp),
34
+ title = strings(id = R.string.resetWiFi),
35
+ bold = true,
36
+ xl20 = true,
37
+ black = true
38
+ )
39
+
40
+ Label(
41
+ modifier = Modifier
42
+ .padding(vertical = 5.dp),
43
+ title = strings(id = R.string.resetWiFiDescription),
44
+ medium = true,
45
+ l = true,
46
+ black = true,
47
+ maxLines = 6,
48
+ lineHeight = 18.sp
49
+ )
50
+
51
+ Row(
52
+ modifier = Modifier
53
+ .fillMaxWidth()
54
+ .padding(bottom = 5.dp),
55
+ horizontalArrangement = Arrangement.End
56
+ ) {
57
+ AnchorButton(
58
+ modifier = Modifier,
59
+ id = "ResetWiFi_Cancel",
60
+ title = strings(id = R.string.cancel).uppercase(),
61
+ semiBold = true,
62
+ black = true,
63
+ m = true,
64
+ onClick = {
65
+ onDismiss()
66
+ }
67
+ )
68
+
69
+ AnchorButton(
70
+ modifier = Modifier,
71
+ id = "ResetWiFi_Reset",
72
+ title = strings(id = R.string.resetWiFi).uppercase(),
73
+ semiBold = true,
74
+ black = true,
75
+ m = true,
76
+ onClick = {
77
+ onReset()
78
+ }
79
+ )
80
+ }
81
+ }
82
+ }
83
+
@@ -0,0 +1,74 @@
1
+ package com.rentlytuya.alerts
2
+
3
+ import androidx.compose.foundation.layout.Arrangement
4
+ import androidx.compose.foundation.layout.Column
5
+ import androidx.compose.foundation.layout.Row
6
+ import androidx.compose.foundation.layout.fillMaxWidth
7
+ import androidx.compose.foundation.layout.padding
8
+ import androidx.compose.runtime.Composable
9
+ import androidx.compose.ui.Modifier
10
+ import androidx.compose.ui.unit.dp
11
+ import androidx.compose.ui.unit.sp
12
+ import com.rentlytuya.R
13
+ import com.rentlytuya.components.Alert
14
+ import com.rentlytuya.components.AnchorButton
15
+ import com.rentlytuya.components.Label
16
+ import com.rentlytuya.util.Util.strings
17
+
18
+ @Composable
19
+ fun SuccessAlert(
20
+ title: String,
21
+ description: String,
22
+ isVisible: Boolean,
23
+ onDismiss: () -> Unit
24
+ ) {
25
+ Alert(
26
+ modifier = Modifier
27
+ .fillMaxWidth(0.95f)
28
+ .padding(top = 20.dp, start = 25.dp, end = 25.dp),
29
+ isVisible = isVisible,
30
+ onDismiss = onDismiss
31
+ ) {
32
+ Column(
33
+ modifier = Modifier
34
+ ) {
35
+ Label(
36
+ modifier = Modifier
37
+ .padding(bottom = 10.dp),
38
+ title = title,
39
+ bold = true,
40
+ xl20 = true,
41
+ black = true,
42
+ )
43
+
44
+ Label(
45
+ modifier = Modifier
46
+ .padding(bottom = 10.dp),
47
+ title = description,
48
+ medium = true,
49
+ l = true,
50
+ black = true,
51
+ maxLines = 3,
52
+ lineHeight = 20.sp,
53
+ )
54
+
55
+ Row(
56
+ modifier = Modifier
57
+ .fillMaxWidth()
58
+ .padding(bottom = 5.dp),
59
+ horizontalArrangement = Arrangement.End
60
+ ) {
61
+ AnchorButton(
62
+ modifier = Modifier
63
+ .padding(5.dp),
64
+ id = "SuccessAlert_OK",
65
+ title = strings(id = R.string.ok),
66
+ black = true,
67
+ semiBold = true
68
+ ) {
69
+ onDismiss()
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,47 @@
1
+ package com.rentlytuya.components
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.layout.Column
5
+ import androidx.compose.foundation.layout.fillMaxWidth
6
+ import androidx.compose.foundation.shape.RoundedCornerShape
7
+ import androidx.compose.runtime.Composable
8
+ import androidx.compose.ui.Modifier
9
+ import androidx.compose.ui.draw.clip
10
+ import androidx.compose.ui.platform.LocalConfiguration
11
+ import androidx.compose.ui.unit.dp
12
+ import androidx.compose.ui.window.Dialog
13
+ import androidx.compose.ui.window.DialogProperties
14
+ import com.rentlytuya.ui.theme.LocalColor
15
+ import com.rentlytuya.util.Util.isLandscape
16
+
17
+ @Composable
18
+ fun Alert(
19
+ modifier: Modifier = Modifier,
20
+ isVisible: Boolean,
21
+ onDismiss: () -> Unit,
22
+ content: @Composable () -> Unit
23
+ ) {
24
+
25
+ val configuration = LocalConfiguration.current
26
+
27
+ if (isVisible) {
28
+ Dialog(
29
+ onDismissRequest = onDismiss,
30
+ properties = DialogProperties(
31
+ usePlatformDefaultWidth = false
32
+ )
33
+ ) {
34
+ Column(
35
+ modifier = Modifier
36
+ .fillMaxWidth(
37
+ if (!isLandscape(configuration)) 0.9f else 0.5f
38
+ )
39
+ .clip(RoundedCornerShape(16.dp))
40
+ .background(LocalColor.Monochrome.White)
41
+ .then(modifier),
42
+ ) {
43
+ content()
44
+ }
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,125 @@
1
+ package com.rentlytuya.components
2
+
3
+ import androidx.compose.material3.Text
4
+ import androidx.compose.material3.TextButton
5
+ import androidx.compose.runtime.Composable
6
+ import androidx.compose.runtime.CompositionLocalProvider
7
+ import androidx.compose.ui.Modifier
8
+ import androidx.compose.ui.platform.LocalDensity
9
+ import androidx.compose.ui.semantics.contentDescription
10
+ import androidx.compose.ui.semantics.semantics
11
+ import androidx.compose.ui.text.style.TextAlign
12
+ import androidx.compose.ui.text.style.TextDecoration
13
+ import androidx.compose.ui.text.style.TextOverflow
14
+ import androidx.compose.ui.unit.Density
15
+ import com.rentlytuya.ui.theme.LocalColor
16
+ import com.rentlytuya.ui.theme.LocalFont
17
+ import com.rentlytuya.util.Heap
18
+
19
+ @Composable
20
+ fun AnchorButton(
21
+ modifier: Modifier = Modifier,
22
+ id: String,
23
+ textModifier: Modifier = Modifier,
24
+ title: String,
25
+ // Font Size
26
+ xs: Boolean = false,
27
+ s: Boolean = false,
28
+ m: Boolean = false,
29
+ l: Boolean = false,
30
+ xl18: Boolean = false,
31
+ xl20: Boolean = false,
32
+ xl22: Boolean = false,
33
+ xl24: Boolean = false,
34
+ // Color
35
+ primary: Boolean = false,
36
+ black: Boolean = false,
37
+ // Font Weight
38
+ light: Boolean = false,
39
+ medium: Boolean = false,
40
+ semiBold: Boolean = false,
41
+ bold: Boolean = false,
42
+ // Text Alignment
43
+ left: Boolean = false,
44
+ right: Boolean = false,
45
+ center: Boolean = false,
46
+ // Text Decoration
47
+ underLine: Boolean = false,
48
+ strikeThrough: Boolean = false,
49
+ disabled: Boolean = false,
50
+ onClick: () -> Unit = {}
51
+ ) {
52
+
53
+ val textColor = when {
54
+ primary -> LocalColor.Primary.Light
55
+ black -> LocalColor.Monochrome.Black
56
+ else -> LocalColor.Primary.Light
57
+ }
58
+
59
+ val textAlign = when {
60
+ left -> TextAlign.Left
61
+ right -> TextAlign.Right
62
+ center -> TextAlign.Center
63
+ else -> TextAlign.Start
64
+ }
65
+
66
+ val textDecoration = when {
67
+ underLine -> TextDecoration.Underline
68
+ strikeThrough -> TextDecoration.LineThrough
69
+ else -> TextDecoration.None
70
+ }
71
+
72
+ val fontFamily = when {
73
+ light -> LocalFont.FontFamily.light
74
+ medium -> LocalFont.FontFamily.medium
75
+ semiBold -> LocalFont.FontFamily.semiBold
76
+ bold -> LocalFont.FontFamily.bold
77
+ else -> LocalFont.FontFamily.regular
78
+ }
79
+
80
+ val fontSize = when {
81
+ xs -> LocalFont.FontSize.XS
82
+ s -> LocalFont.FontSize.S
83
+ m -> LocalFont.FontSize.M
84
+ l -> LocalFont.FontSize.L
85
+ xl18 -> LocalFont.FontSize.XL18
86
+ xl20 -> LocalFont.FontSize.XL20
87
+ xl22 -> LocalFont.FontSize.XL22
88
+ xl24 -> LocalFont.FontSize.XL24
89
+ else -> LocalFont.FontSize.L
90
+ }
91
+
92
+
93
+ TextButton(
94
+ modifier = Modifier
95
+ .semantics {
96
+ contentDescription = id
97
+ }
98
+ .then(modifier),
99
+ onClick = {
100
+ Heap.trackEvent(eventName = id)
101
+ onClick()
102
+ },
103
+ enabled = !disabled,
104
+ ) {
105
+ CompositionLocalProvider(
106
+ LocalDensity provides Density(
107
+ density = LocalDensity.current.density,
108
+ fontScale = 1f
109
+ )
110
+ ) {
111
+ Text(
112
+ text = title,
113
+ fontSize = fontSize,
114
+ fontFamily = fontFamily,
115
+ textAlign = textAlign,
116
+ textDecoration = textDecoration,
117
+ color = textColor,
118
+ maxLines = 1,
119
+ overflow = TextOverflow.Visible,
120
+ modifier = Modifier
121
+ .then(textModifier)
122
+ )
123
+ }
124
+ }
125
+ }