AuthViewModel: Drop dependency upon kovenant

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-20 18:14:16 +05:30
parent 6892be4821
commit aeb2a136ec

View File

@@ -46,7 +46,6 @@ import com.aurora.store.viewmodel.BaseAndroidViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
import nl.komponents.kovenant.task
import java.net.ConnectException import java.net.ConnectException
import java.net.UnknownHostException import java.net.UnknownHostException
import java.util.* import java.util.*
@@ -78,17 +77,18 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application
fun buildGoogleAuthData(email: String, aasToken: String) { fun buildGoogleAuthData(email: String, aasToken: String) {
liveData.postValue(AuthState.Fetching) liveData.postValue(AuthState.Fetching)
viewModelScope.launch(Dispatchers.IO) {
task { try {
var properties = NativeDeviceInfoProvider(getApplication()).getNativeDeviceProperties() var properties = NativeDeviceInfoProvider(getApplication()).getNativeDeviceProperties()
if (spoofProvider.isDeviceSpoofEnabled()) if (spoofProvider.isDeviceSpoofEnabled())
properties = spoofProvider.getSpoofDeviceProperties() properties = spoofProvider.getSpoofDeviceProperties()
return@task AuthHelper.build(email, aasToken, properties) val authData = AuthHelper.build(email, aasToken, properties)
} success { verifyAndSaveAuth(authData, AccountType.GOOGLE)
verifyAndSaveAuth(it, AccountType.GOOGLE) } catch (exception: Exception) {
} fail {
updateStatus("Failed to generate Session") updateStatus("Failed to generate Session")
Log.e(TAG, "Failed to generate Session", exception)
}
} }
} }
@@ -107,8 +107,8 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application
private fun buildSecureAnonymousAuthData() { private fun buildSecureAnonymousAuthData() {
liveData.postValue(AuthState.Fetching) liveData.postValue(AuthState.Fetching)
viewModelScope.launch(Dispatchers.IO) {
task { try {
var properties = NativeDeviceInfoProvider(getApplication()) var properties = NativeDeviceInfoProvider(getApplication())
.getNativeDeviceProperties() .getNativeDeviceProperties()
@@ -123,33 +123,34 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application
) )
if (playResponse.isSuccessful) { if (playResponse.isSuccessful) {
return@task gson.fromJson( val authData = gson.fromJson(
String(playResponse.responseBytes), String(playResponse.responseBytes),
AuthData::class.java AuthData::class.java
) )
//Set AuthData as anonymous
authData.isAnonymous = true
verifyAndSaveAuth(authData, AccountType.ANONYMOUS)
} else { } else {
val ctx = getApplication() as Context
when (playResponse.code) { when (playResponse.code) {
404 -> throw Exception("Server unreachable") 404 -> throw Exception("Server unreachable")
429 -> throw Exception("Oops, You are rate limited") 429 -> throw Exception("Oops, You are rate limited")
503 -> throw Exception( 503 -> throw Exception(ctx.getString(R.string.server_maintenance))
(getApplication() as Context).getString(R.string.server_maintenance)
)
else -> throw Exception(playResponse.errorString) else -> throw Exception(playResponse.errorString)
} }
} }
} success { } catch (exception: Exception) {
//Set AuthData as anonymous updateStatus(exception.message.toString())
it.isAnonymous = true Log.e(TAG, "Failed to generate Session", exception)
verifyAndSaveAuth(it, AccountType.ANONYMOUS) }
} fail {
updateStatus(it.message.toString())
} }
} }
fun buildInSecureAnonymousAuthData() { fun buildInSecureAnonymousAuthData() {
liveData.postValue(AuthState.Fetching) liveData.postValue(AuthState.Fetching)
viewModelScope.launch(Dispatchers.IO) {
task { try {
var properties = NativeDeviceInfoProvider(getApplication()) var properties = NativeDeviceInfoProvider(getApplication())
.getNativeDeviceProperties() .getNativeDeviceProperties()
@@ -176,24 +177,27 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application
503 -> throw Exception( 503 -> throw Exception(
(getApplication() as Context).getString(R.string.server_maintenance) (getApplication() as Context).getString(R.string.server_maintenance)
) )
else -> throw Exception(playResponse.errorString) else -> throw Exception(playResponse.errorString)
} }
} }
val deviceInfoProvider = DeviceInfoProvider(properties, Locale.getDefault().toString()) val deviceInfoProvider =
DeviceInfoProvider(properties, Locale.getDefault().toString())
AuthHelper.buildInsecure( val authData = AuthHelper.buildInsecure(
insecureAuth.email, insecureAuth.email,
insecureAuth.auth, insecureAuth.auth,
Locale.getDefault(), Locale.getDefault(),
deviceInfoProvider deviceInfoProvider
) )
} success {
//Set AuthData as anonymous //Set AuthData as anonymous
it.isAnonymous = true authData.isAnonymous = true
verifyAndSaveAuth(it, AccountType.ANONYMOUS) verifyAndSaveAuth(authData, AccountType.ANONYMOUS)
} fail { } catch (exception: Exception) {
updateStatus(it.message.toString()) updateStatus(exception.message.toString())
Log.e(TAG, "Failed to generate Session", exception)
}
} }
} }