From a9d166740529bef3f33f8e68d67e297bbf0ad0e7 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 19 Jun 2024 12:49:34 +0530 Subject: [PATCH] AuthViewModel: Use auth validation logic from AuthProvider Signed-off-by: Aayush Gupta --- .../store/data/providers/AuthProvider.kt | 2 +- .../aurora/store/data/work/UpdateWorker.kt | 2 +- .../store/viewmodel/auth/AuthViewModel.kt | 30 ++++--------------- 3 files changed, 7 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/providers/AuthProvider.kt b/app/src/main/java/com/aurora/store/data/providers/AuthProvider.kt index 0307e1e8a..eda6a5fce 100644 --- a/app/src/main/java/com/aurora/store/data/providers/AuthProvider.kt +++ b/app/src/main/java/com/aurora/store/data/providers/AuthProvider.kt @@ -49,7 +49,7 @@ class AuthProvider @Inject constructor( return AccountType.valueOf(name) == AccountType.ANONYMOUS } - suspend fun isAuthDataValid(): Boolean { + suspend fun isSavedAuthDataValid(): Boolean { return withContext(Dispatchers.IO) { try { AuthValidator(getSavedAuthData()) diff --git a/app/src/main/java/com/aurora/store/data/work/UpdateWorker.kt b/app/src/main/java/com/aurora/store/data/work/UpdateWorker.kt index 4165eedfb..33a9ca406 100644 --- a/app/src/main/java/com/aurora/store/data/work/UpdateWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/UpdateWorker.kt @@ -97,7 +97,7 @@ class UpdateWorker @AssistedInject constructor( } withContext(Dispatchers.IO) { - if (!authProvider.isAuthDataValid()) { + if (!authProvider.isSavedAuthDataValid()) { Log.i(TAG, "AuthData is not valid, retrying later!") return@withContext Result.retry() } 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 e93d420e4..2b6fdca62 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 @@ -30,7 +30,6 @@ import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.data.providers.DeviceInfoProvider import com.aurora.gplayapi.helpers.AuthHelper -import com.aurora.gplayapi.helpers.AuthValidator import com.aurora.store.AccountType import com.aurora.store.R import com.aurora.store.data.AuthState @@ -38,6 +37,7 @@ 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.AuthProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.SpoofProvider import com.aurora.store.util.AC2DMTask @@ -60,7 +60,8 @@ import javax.inject.Inject @SuppressLint("StaticFieldLeak") // false positive, see https://github.com/google/dagger/issues/3253 class AuthViewModel @Inject constructor( @ApplicationContext private val context: Context, - private val gson: Gson + private val gson: Gson, + private val authProvider: AuthProvider ) : ViewModel() { private val TAG = AuthViewModel::class.java.simpleName @@ -106,7 +107,7 @@ class AuthViewModel @Inject constructor( } } - fun buildAnonymousAuthData() { + private fun buildAnonymousAuthData() { if (Preferences.getBoolean(context, Preferences.PREFERENCE_INSECURE_ANONYMOUS)) { buildInSecureAnonymousAuthData() } else { @@ -220,10 +221,7 @@ class AuthViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { supervisorScope { try { - //Load & validate saved AuthData - val savedAuthData = getSavedAuthData() - - if (isValid(savedAuthData)) { + if (authProvider.isSavedAuthDataValid()) { liveData.postValue(AuthState.Valid) } else { //Generate and validate new auth @@ -263,24 +261,6 @@ class AuthViewModel @Inject constructor( } } - private fun getSavedAuthData(): AuthData { - val rawAuth: String = Preferences.getString(context, PREFERENCE_AUTH_DATA) - return if (rawAuth.isNotBlank()) - gson.fromJson(rawAuth, AuthData::class.java) - else - AuthData("", "") - } - - private fun isValid(authData: AuthData): Boolean { - return try { - AuthValidator(authData) - .using(HttpClient.getPreferredClient(context)) - .isValid() - } catch (e: Exception) { - false - } - } - private fun verifyAndSaveAuth(authData: AuthData, type: AccountType) { liveData.postValue(AuthState.Verifying)