diff --git a/app/src/main/java/foundation/e/apps/login/AuthObject.kt b/app/src/main/java/foundation/e/apps/login/AuthObject.kt index 8f4943a470a2d498393acb1bc7ca94068853f701..f08ca43a88dc4d24efcb469449f7661c34372641 100644 --- a/app/src/main/java/foundation/e/apps/login/AuthObject.kt +++ b/app/src/main/java/foundation/e/apps/login/AuthObject.kt @@ -21,6 +21,8 @@ import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.api.ResultSupreme import foundation.e.apps.login.AuthObject.GPlayAuth import foundation.e.apps.utils.enums.User +import foundation.e.apps.utils.exceptions.CleanApkException +import foundation.e.apps.utils.exceptions.GPlayValidationException /** * Auth objects define which sources data is to be loaded from, for each source, also provides @@ -37,7 +39,41 @@ sealed class AuthObject { abstract val result: ResultSupreme<*> abstract val user: User - class GPlayAuth(override val result: ResultSupreme, override val user: User) : AuthObject() - class CleanApk(override val result: ResultSupreme, override val user: User) : AuthObject() + abstract fun createInvalidAuthObject(): AuthObject + + class GPlayAuth(override val result: ResultSupreme, override val user: User) : AuthObject() { + override fun createInvalidAuthObject(): AuthObject { + val message = "Validating AuthData failed.\nNetwork code: 401" + + return GPlayAuth( + ResultSupreme.Error( + message = message, + exception = GPlayValidationException( + message, + this.user, + 401, + ) + ).apply { + otherPayload = this@GPlayAuth.result.otherPayload + }, + this.user, + ) + } + } + + class CleanApk(override val result: ResultSupreme, override val user: User) : AuthObject() { + override fun createInvalidAuthObject(): AuthObject { + return CleanApk( + ResultSupreme.Error( + message = "Unauthorized", + exception = CleanApkException( + isTimeout = false, + message = "Unauthorized", + ) + ), + this.user, + ) + } + } // Add more auth types here } diff --git a/app/src/main/java/foundation/e/apps/login/LoginViewModel.kt b/app/src/main/java/foundation/e/apps/login/LoginViewModel.kt index 6cb9b6bb5783226f61e0c805f491991ccf5ebed8..ad43bda72475b0be9bf9424fe3a29701334bfd03 100644 --- a/app/src/main/java/foundation/e/apps/login/LoginViewModel.kt +++ b/app/src/main/java/foundation/e/apps/login/LoginViewModel.kt @@ -20,12 +20,8 @@ package foundation.e.apps.login import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.lifecycle.HiltViewModel -import foundation.e.apps.api.ResultSupreme import foundation.e.apps.utils.enums.User -import foundation.e.apps.utils.exceptions.CleanApkException -import foundation.e.apps.utils.exceptions.GPlayValidationException import foundation.e.apps.utils.parentFragment.LoadingViewModel import kotlinx.coroutines.launch import javax.inject.Inject @@ -114,14 +110,7 @@ class LoginViewModel @Inject constructor( val authObjectsLocal = authObjects.value?.toMutableList() val invalidObject = authObjectsLocal?.find { it::class.java.simpleName == authObjectName } - val replacedObject = when (invalidObject) { - is AuthObject.GPlayAuth -> { - createInvalidGplayAuth(invalidObject) - } - is AuthObject.CleanApk -> - createInvalidCleanApkAuth(invalidObject) - else -> null - } + val replacedObject = invalidObject?.createInvalidAuthObject() authObjectsLocal?.apply { if (invalidObject != null && replacedObject != null) { @@ -133,36 +122,6 @@ class LoginViewModel @Inject constructor( authObjects.postValue(authObjectsLocal) } - private fun createInvalidCleanApkAuth(invalidObject: AuthObject.CleanApk) = - AuthObject.CleanApk( - ResultSupreme.Error( - message = "Unauthorized", - exception = CleanApkException( - isTimeout = false, - message = "Unauthorized", - ) - ), - invalidObject.user, - ) - - private fun createInvalidGplayAuth(invalidObject: AuthObject.GPlayAuth): AuthObject.GPlayAuth { - val message = "Validating AuthData failed.\nNetwork code: 401" - - return AuthObject.GPlayAuth( - ResultSupreme.Error( - message = message, - exception = GPlayValidationException( - message, - invalidObject.user, - 401, - ) - ).apply { - otherPayload = invalidObject.result.otherPayload - }, - invalidObject.user, - ) - } - /** * Clears all saved data and logs out the user to the sign in screen. */