LoginViewModel.kt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.vpn.fastestvpnservice.viewmodels
  2. import android.util.Log
  3. import androidx.compose.runtime.mutableStateOf
  4. import androidx.lifecycle.LiveData
  5. import androidx.lifecycle.MutableLiveData
  6. import androidx.lifecycle.ViewModel
  7. import com.google.gson.Gson
  8. import com.google.gson.reflect.TypeToken
  9. import com.vpn.fastestvpnservice.beans.DataResponse
  10. import com.vpn.fastestvpnservice.beans.UserResponse
  11. import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling
  12. import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
  13. import retrofit2.Call
  14. import java.util.Objects
  15. class LoginViewModel: ViewModel() {
  16. var mutableLiveDataUserResponse = MutableLiveData<DataResponse<UserResponse>>()
  17. var liveDataUserResponse: LiveData<DataResponse<UserResponse>> = mutableLiveDataUserResponse
  18. var mutableLiveDataUserResponseErrorStatus = MutableLiveData<Boolean>()
  19. private var mutableLiveDataLoginStatus = MutableLiveData<Boolean>(false)
  20. var liveDataLoginStatus: LiveData<Boolean> = mutableLiveDataLoginStatus
  21. var mutableLiveDataFcm = MutableLiveData<DataResponse<Objects>>()
  22. var liveDataFcm: LiveData<DataResponse<Objects>> = mutableLiveDataFcm
  23. fun loginRequest(
  24. email: String,
  25. password: String,
  26. platform: String,
  27. version: String,
  28. app_version: String
  29. ) {
  30. WebServiceFactory.getInstance().login(
  31. email, password, platform, version, app_version).enqueue(
  32. RetrofitNetworkHandling<Any?>(object :
  33. RetrofitNetworkHandling.ResponseCallback<Any?> {
  34. override fun onSuccess(call: Call<Any?>?, response: Any?) {
  35. try {
  36. Log.d("test_api_response","Response login = " + response.toString())
  37. val gson = Gson()
  38. val jsonString = gson.toJson(response)
  39. val type = object : TypeToken<DataResponse<UserResponse>>() {}.type
  40. val data = gson.fromJson<DataResponse<UserResponse>>(jsonString, type)
  41. Log.d("test_api_response", "login = ${data.status} ${data.message}")
  42. data.let {
  43. if (it?.status == true) {
  44. mutableLiveDataUserResponse.value = data
  45. } else {
  46. mutableLiveDataUserResponse.value = data
  47. }
  48. }
  49. } catch (ex: Exception) {
  50. Log.d("test_api_response", "catch")
  51. }
  52. }
  53. override fun onFail(call: Call<Any?>?, response: Any?) {
  54. Log.d("test_api_response","Response onFail:")
  55. mutableLiveDataUserResponseErrorStatus.value = true
  56. mutableLiveDataLoginStatus.value = false
  57. }
  58. override fun onError(call: Call<Any?>?, response: Any?) {
  59. Log.d("test_api_response","Response onError:")
  60. mutableLiveDataUserResponseErrorStatus.value = true
  61. mutableLiveDataLoginStatus.value = false
  62. }
  63. })
  64. )
  65. }
  66. fun setLoginStatus(status: Boolean) {
  67. mutableLiveDataLoginStatus.value = status
  68. }
  69. fun sendFcmToken(token: String) {
  70. WebServiceFactory.getInstance()
  71. .sendFcmToken("android", if (token.isEmpty()) "test_123" else token).enqueue(
  72. RetrofitNetworkHandling<Any>(object :
  73. RetrofitNetworkHandling.ResponseCallback<Any> {
  74. override fun onSuccess(call: Call<Any>?, response: Any?) {
  75. try {
  76. val gson = Gson()
  77. val jsonString = gson.toJson(response)
  78. val type = object : TypeToken<DataResponse<Objects>>() {}.type
  79. val data = gson.fromJson<DataResponse<Objects>>(jsonString, type)
  80. mutableLiveDataFcm.value = data
  81. Log.d("Refreshed token: ","sendFcmToken Response: ${data.message}")
  82. } catch (ex: Exception) {
  83. }
  84. }
  85. override fun onFail(call: Call<Any>?, response: Any?) {
  86. }
  87. override fun onError(call: Call<Any>?, response: Any?) {
  88. }
  89. })
  90. )
  91. }
  92. }