package com.vpn.fastestvpnservice.viewmodels import android.util.Log import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.vpn.fastestvpnservice.beans.DataResponse import com.vpn.fastestvpnservice.beans.UserResponse import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling import com.vpn.fastestvpnservice.retrofit.WebServiceFactory import retrofit2.Call import java.util.Objects class LoginViewModel: ViewModel() { var mutableLiveDataUserResponse = MutableLiveData>() var liveDataUserResponse: LiveData> = mutableLiveDataUserResponse var mutableLiveDataUserResponseErrorStatus = MutableLiveData() private var mutableLiveDataLoginStatus = MutableLiveData(false) var liveDataLoginStatus: LiveData = mutableLiveDataLoginStatus var mutableLiveDataFcm = MutableLiveData>() var liveDataFcm: LiveData> = mutableLiveDataFcm fun loginRequest( email: String, password: String, platform: String, version: String, app_version: String ) { WebServiceFactory.getInstance().login( email, password, platform, version, app_version).enqueue( RetrofitNetworkHandling(object : RetrofitNetworkHandling.ResponseCallback { override fun onSuccess(call: Call?, response: Any?) { try { Log.d("test_api_response","Response login = " + response.toString()) val gson = Gson() val jsonString = gson.toJson(response) val type = object : TypeToken>() {}.type val data = gson.fromJson>(jsonString, type) Log.d("test_api_response", "login = ${data.status} ${data.message}") data.let { if (it?.status == true) { mutableLiveDataUserResponse.value = data } else { mutableLiveDataUserResponse.value = data } } } catch (ex: Exception) { Log.d("test_api_response", "catch") } } override fun onFail(call: Call?, response: Any?) { Log.d("test_api_response","Response onFail:") mutableLiveDataUserResponseErrorStatus.value = true mutableLiveDataLoginStatus.value = false } override fun onError(call: Call?, response: Any?) { Log.d("test_api_response","Response onError:") mutableLiveDataUserResponseErrorStatus.value = true mutableLiveDataLoginStatus.value = false } }) ) } fun setLoginStatus(status: Boolean) { mutableLiveDataLoginStatus.value = status } fun sendFcmToken(token: String) { WebServiceFactory.getInstance() .sendFcmToken("android", if (token.isEmpty()) "test_123" else token).enqueue( RetrofitNetworkHandling(object : RetrofitNetworkHandling.ResponseCallback { override fun onSuccess(call: Call?, response: Any?) { try { val gson = Gson() val jsonString = gson.toJson(response) val type = object : TypeToken>() {}.type val data = gson.fromJson>(jsonString, type) mutableLiveDataFcm.value = data Log.d("Refreshed token: ","sendFcmToken Response: ${data.message}") } catch (ex: Exception) { } } override fun onFail(call: Call?, response: Any?) { } override fun onError(call: Call?, response: Any?) { } }) ) } }