GoogleFragment: Drop dependency upon kovenant

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-19 20:44:33 +05:30
parent 71aa57403f
commit 8ee0969914
2 changed files with 42 additions and 39 deletions

View File

@@ -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))
}
}
}

View File

@@ -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<AuthState> = 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 {