LocalData.kt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.rdiot.yx485.base
  2. import androidx.lifecycle.MutableLiveData
  3. import com.drake.serialize.serialize.serialLazy
  4. import com.drake.serialize.serialize.serialLiveData
  5. import com.rdiot.yx485.BuildConfig
  6. import com.rdiot.yx485.bean.AppVersionData
  7. import com.rdiot.yx485.bean.DeviceTypeData
  8. import com.rdiot.yx485.bean.FamilyData
  9. import com.rdiot.yx485.bean.LoginData
  10. import com.rdiot.yx485.bean.UserData
  11. import com.rdiot.yx485.bean.WeatherData
  12. import com.rdiot.yx485.bean.WelcomeData
  13. import com.rdiot.yx485.bean.YXBean
  14. import com.rdiot.yx485.net.Api
  15. import com.rdiot.yx485.ui.login.model.LoginRecord
  16. /**
  17. * 本地数据
  18. * @author mR2hao
  19. * @date 2022/11/17
  20. */
  21. object LocalData {
  22. /** Api地址 */
  23. var apiHost: ApiHost by serialLazy(if (BuildConfig.DEBUG) ApiHost.TEST_HOST else ApiHost.PRODUCE_HOST)
  24. /** 验证码倒计时剩余 */
  25. var lastGetCodeTime: Long by serialLazy(0)
  26. /** 登录数据 */
  27. var loginData: LoginData? by serialLazy()
  28. /** 用户数据 */
  29. val userData by serialLiveData(UserData())
  30. /** 用户家庭数据 selFamilyId为空时,获取默认家庭 */
  31. val familyData by serialLiveData(FamilyData())
  32. /** 天气数据 selFamilyId为空时,获取默认家庭*/
  33. val weatherData by serialLiveData(WeatherData())
  34. /** 欢迎页数据*/
  35. val welcomeData by serialLiveData(WelcomeData())
  36. /** 所有家庭简单信息 */
  37. val allFamily by serialLiveData(mutableListOf<FamilyData>())
  38. /** 用户选择显示的家ID */
  39. var selFamilyId: MutableLiveData<String?> = MutableLiveData(null)
  40. /** 最后刷新时间 */
  41. var lastRefreshTime: Long = 0
  42. /** 最后一次登录类型 */
  43. var lastLoginRecord: LoginRecord? by serialLazy()
  44. /** 第一次安装app */
  45. var firstTimeInstallApp: Boolean by serialLazy(true)
  46. /** 移动端请求参数 */
  47. val yxBean: YXBean = YXBean()
  48. /** app版本信息 */
  49. val appVersionData: MutableLiveData<AppVersionData?> = MutableLiveData(null)
  50. /** 本日提醒更新APP用户(不判断年月,只判断日期,日期非本日则弹窗提醒) */
  51. var noReminderToday: Int by serialLazy(0)
  52. /** 测试 让Token失效 */
  53. var makeTokenErr by serialLazy(false)
  54. /** 设备类型 */
  55. val deviceTypeData by serialLiveData(mutableListOf<DeviceTypeData>())
  56. var firstBle: Int = 1
  57. var firstCamera: Boolean by serialLazy(true)
  58. /** 登出 */
  59. fun logout() {
  60. lastGetCodeTime = 0
  61. loginData = null
  62. userData.value = null
  63. familyData.value = null
  64. weatherData.value = null
  65. selFamilyId.value = null
  66. allFamily.value = null
  67. }
  68. }
  69. enum class ApiHost(
  70. val hostName: String,
  71. val host: String,
  72. val avatarHost: String
  73. ) {
  74. /** 生产环境 */
  75. PRODUCE_HOST("生产环境", Api.HOST, Api.AVATAR_HOST),
  76. /** 测试环境 */
  77. TEST_HOST("测试环境", Api.TEST_HOST, Api.TEST_AVATAR_HOST)
  78. }