CommonUtils.kt 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package com.develop.common.utils
  2. import android.os.Bundle
  3. import android.util.Log
  4. import com.blankj.utilcode.util.ToastUtils
  5. import com.develop.base.ext.appGlobalScope
  6. import com.develop.base.ext.globalApp
  7. import com.develop.base.ext.navigateTo
  8. import com.develop.base.util.AppActivityManager
  9. import com.develop.base.util.TopResumedAtyHolder
  10. import com.develop.base.util.TuyaEventEntity
  11. import com.develop.common.R
  12. import com.develop.common.data_repo.FoodDataProvider
  13. import com.develop.common.food_sdk.FloatWindowManager
  14. import com.develop.common.router.Screens
  15. import com.develop.common.tag.MODE_TYPE
  16. import com.develop.common.tag.NUMBER_TAG
  17. import com.develop.common.tag.SOURCE_TAG
  18. import com.google.gson.Gson
  19. import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevModes
  20. import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
  21. import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
  22. import com.kuyuntech.cofarcooking.device.sdk.util.core.CofarSDK
  23. import kotlinx.coroutines.Dispatchers
  24. import kotlinx.coroutines.launch
  25. import kotlinx.coroutines.withContext
  26. import org.greenrobot.eventbus.EventBus
  27. object CommonUtils {
  28. var gson = Gson()
  29. fun navigateToRemoteRecipe(number: String) {
  30. if (CofarSDK.devInfo().runningStatus != DevStatus.STOP) {
  31. EventBus.getDefault().post(TuyaEventEntity(recipeNumber = number, isType = 1))
  32. return
  33. }
  34. //需要关闭的页面
  35. for (activity in AppActivityManager.getInstance().activityList()) {
  36. if (activity.localClassName.contains("CookDetailActivity")
  37. || activity.localClassName.contains("CookStepActivity")
  38. || activity.localClassName.contains("ModesDetailActivity")
  39. ) {
  40. activity.finish()
  41. }
  42. }
  43. FoodDataProvider.getDatabase().recipeDao().apply {
  44. var recipeNumber = number
  45. if (recipeNumber.contains("@")) {
  46. var (numbers, language) = recipeNumber.split("@")
  47. recipeNumber = numbers
  48. }
  49. val recipeBean = queryRecipe(recipeNumber)
  50. if (recipeBean != null) {
  51. TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
  52. withString(
  53. SOURCE_TAG, "local"
  54. )
  55. withString(NUMBER_TAG, number)
  56. }
  57. } else {
  58. TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_DETAIL) {
  59. withString(
  60. SOURCE_TAG, "remote"
  61. )
  62. withString(NUMBER_TAG, number)
  63. }
  64. }
  65. }
  66. }
  67. fun navigateToAdaptedCooking() {
  68. //判断设备是否正在运行,而还判断是否有挂起程序,挂起程序是否自动程序且还要是diy模式才可以重新进入ModeDetail页面
  69. if (CofarSDK.devInfo().runningStatus != DevStatus.STOP && !FloatWindowManager.isModeDiyShow()) {
  70. EventBus.getDefault().post(TuyaEventEntity(recipeNumber = "", isType = 0))
  71. return
  72. }
  73. //当时测试有个BUG,料理机点击diy以后,手机没识别,然后手机点击diy模式,会导致程序崩溃,具体日志没看到什么东西,估在这多一个判断
  74. //当前模式是diy,且当前页面是ModesDetailActivity的时候,return方法
  75. if ((CofarSDK.devInfo().runningInstId == "ADAPTED_COOKING" || CofarSDK.devInfo().runningInstId == "AF_DIY")
  76. && AppActivityManager.getInstance().topActivity.localClassName.contains("ModesDetailActivity")
  77. ) {
  78. return
  79. }
  80. //需要关闭的页面
  81. for (activity in AppActivityManager.getInstance().activityList()) {
  82. if (activity.localClassName.contains("CookDetailActivity") || activity.localClassName.contains(
  83. "CookStepActivity"
  84. ) || activity.localClassName.contains("ModesDetailActivity")
  85. ) {
  86. if (devReady()) {
  87. return
  88. } else {
  89. activity.finish()
  90. }
  91. }
  92. }
  93. if (DevModes.SOUP == CofarSDK.devInfo().devMode) {
  94. val bundle = Bundle()
  95. bundle.putString(MODE_TYPE, WorkModes.ADAPTED_COOKING)
  96. bundle.putString("OP_MODE", "APP")
  97. TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_MODES) {
  98. with(bundle)
  99. }
  100. } else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode) {
  101. val bundle = Bundle()
  102. bundle.putString(MODE_TYPE, WorkModes.AF_DIY)
  103. bundle.putString("OP_MODE", "APP")
  104. TopResumedAtyHolder.getCurrentActivity()?.navigateTo(Screens.Cook.COOK_MODES) {
  105. with(bundle)
  106. }
  107. }
  108. }
  109. fun devReady(): Boolean {
  110. if (DevModes.SOUP == CofarSDK.devInfo().devMode) {
  111. return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1 && CofarSDK.devInfo().mode.mode === WorkModes.ADAPTED_COOKING && !CofarSDK.devInfo().isWeightStatus
  112. } else if (DevModes.AIR_FRYER == CofarSDK.devInfo().devMode) {
  113. return TopResumedAtyHolder.getCurrentActivity()?.localClassName?.indexOf("ModesDetailActivity") != -1 && CofarSDK.devInfo().mode.mode === WorkModes.AF_DIY && !CofarSDK.devInfo().isWeightStatus
  114. }
  115. return false
  116. }
  117. fun <T> getTuyaBean(
  118. url: String,
  119. apiVersion: String,
  120. json: String,
  121. t: Class<T>,
  122. tuyaHttp: TuyaHttp<T>
  123. ) {
  124. appGlobalScope.launch(Dispatchers.IO) {
  125. // if (!TuyaUtilsSo.getInstance().tuyaInitSuccess || !TuyaUtilsSo.getInstance().tuyaNetwork){
  126. // ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
  127. // tuyaHttp.fail()
  128. // return@launch
  129. // }
  130. Log.e("tuya","url :"+url +" json:"+json)
  131. // var httpResponse = TuyaUtils.ioTSDKManager.httpRequest(url, apiVersion, json)
  132. // var str = ""
  133. // if (httpResponse.errorCode == 0) {
  134. // str = httpResponse.result
  135. // }else{
  136. // tuyaHttp.fail()
  137. // }
  138. var str = TuyaUtilsSo.getInstance().getPointer(url, apiVersion, json)
  139. if ("" == str || str ==null){
  140. ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
  141. tuyaHttp.fail()
  142. }
  143. withContext(Dispatchers.Main){
  144. tuyaHttp.bean(GsonUtils.GsonToBean(str,t))
  145. }
  146. }
  147. }
  148. fun getTuyaLike(
  149. url: String,
  150. apiVersion: String,
  151. json: String,
  152. tuyaHttp: TuyaBooleanHttp
  153. ) {
  154. appGlobalScope.launch(Dispatchers.IO) {
  155. if (!TuyaUtilsSo.getInstance().tuyaInitSuccess || !TuyaUtilsSo.getInstance().tuyaNetwork){
  156. ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
  157. tuyaHttp.fail()
  158. return@launch
  159. }
  160. var str = false
  161. var json = TuyaUtilsSo.getInstance().getPointer(url, apiVersion, json)
  162. str = !("" == json || json ==null)
  163. withContext(Dispatchers.Main){
  164. tuyaHttp.bean(str)
  165. }
  166. }
  167. }
  168. fun <T> getTuyaList(
  169. url: String,
  170. apiVersion: String,
  171. json: String,
  172. t: Class<T>,
  173. tuyaHttpList: TuyaHttpList<T>
  174. ) {
  175. appGlobalScope.launch(Dispatchers.IO) {
  176. // if (!TuyaUtilsSo.getInstance().tuyaInitSuccess || !TuyaUtilsSo.getInstance().tuyaNetwork ){
  177. // ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
  178. // tuyaHttpList.fail()
  179. // return@launch
  180. // }
  181. Log.e("tuya","url :"+url +" json:"+json)
  182. var str = TuyaUtilsSo.getInstance().getPointer(url, apiVersion, json)
  183. if ("" == str || str ==null){
  184. ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
  185. tuyaHttpList.fail()
  186. }
  187. withContext(Dispatchers.Main) {
  188. tuyaHttpList.bean(GsonUtils.jsonToList(str, t))
  189. }
  190. }
  191. }
  192. interface TuyaHttpList<T> {
  193. fun bean(t: MutableList<T>)
  194. fun fail()
  195. }
  196. interface TuyaHttp<T> {
  197. fun bean(t: T)
  198. fun fail()
  199. }
  200. interface TuyaBooleanHttp {
  201. fun bean(t: Boolean)
  202. fun fail()
  203. }
  204. }