diff --git a/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt b/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt index f5cc0ad8f..96fa595f3 100644 --- a/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt @@ -33,15 +33,11 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import com.aurora.Constants import com.aurora.store.R import com.aurora.store.data.event.BusEvent import com.aurora.store.databinding.FragmentGoogleBinding -import com.aurora.store.util.AC2DMTask import com.aurora.store.util.AC2DMUtil -import com.aurora.store.util.Preferences import com.aurora.store.viewmodel.auth.AuthViewModel -import nl.komponents.kovenant.task import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -99,7 +95,7 @@ class GoogleFragment : Fragment(R.layout.fragment_google) { val oauthToken = cookieMap[AUTH_TOKEN] evaluateJavascript(JS_SCRIPT) { val email = it.replace("\"".toRegex(), "") - buildAuthData(email, oauthToken) + viewModel.buildAuthData(view.context, email, oauthToken) } } } @@ -131,7 +127,16 @@ class GoogleFragment : Fragment(R.layout.fragment_google) { fun onEventReceived(event: BusEvent) { when (event) { is BusEvent.GoogleAAS -> { - if (event.success) viewModel.buildGoogleAuthData(event.email, event.aasToken) + if (event.success) { + viewModel.buildGoogleAuthData(event.email, event.aasToken) + } else { + Toast.makeText( + requireContext(), + getString(R.string.toast_aas_token_failed), + Toast.LENGTH_LONG + ).show() + } + when (args.destination) { R.id.splashFragment -> { findNavController().navigate( @@ -150,37 +155,4 @@ class GoogleFragment : Fragment(R.layout.fragment_google) { else -> {} } } - - private fun buildAuthData(email: String, oauthToken: String?) { - task { - AC2DMTask().getAC2DMResponse(email, oauthToken) - } success { - if (it.isNotEmpty()) { - val aasToken = it["Token"] - if (aasToken != null) { - Preferences.putString(requireContext(), Constants.ACCOUNT_EMAIL_PLAIN, email) - Preferences.putString(requireContext(), Constants.ACCOUNT_AAS_PLAIN, aasToken) - EventBus.getDefault().post(BusEvent.GoogleAAS(true, email, aasToken)) - } else { - Preferences.putString(requireContext(), Constants.ACCOUNT_EMAIL_PLAIN, "") - Preferences.putString(requireContext(), Constants.ACCOUNT_AAS_PLAIN, "") - EventBus.getDefault().post(BusEvent.GoogleAAS(false)) - } - } else { - Toast.makeText( - requireContext(), - getString(R.string.toast_aas_token_failed), - Toast.LENGTH_LONG - ).show() - EventBus.getDefault().post(BusEvent.GoogleAAS(false)) - } - } fail { - Toast.makeText( - requireContext(), - getString(R.string.toast_aas_token_failed), - Toast.LENGTH_LONG - ).show() - EventBus.getDefault().post(BusEvent.GoogleAAS(false)) - } - } } diff --git a/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt index 067b09d79..2e51a18d5 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt @@ -21,6 +21,7 @@ package com.aurora.store.viewmodel.auth import android.app.Application import android.content.Context +import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.aurora.Constants @@ -32,11 +33,13 @@ import com.aurora.store.AccountType import com.aurora.store.R import com.aurora.store.data.AuthState import com.aurora.store.data.RequestState +import com.aurora.store.data.event.BusEvent import com.aurora.store.data.model.InsecureAuth import com.aurora.store.data.network.HttpClient import com.aurora.store.data.providers.AccountProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.SpoofProvider +import com.aurora.store.util.AC2DMTask import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_AUTH_DATA import com.aurora.store.viewmodel.BaseAndroidViewModel @@ -47,9 +50,12 @@ import nl.komponents.kovenant.task import java.net.ConnectException import java.net.UnknownHostException import java.util.* +import org.greenrobot.eventbus.EventBus class AuthViewModel(application: Application) : BaseAndroidViewModel(application) { + private val TAG = AuthViewModel::class.java.simpleName + private val spoofProvider = SpoofProvider(getApplication()) val liveData: MutableLiveData = MutableLiveData() @@ -191,6 +197,31 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application } } + fun buildAuthData(context: Context, email: String, oauthToken: String?) { + viewModelScope.launch(Dispatchers.IO) { + try { + val response = AC2DMTask().getAC2DMResponse(email, oauthToken) + if (response.isNotEmpty()) { + val aasToken = response["Token"] + if (aasToken != null) { + Preferences.putString(context, Constants.ACCOUNT_EMAIL_PLAIN, email) + Preferences.putString(context, Constants.ACCOUNT_AAS_PLAIN, aasToken) + EventBus.getDefault().post(BusEvent.GoogleAAS(true, email, aasToken)) + } else { + Preferences.putString(context, Constants.ACCOUNT_EMAIL_PLAIN, "") + Preferences.putString(context, Constants.ACCOUNT_AAS_PLAIN, "") + EventBus.getDefault().post(BusEvent.GoogleAAS(false)) + } + } else { + EventBus.getDefault().post(BusEvent.GoogleAAS(false)) + } + } catch (exception: Exception) { + Log.e(TAG, "Failed to build AuthData", exception) + EventBus.getDefault().post(BusEvent.GoogleAAS(false)) + } + } + } + private fun buildSavedAuthData() { viewModelScope.launch(Dispatchers.IO) { supervisorScope {