From b07b807dabf977fceb1501505b02b555dc529e2a Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 22 Sep 2023 09:04:38 +0200 Subject: [PATCH 1/8] Rename LoginSourceInterface to StoreAuthenticator --- .../main/java/foundation/e/apps/MainActivity.kt | 4 ++-- ...nSourceCleanApk.kt => CleanApkAuthenticator.kt} | 6 +++--- ...inSourceGPlay.kt => GooglePlayAuthenticator.kt} | 6 +++--- .../e/apps/data/login/LoginSourceRepository.kt | 14 +++++++------- ...ginSourceInterface.kt => StoreAuthenticator.kt} | 9 +++------ .../main/java/foundation/e/apps/di/LoginModule.kt | 14 +++++++------- .../e/apps/ui/parentFragment/TimeoutFragment.kt | 4 ++-- 7 files changed, 27 insertions(+), 30 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/{LoginSourceCleanApk.kt => CleanApkAuthenticator.kt} (93%) rename app/src/main/java/foundation/e/apps/data/login/{LoginSourceGPlay.kt => GooglePlayAuthenticator.kt} (98%) rename app/src/main/java/foundation/e/apps/data/login/{LoginSourceInterface.kt => StoreAuthenticator.kt} (75%) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index ae7d1a5e6..959edf180 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -40,7 +40,7 @@ import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.login.AuthObject -import foundation.e.apps.data.login.LoginSourceGPlay +import foundation.e.apps.data.login.GooglePlayAuthenticator import foundation.e.apps.data.login.LoginViewModel import foundation.e.apps.data.login.exceptions.GPlayValidationException import foundation.e.apps.data.preference.PreferenceManagerModule @@ -308,7 +308,7 @@ class MainActivity : AppCompatActivity() { binding.sessionErrorLayout.visibility = View.VISIBLE binding.retrySessionButton.setOnClickListener { binding.sessionErrorLayout.visibility = View.GONE - loginViewModel.startLoginFlow(listOf(LoginSourceGPlay::class.java.simpleName)) + loginViewModel.startLoginFlow(listOf(GooglePlayAuthenticator::class.java.simpleName)) } } } diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginSourceCleanApk.kt b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt similarity index 93% rename from app/src/main/java/foundation/e/apps/data/login/LoginSourceCleanApk.kt rename to app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt index a5f49569b..a9ccf84f5 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginSourceCleanApk.kt +++ b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt @@ -27,14 +27,14 @@ import javax.inject.Singleton * https://gitlab.e.foundation/e/backlog/-/issues/5680 */ @Singleton -class LoginSourceCleanApk @Inject constructor( +class CleanApkAuthenticator @Inject constructor( val loginDataStore: LoginDataStore, -) : LoginSourceInterface { +) : StoreAuthenticator { private val user: User get() = loginDataStore.getUserType() - override fun isActive(): Boolean { + override fun isStoreActive(): Boolean { if (user == User.UNAVAILABLE) { /* * UNAVAILABLE user means first login is not completed. diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginSourceGPlay.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/data/login/LoginSourceGPlay.kt rename to app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index d5cf5e45b..cab4d0abf 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginSourceGPlay.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -40,11 +40,11 @@ import javax.inject.Singleton * https://gitlab.e.foundation/e/backlog/-/issues/5680 */ @Singleton -class LoginSourceGPlay @Inject constructor( +class GooglePlayAuthenticator @Inject constructor( @ApplicationContext private val context: Context, private val gson: Gson, private val loginDataStore: LoginDataStore, -) : LoginSourceInterface, AuthDataValidator { +) : StoreAuthenticator, AuthDataValidator { @Inject lateinit var gPlayApiFactory: GPlayApiFactory @@ -61,7 +61,7 @@ class LoginSourceGPlay @Inject constructor( private val locale: Locale get() = context.resources.configuration.locales[0] - override fun isActive(): Boolean { + override fun isStoreActive(): Boolean { if (user == User.UNAVAILABLE) { /* * UNAVAILABLE user means first login is not completed. diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt b/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt index fea7939b6..ba8d4f33b 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt @@ -28,7 +28,7 @@ import javax.inject.Singleton @Singleton class LoginSourceRepository @Inject constructor( private val loginCommon: LoginCommon, - private val sources: List, + private val authenticators: List, ) { var gplayAuth: AuthData? = null @@ -38,13 +38,13 @@ class LoginSourceRepository @Inject constructor( val authObjectsLocal = ArrayList() - for (source in sources) { - if (!source.isActive()) continue - if (source::class.java.simpleName in clearAuthTypes) { - source.clearSavedAuth() + for (authenticator in authenticators) { + if (!authenticator.isStoreActive()) continue + if (authenticator::class.java.simpleName in clearAuthTypes) { + authenticator.clearSavedAuth() } - val authObject = source.getAuthObject() + val authObject = authenticator.getAuthObject() authObjectsLocal.add(authObject) if (authObject is AuthObject.GPlayAuth) { @@ -72,7 +72,7 @@ class LoginSourceRepository @Inject constructor( } suspend fun getValidatedAuthData(): ResultSupreme { - val authDataValidator = (sources.find { it is AuthDataValidator } as AuthDataValidator) + val authDataValidator = (authenticators.find { it is AuthDataValidator } as AuthDataValidator) val validateAuthData = authDataValidator.validateAuthData() this.gplayAuth = validateAuthData.data return validateAuthData diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginSourceInterface.kt b/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt similarity index 75% rename from app/src/main/java/foundation/e/apps/data/login/LoginSourceInterface.kt rename to app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt index c4cc34ce1..5512cd0f2 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginSourceInterface.kt +++ b/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt @@ -18,13 +18,10 @@ package foundation.e.apps.data.login /** - * Interface that defines what methods a login source must define. - * Login sources (can also be called - data sources): Google Play, CleanApk. - * - * https://gitlab.e.foundation/e/backlog/-/issues/5680 + * Store (Google Play Store, Clean Apk) authenticator. */ -interface LoginSourceInterface { +interface StoreAuthenticator { suspend fun getAuthObject(): AuthObject suspend fun clearSavedAuth() - fun isActive(): Boolean + fun isStoreActive(): Boolean } diff --git a/app/src/main/java/foundation/e/apps/di/LoginModule.kt b/app/src/main/java/foundation/e/apps/di/LoginModule.kt index f59a084b8..4347316c4 100644 --- a/app/src/main/java/foundation/e/apps/di/LoginModule.kt +++ b/app/src/main/java/foundation/e/apps/di/LoginModule.kt @@ -21,19 +21,19 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import foundation.e.apps.data.login.LoginSourceCleanApk -import foundation.e.apps.data.login.LoginSourceGPlay -import foundation.e.apps.data.login.LoginSourceInterface +import foundation.e.apps.data.login.CleanApkAuthenticator +import foundation.e.apps.data.login.GooglePlayAuthenticator +import foundation.e.apps.data.login.StoreAuthenticator @InstallIn(SingletonComponent::class) @Module object LoginModule { @Provides - fun providesLoginSources( - gPlay: LoginSourceGPlay, - cleanApk: LoginSourceCleanApk, - ): List { + fun providesAuthenticators( + gPlay: GooglePlayAuthenticator, + cleanApk: CleanApkAuthenticator, + ): List { return listOf(gPlay, cleanApk) } } diff --git a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt index 1557c14dd..f529755c7 100644 --- a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt @@ -33,7 +33,7 @@ import androidx.lifecycle.ViewModelProvider import foundation.e.apps.R import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.AuthObject -import foundation.e.apps.data.login.LoginSourceGPlay +import foundation.e.apps.data.login.GooglePlayAuthenticator import foundation.e.apps.data.login.LoginViewModel import foundation.e.apps.data.login.exceptions.CleanApkException import foundation.e.apps.data.login.exceptions.GPlayException @@ -206,7 +206,7 @@ abstract class TimeoutFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { * Clears saved GPlay AuthData and restarts login process to get */ fun clearAndRestartGPlayLogin() { - loginViewModel.startLoginFlow(listOf(LoginSourceGPlay::class.java.simpleName)) + loginViewModel.startLoginFlow(listOf(GooglePlayAuthenticator::class.java.simpleName)) } /** -- GitLab From 2563176b469f532adfe977d090d79b4412ddd37b Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 22 Sep 2023 09:46:23 +0200 Subject: [PATCH 2/8] Rename LoginSourceRepository to AuthenticatorRepository --- .../data/gplay/GplayStoreRepositoryImpl.kt | 22 +++++++++---------- ...pository.kt => AuthenticatorRepository.kt} | 2 +- .../e/apps/data/login/LoginViewModel.kt | 14 ++++++------ .../e/apps/di/NamedRepositoryModule.kt | 6 ++--- .../e/apps/install/updates/UpdatesWorker.kt | 6 ++--- .../e/apps/login/LoginViewModelTest.kt | 6 ++--- 6 files changed, 28 insertions(+), 28 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/{LoginSourceRepository.kt => AuthenticatorRepository.kt} (98%) diff --git a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt index 383f8e7c6..180b8e5fe 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt @@ -37,7 +37,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.gplay.utils.GPlayHttpClient -import foundation.e.apps.data.login.LoginSourceRepository +import foundation.e.apps.data.login.AuthenticatorRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber @@ -46,13 +46,13 @@ import javax.inject.Inject class GplayStoreRepositoryImpl @Inject constructor( @ApplicationContext private val context: Context, private val gPlayHttpClient: GPlayHttpClient, - private val loginSourceRepository: LoginSourceRepository + private val authenticatorRepository: AuthenticatorRepository ) : GplayStoreRepository { override suspend fun getHomeScreenData(): Any { val homeScreenData = mutableMapOf>() val homeElements = createTopChartElements() - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! homeElements.forEach { val chart = it.value.keys.iterator().next() @@ -77,7 +77,7 @@ class GplayStoreRepositoryImpl @Inject constructor( query: String, subBundle: MutableSet? ): Pair, MutableSet> { - var authData = loginSourceRepository.gplayAuth!! + var authData = authenticatorRepository.gplayAuth!! val searchHelper = SearchHelper(authData).using(gPlayHttpClient) @@ -102,7 +102,7 @@ class GplayStoreRepositoryImpl @Inject constructor( } override suspend fun getSearchSuggestions(query: String): List { - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! val searchData = mutableListOf() withContext(Dispatchers.IO) { @@ -113,7 +113,7 @@ class GplayStoreRepositoryImpl @Inject constructor( } override suspend fun getAppsByCategory(category: String, pageUrl: String?): StreamCluster { - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! val subCategoryHelper = CategoryAppsHelper(authData).using(gPlayHttpClient) @@ -131,7 +131,7 @@ class GplayStoreRepositoryImpl @Inject constructor( return categoryList } - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! withContext(Dispatchers.IO) { val categoryHelper = CategoryHelper(authData).using(gPlayHttpClient) @@ -142,7 +142,7 @@ class GplayStoreRepositoryImpl @Inject constructor( override suspend fun getAppDetails(packageNameOrId: String): App? { var appDetails: App? - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! withContext(Dispatchers.IO) { val appDetailsHelper = AppDetailsHelper(authData).using(gPlayHttpClient) @@ -153,7 +153,7 @@ class GplayStoreRepositoryImpl @Inject constructor( override suspend fun getAppsDetails(packageNamesOrIds: List): List { val appDetailsList = mutableListOf() - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! withContext(Dispatchers.IO) { val appDetailsHelper = AppDetailsHelper(authData).using(gPlayHttpClient) @@ -185,7 +185,7 @@ class GplayStoreRepositoryImpl @Inject constructor( offerType: Int ): List { val downloadData = mutableListOf() - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! withContext(Dispatchers.IO) { val version = versionCode?.let { it as Int } ?: -1 @@ -202,7 +202,7 @@ class GplayStoreRepositoryImpl @Inject constructor( offerType: Int ): List { val downloadData = mutableListOf() - val authData = loginSourceRepository.gplayAuth!! + val authData = authenticatorRepository.gplayAuth!! withContext(Dispatchers.IO) { val purchaseHelper = PurchaseHelper(authData).using(gPlayHttpClient) diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt rename to app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt index ba8d4f33b..891e03018 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginSourceRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt @@ -26,7 +26,7 @@ import javax.inject.Singleton @JvmSuppressWildcards @Singleton -class LoginSourceRepository @Inject constructor( +class AuthenticatorRepository @Inject constructor( private val loginCommon: LoginCommon, private val authenticators: List, ) { diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginViewModel.kt b/app/src/main/java/foundation/e/apps/data/login/LoginViewModel.kt index 659ed8318..fba4285e0 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginViewModel.kt +++ b/app/src/main/java/foundation/e/apps/data/login/LoginViewModel.kt @@ -33,7 +33,7 @@ import javax.inject.Inject */ @HiltViewModel class LoginViewModel @Inject constructor( - private val loginSourceRepository: LoginSourceRepository, + private val authenticatorRepository: AuthenticatorRepository, private val cache: Cache, ) : ViewModel() { @@ -54,7 +54,7 @@ class LoginViewModel @Inject constructor( */ fun startLoginFlow(clearList: List = listOf()) { viewModelScope.launch { - val authObjectsLocal = loginSourceRepository.getAuthObjects(clearList) + val authObjectsLocal = authenticatorRepository.getAuthObjects(clearList) authObjects.postValue(authObjectsLocal) } } @@ -66,7 +66,7 @@ class LoginViewModel @Inject constructor( */ fun initialAnonymousLogin(onUserSaved: () -> Unit) { viewModelScope.launch { - loginSourceRepository.saveUserType(User.ANONYMOUS) + authenticatorRepository.saveUserType(User.ANONYMOUS) onUserSaved() startLoginFlow() } @@ -80,8 +80,8 @@ class LoginViewModel @Inject constructor( */ fun initialGoogleLogin(email: String, oauthToken: String, onUserSaved: () -> Unit) { viewModelScope.launch { - loginSourceRepository.saveGoogleLogin(email, oauthToken) - loginSourceRepository.saveUserType(User.GOOGLE) + authenticatorRepository.saveGoogleLogin(email, oauthToken) + authenticatorRepository.saveUserType(User.GOOGLE) onUserSaved() startLoginFlow() } @@ -96,7 +96,7 @@ class LoginViewModel @Inject constructor( */ fun initialNoGoogleLogin(onUserSaved: () -> Unit) { viewModelScope.launch { - loginSourceRepository.setNoGoogleMode() + authenticatorRepository.setNoGoogleMode() onUserSaved() startLoginFlow() } @@ -131,7 +131,7 @@ class LoginViewModel @Inject constructor( fun logout() { viewModelScope.launch { cache.evictAll() - loginSourceRepository.logout() + authenticatorRepository.logout() authObjects.postValue(listOf()) } } diff --git a/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt b/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt index 56d3d9393..34d20ae09 100644 --- a/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt +++ b/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt @@ -32,7 +32,7 @@ import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.gplay.GplayStoreRepository import foundation.e.apps.data.gplay.GplayStoreRepositoryImpl import foundation.e.apps.data.gplay.utils.GPlayHttpClient -import foundation.e.apps.data.login.LoginSourceRepository +import foundation.e.apps.data.login.AuthenticatorRepository import javax.inject.Named import javax.inject.Singleton @@ -45,9 +45,9 @@ object NamedRepositoryModule { fun getGplayRepository( @ApplicationContext context: Context, gPlayHttpClient: GPlayHttpClient, - loginSourceRepository: LoginSourceRepository + authenticatorRepository: AuthenticatorRepository ): GplayStoreRepository { - return GplayStoreRepositoryImpl(context, gPlayHttpClient, loginSourceRepository) + return GplayStoreRepositoryImpl(context, gPlayHttpClient, authenticatorRepository) } @Singleton diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt index 1f7804cb6..f15a36841 100644 --- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorker.kt @@ -20,7 +20,7 @@ import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User import foundation.e.apps.data.fused.data.FusedApp -import foundation.e.apps.data.login.LoginSourceRepository +import foundation.e.apps.data.login.AuthenticatorRepository import foundation.e.apps.data.preference.DataStoreManager import foundation.e.apps.data.updates.UpdatesManagerRepository import foundation.e.apps.install.workmanager.AppInstallProcessor @@ -37,7 +37,7 @@ class UpdatesWorker @AssistedInject constructor( @Assisted private val params: WorkerParameters, private val updatesManagerRepository: UpdatesManagerRepository, private val dataStoreManager: DataStoreManager, - private val loginSourceRepository: LoginSourceRepository, + private val authenticatorRepository: AuthenticatorRepository, private val appInstallProcessor: AppInstallProcessor, private val blockedAppRepository: BlockedAppRepository, ) : CoroutineWorker(context, params) { @@ -106,7 +106,7 @@ class UpdatesWorker @AssistedInject constructor( val isConnectedToUnMeteredNetwork = isConnectedToUnMeteredNetwork(applicationContext) val appsNeededToUpdate = mutableListOf() val user = getUser() - val authData = loginSourceRepository.getValidatedAuthData().data + val authData = authenticatorRepository.getValidatedAuthData().data val resultStatus: ResultStatus if (user in listOf(User.ANONYMOUS, User.GOOGLE) && authData != null) { diff --git a/app/src/test/java/foundation/e/apps/login/LoginViewModelTest.kt b/app/src/test/java/foundation/e/apps/login/LoginViewModelTest.kt index 662ede447..9060e9740 100644 --- a/app/src/test/java/foundation/e/apps/login/LoginViewModelTest.kt +++ b/app/src/test/java/foundation/e/apps/login/LoginViewModelTest.kt @@ -23,7 +23,7 @@ import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.AuthObject -import foundation.e.apps.data.login.LoginSourceRepository +import foundation.e.apps.data.login.AuthenticatorRepository import foundation.e.apps.data.login.LoginViewModel import okhttp3.Cache import org.junit.Before @@ -35,7 +35,7 @@ import org.mockito.MockitoAnnotations class LoginViewModelTest { @Mock - private lateinit var loginSourceRepository: LoginSourceRepository + private lateinit var authenticatorRepository: AuthenticatorRepository @Mock private lateinit var cache: Cache @@ -48,7 +48,7 @@ class LoginViewModelTest { @Before fun setup() { MockitoAnnotations.openMocks(this) - loginViewModel = LoginViewModel(loginSourceRepository, cache) + loginViewModel = LoginViewModel(authenticatorRepository, cache) } @Test -- GitLab From baadf6acbb7101d2af1614a06e10c16e34c83e3e Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 22 Sep 2023 09:47:35 +0200 Subject: [PATCH 3/8] Rename LoginDataStore to LoginData --- .../apps/data/login/CleanApkAuthenticator.kt | 6 ++--- .../data/login/GooglePlayAuthenticator.kt | 22 ++++++++-------- .../e/apps/data/login/LoginCommon.kt | 26 +++++++++---------- .../login/{LoginDataStore.kt => LoginData.kt} | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/{LoginDataStore.kt => LoginData.kt} (99%) diff --git a/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt index a9ccf84f5..6a13d14dc 100644 --- a/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt @@ -28,11 +28,11 @@ import javax.inject.Singleton */ @Singleton class CleanApkAuthenticator @Inject constructor( - val loginDataStore: LoginDataStore, + val loginData: LoginData, ) : StoreAuthenticator { private val user: User - get() = loginDataStore.getUserType() + get() = loginData.getUserType() override fun isStoreActive(): Boolean { if (user == User.UNAVAILABLE) { @@ -41,7 +41,7 @@ class CleanApkAuthenticator @Inject constructor( */ return false } - return loginDataStore.isOpenSourceSelected() || loginDataStore.isPWASelected() + return loginData.isOpenSourceSelected() || loginData.isPWASelected() } override suspend fun getAuthObject(): AuthObject.CleanApk { diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index cab4d0abf..0703a33a4 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -43,14 +43,14 @@ import javax.inject.Singleton class GooglePlayAuthenticator @Inject constructor( @ApplicationContext private val context: Context, private val gson: Gson, - private val loginDataStore: LoginDataStore, + private val loginData: LoginData, ) : StoreAuthenticator, AuthDataValidator { @Inject lateinit var gPlayApiFactory: GPlayApiFactory private val user: User - get() = loginDataStore.getUserType() + get() = loginData.getUserType() private val gPlayLoginInterface: GPlayLoginInterface get() = gPlayApiFactory.getGPlayApi(user) @@ -68,7 +68,7 @@ class GooglePlayAuthenticator @Inject constructor( */ return false } - return loginDataStore.isGplaySelected() + return loginData.isGplaySelected() } /** @@ -103,7 +103,7 @@ class GooglePlayAuthenticator @Inject constructor( } override suspend fun clearSavedAuth() { - loginDataStore.clearAuthData() + loginData.clearAuthData() } /** @@ -111,7 +111,7 @@ class GooglePlayAuthenticator @Inject constructor( * Returns null if nothing is saved. */ private fun getSavedAuthData(): AuthData? { - val authJson = loginDataStore.getAuthData() + val authJson = loginData.getAuthData() return if (authJson.isBlank()) null else try { gson.fromJson(authJson, AuthData::class.java) @@ -122,20 +122,20 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun saveAuthData(authData: AuthData) { - loginDataStore.saveAuthData(authData) + loginData.saveAuthData(authData) } /** * Generate new AuthData based on the user type. */ private suspend fun generateAuthData(): ResultSupreme { - return when (loginDataStore.getUserType()) { + return when (loginData.getUserType()) { User.ANONYMOUS -> getAuthData() User.GOOGLE -> { getAuthData( - loginDataStore.getEmail(), - loginDataStore.getOAuthToken(), - loginDataStore.getAASToken() + loginData.getEmail(), + loginData.getOAuthToken(), + loginData.getAASToken() ) } else -> ResultSupreme.Error("User type not ANONYMOUS or GOOGLE") @@ -205,7 +205,7 @@ class GooglePlayAuthenticator @Inject constructor( /* * Finally save the aasToken and create auth data. */ - loginDataStore.saveAasToken(aasTokenFetched) + loginData.saveAasToken(aasTokenFetched) return loginApiRepository.fetchAuthData(email, aasTokenFetched, locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginCommon.kt b/app/src/main/java/foundation/e/apps/data/login/LoginCommon.kt index cc38464e2..b041a29db 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginCommon.kt +++ b/app/src/main/java/foundation/e/apps/data/login/LoginCommon.kt @@ -30,33 +30,33 @@ import javax.inject.Singleton */ @Singleton class LoginCommon @Inject constructor( - private val loginDataStore: LoginDataStore, + private val loginData: LoginData, ) { suspend fun saveUserType(user: User) { - loginDataStore.saveUserType(user) + loginData.saveUserType(user) } fun getUserType(): User { - return loginDataStore.getUserType() + return loginData.getUserType() } suspend fun saveGoogleLogin(email: String, oauth: String) { - loginDataStore.saveGoogleLogin(email, oauth) + loginData.saveGoogleLogin(email, oauth) } suspend fun setNoGoogleMode() { - loginDataStore.setSource(Constants.PREFERENCE_SHOW_FOSS, true) - loginDataStore.setSource(Constants.PREFERENCE_SHOW_PWA, true) - loginDataStore.setSource(Constants.PREFERENCE_SHOW_GPLAY, false) - loginDataStore.saveUserType(User.NO_GOOGLE) + loginData.setSource(Constants.PREFERENCE_SHOW_FOSS, true) + loginData.setSource(Constants.PREFERENCE_SHOW_PWA, true) + loginData.setSource(Constants.PREFERENCE_SHOW_GPLAY, false) + loginData.saveUserType(User.NO_GOOGLE) } suspend fun logout() { - loginDataStore.destroyCredentials() - loginDataStore.clearUserType() + loginData.destroyCredentials() + loginData.clearUserType() // reset app source preferences on logout. - loginDataStore.setSource(Constants.PREFERENCE_SHOW_FOSS, true) - loginDataStore.setSource(Constants.PREFERENCE_SHOW_PWA, true) - loginDataStore.setSource(Constants.PREFERENCE_SHOW_GPLAY, true) + loginData.setSource(Constants.PREFERENCE_SHOW_FOSS, true) + loginData.setSource(Constants.PREFERENCE_SHOW_PWA, true) + loginData.setSource(Constants.PREFERENCE_SHOW_GPLAY, true) } } diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginDataStore.kt b/app/src/main/java/foundation/e/apps/data/login/LoginData.kt similarity index 99% rename from app/src/main/java/foundation/e/apps/data/login/LoginDataStore.kt rename to app/src/main/java/foundation/e/apps/data/login/LoginData.kt index 468cbc667..8459a1d86 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginDataStore.kt +++ b/app/src/main/java/foundation/e/apps/data/login/LoginData.kt @@ -36,7 +36,7 @@ import javax.inject.Inject import javax.inject.Singleton @Singleton -class LoginDataStore @Inject constructor( +class LoginData @Inject constructor( @ApplicationContext private val context: Context, private val gson: Gson -- GitLab From a4894a39958a56fce0ec3378a62c737d189571c8 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 22 Sep 2023 16:01:54 +0200 Subject: [PATCH 4/8] Rename GPlayLoginInterface to GooglePlayLogger --- .../data/login/AuthenticatorRepository.kt | 4 +-- .../apps/data/login/CleanApkAuthenticator.kt | 4 +-- .../data/login/GooglePlayAuthenticator.kt | 30 +++++++++---------- .../e/apps/data/login/StoreAuthenticator.kt | 4 +-- ...nonymousLoginApi.kt => AnonymousLogger.kt} | 14 ++++----- .../e/apps/data/login/api/GPlayApiFactory.kt | 6 ++-- ...ogleLoginApi.kt => GoogleAccountLogger.kt} | 10 +++---- ...yLoginInterface.kt => GooglePlayLogger.kt} | 6 ++-- ...nApiRepository.kt => GooglePlayWrapper.kt} | 30 +++++++++---------- 9 files changed, 54 insertions(+), 54 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/api/{AnonymousLoginApi.kt => AnonymousLogger.kt} (89%) rename app/src/main/java/foundation/e/apps/data/login/api/{GoogleLoginApi.kt => GoogleAccountLogger.kt} (92%) rename app/src/main/java/foundation/e/apps/data/login/api/{GPlayLoginInterface.kt => GooglePlayLogger.kt} (83%) rename app/src/main/java/foundation/e/apps/data/login/api/{LoginApiRepository.kt => GooglePlayWrapper.kt} (83%) diff --git a/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt index 891e03018..2e4bc761d 100644 --- a/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/login/AuthenticatorRepository.kt @@ -41,10 +41,10 @@ class AuthenticatorRepository @Inject constructor( for (authenticator in authenticators) { if (!authenticator.isStoreActive()) continue if (authenticator::class.java.simpleName in clearAuthTypes) { - authenticator.clearSavedAuth() + authenticator.logout() } - val authObject = authenticator.getAuthObject() + val authObject = authenticator.login() authObjectsLocal.add(authObject) if (authObject is AuthObject.GPlayAuth) { diff --git a/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt index 6a13d14dc..d3879f586 100644 --- a/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/CleanApkAuthenticator.kt @@ -44,12 +44,12 @@ class CleanApkAuthenticator @Inject constructor( return loginData.isOpenSourceSelected() || loginData.isPWASelected() } - override suspend fun getAuthObject(): AuthObject.CleanApk { + override suspend fun login(): AuthObject.CleanApk { return AuthObject.CleanApk( ResultSupreme.Success(Unit), user, ) } - override suspend fun clearSavedAuth() {} + override suspend fun logout() {} } diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index 0703a33a4..d5f690b9c 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -25,16 +25,16 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.api.GPlayApiFactory -import foundation.e.apps.data.login.api.GPlayLoginInterface -import foundation.e.apps.data.login.api.GoogleLoginApi -import foundation.e.apps.data.login.api.LoginApiRepository +import foundation.e.apps.data.login.api.GooglePlayLogger +import foundation.e.apps.data.login.api.GoogleAccountLogger +import foundation.e.apps.data.login.api.GooglePlayWrapper import timber.log.Timber import java.util.Locale import javax.inject.Inject import javax.inject.Singleton /** - * Class to get GPlay auth data. Call [getAuthObject] to get an already saved auth data + * Class to get GPlay auth data. Call [login] to get an already saved auth data * or to fetch a new one for first use. Handles auth validation internally. * * https://gitlab.e.foundation/e/backlog/-/issues/5680 @@ -52,11 +52,11 @@ class GooglePlayAuthenticator @Inject constructor( private val user: User get() = loginData.getUserType() - private val gPlayLoginInterface: GPlayLoginInterface + private val logger: GooglePlayLogger get() = gPlayApiFactory.getGPlayApi(user) - private val loginApiRepository: LoginApiRepository - get() = LoginApiRepository(gPlayLoginInterface, user) + private val loggerWrapper: GooglePlayWrapper + get() = GooglePlayWrapper(logger, user) private val locale: Locale get() = context.resources.configuration.locales[0] @@ -74,7 +74,7 @@ class GooglePlayAuthenticator @Inject constructor( /** * Main entry point to get GPlay auth data. */ - override suspend fun getAuthObject(): AuthObject.GPlayAuth { + override suspend fun login(): AuthObject.GPlayAuth { val savedAuth = getSavedAuthData() val authData = ( @@ -102,7 +102,7 @@ class GooglePlayAuthenticator @Inject constructor( return AuthObject.GPlayAuth(result, user) } - override suspend fun clearSavedAuth() { + override suspend fun logout() { loginData.clearAuthData() } @@ -155,7 +155,7 @@ class GooglePlayAuthenticator @Inject constructor( * Get AuthData for ANONYMOUS mode. */ private suspend fun getAuthData(): ResultSupreme { - return loginApiRepository.fetchAuthData("", "", locale).run { + return loggerWrapper.login("", "", locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } @@ -175,14 +175,14 @@ class GooglePlayAuthenticator @Inject constructor( * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { - return loginApiRepository.fetchAuthData(email, aasToken, locale) + return loggerWrapper.login(email, aasToken, locale) } /* * If aasToken is not yet saved / made, fetch it from email and oauthToken. */ - val aasTokenResponse = loginApiRepository.getAasToken( - gPlayLoginInterface as GoogleLoginApi, + val aasTokenResponse = loggerWrapper.getAasToken( + logger as GoogleAccountLogger, email, oauthToken ) @@ -206,7 +206,7 @@ class GooglePlayAuthenticator @Inject constructor( * Finally save the aasToken and create auth data. */ loginData.saveAasToken(aasTokenFetched) - return loginApiRepository.fetchAuthData(email, aasTokenFetched, locale).run { + return loggerWrapper.login(email, aasTokenFetched, locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } @@ -228,5 +228,5 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun isAuthDataValid(savedAuth: AuthData?) = - savedAuth != null && loginApiRepository.login(savedAuth).exception == null + savedAuth != null && loggerWrapper.validate(savedAuth).exception == null } diff --git a/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt index 5512cd0f2..bc0d18106 100644 --- a/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/StoreAuthenticator.kt @@ -21,7 +21,7 @@ package foundation.e.apps.data.login * Store (Google Play Store, Clean Apk) authenticator. */ interface StoreAuthenticator { - suspend fun getAuthObject(): AuthObject - suspend fun clearSavedAuth() + suspend fun login(): AuthObject + suspend fun logout() fun isStoreActive(): Boolean } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginApi.kt b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt similarity index 89% rename from app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginApi.kt rename to app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt index edd0d15a2..33d80baf2 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginApi.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt @@ -26,20 +26,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties -class AnonymousLoginApi( +class AnonymousLogger( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val gson: Gson, -) : GPlayLoginInterface { +) : GooglePlayLogger { private val tokenUrl: String = "https://eu.gtoken.ecloud.global" /** - * Fetches AuthData for Anonymous login. - * @param email Keep it blank (""). - * @param aasToken Keep it blank (""). + * Log anonymously a user + * @param email email of the user + * @param aasToken aasToken corresponding to the user */ - override suspend fun fetchAuthData(email: String, aasToken: String): AuthData? { + override suspend fun login(email: String, aasToken: String): AuthData? { var authData: AuthData? = null withContext(Dispatchers.IO) { val response = @@ -68,7 +68,7 @@ class AnonymousLoginApi( * Check if an AuthData is valid. Returns a [PlayResponse]. * Check [PlayResponse.isSuccessful] to see if the validation was successful. */ - override suspend fun login(authData: AuthData): PlayResponse { + override suspend fun validate(authData: AuthData): PlayResponse { var result = PlayResponse() withContext(Dispatchers.IO) { try { diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt index 4b5a71052..5996148aa 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt @@ -33,10 +33,10 @@ class GPlayApiFactory @Inject constructor( private val gson: Gson, ) { - fun getGPlayApi(user: User): GPlayLoginInterface { + fun getGPlayApi(user: User): GooglePlayLogger { return when (user) { - User.GOOGLE -> GoogleLoginApi(gPlayHttpClient, nativeDeviceProperty, aC2DMTask) - else -> AnonymousLoginApi(gPlayHttpClient, nativeDeviceProperty, gson) + User.GOOGLE -> GoogleAccountLogger(gPlayHttpClient, nativeDeviceProperty, aC2DMTask) + else -> AnonymousLogger(gPlayHttpClient, nativeDeviceProperty, gson) } } } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginApi.kt b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt similarity index 92% rename from app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginApi.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt index 4331d473a..f19113c61 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginApi.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt @@ -27,16 +27,16 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties -class GoogleLoginApi( +class GoogleAccountLogger( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, -) : GPlayLoginInterface { +) : GooglePlayLogger { /** * Get PlayResponse for AC2DM Map. This allows us to get an error message too. * - * An aasToken is extracted from this map. This is passed to [fetchAuthData] + * An aasToken is extracted from this map. This is passed to [login] * to generate AuthData. This token is very important as it cannot be regenerated, * hence it must be saved for future use. * @@ -54,7 +54,7 @@ class GoogleLoginApi( * Convert email and AASToken to AuthData class. * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 */ - override suspend fun fetchAuthData(email: String, aasToken: String): AuthData? { + override suspend fun login(email: String, aasToken: String): AuthData? { var authData: AuthData? withContext(Dispatchers.IO) { authData = AuthHelper.build(email, aasToken, nativeDeviceProperty) @@ -66,7 +66,7 @@ class GoogleLoginApi( * Check if an AuthData is valid. Returns a [PlayResponse]. * Check [PlayResponse.isSuccessful] to see if the validation was successful. */ - override suspend fun login(authData: AuthData): PlayResponse { + override suspend fun validate(authData: AuthData): PlayResponse { var result = PlayResponse() withContext(Dispatchers.IO) { try { diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GPlayLoginInterface.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt similarity index 83% rename from app/src/main/java/foundation/e/apps/data/login/api/GPlayLoginInterface.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt index d1159caae..025002dd5 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GPlayLoginInterface.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt @@ -20,7 +20,7 @@ package foundation.e.apps.data.login.api import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse -interface GPlayLoginInterface { - suspend fun login(authData: AuthData): PlayResponse - suspend fun fetchAuthData(email: String, aasToken: String): AuthData? +interface GooglePlayLogger { + suspend fun login(email: String, aasToken: String): AuthData? + suspend fun validate(authData: AuthData): PlayResponse } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/LoginApiRepository.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt similarity index 83% rename from app/src/main/java/foundation/e/apps/data/login/api/LoginApiRepository.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt index b2fbd026c..c8fb3d8af 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/LoginApiRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt @@ -27,21 +27,21 @@ import foundation.e.apps.data.login.exceptions.GPlayLoginException import java.util.Locale /** - * Call methods of [GoogleLoginApi] and [AnonymousLoginApi] from here. + * Call methods of [GoogleAccountLogger] and [AnonymousLogger] from here. * * Dependency Injection via hilt is not possible, - * we need to manually check login type, create an instance of either [GoogleLoginApi] - * or [AnonymousLoginApi] and pass it to [gPlayLoginInterface]. + * we need to manually check login type, create an instance of either [GoogleAccountLogger] + * or [AnonymousLogger] and pass it to [logger]. * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 */ -class LoginApiRepository constructor( - private val gPlayLoginInterface: GPlayLoginInterface, +class GooglePlayWrapper constructor( + private val logger: GooglePlayLogger, private val user: User, ) { /** - * Gets the auth data from instance of [GPlayLoginInterface]. + * Gets the auth data from instance of [GooglePlayLogger]. * Applicable for both Google and Anonymous login. * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 @@ -49,9 +49,9 @@ class LoginApiRepository constructor( * @param aasToken For Google login - Access token obtained from [getAasToken] function, * else blank for Anonymous login. */ - suspend fun fetchAuthData(email: String, aasToken: String, locale: Locale): ResultSupreme { + suspend fun login(email: String, aasToken: String, locale: Locale): ResultSupreme { val result = handleNetworkResult { - gPlayLoginInterface.fetchAuthData(email, aasToken) + logger.login(email, aasToken) } return result.apply { this.data?.locale = locale @@ -72,10 +72,10 @@ class LoginApiRepository constructor( * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 */ - suspend fun login(authData: AuthData): ResultSupreme { + suspend fun validate(authData: AuthData): ResultSupreme { var response = PlayResponse() val result = handleNetworkResult { - response = gPlayLoginInterface.login(authData) + response = logger.validate(authData) if (response.code != 200) { throw Exception("Validation network code: ${response.code}") } @@ -92,25 +92,25 @@ class LoginApiRepository constructor( /** * Gets email and oauthToken from Google login, finds the AASToken from AC2DM response - * and returns it. This token is then used to fetch AuthData from [fetchAuthData]. + * and returns it. This token is then used to fetch AuthData from [login]. * * Do note that for a given oauthToken, it has been observed that AASToken can * only be generated once. So this token must be saved for future use. * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 * - * @param googleLoginApi An instance of [GoogleLoginApi] must be passed, this method - * cannot work on [gPlayLoginInterface] as it is a common interface for both Google and Anonymous + * @param googleAccountLogin An instance of [GoogleAccountLogger] must be passed, this method + * cannot work on [logger] as it is a common interface for both Google and Anonymous * login, but this method is only for Google login. */ suspend fun getAasToken( - googleLoginApi: GoogleLoginApi, + googleAccountLogin: GoogleAccountLogger, email: String, oauthToken: String ): ResultSupreme { val result = handleNetworkResult { var aasToken = "" - val response = googleLoginApi.getAC2DMResponse(email, oauthToken) + val response = googleAccountLogin.getAC2DMResponse(email, oauthToken) var error = response.errorString if (response.isSuccessful) { val responseMap = AC2DMUtil.parseResponse(String(response.responseBytes)) -- GitLab From c7b51b5f3d7ecf9f9ae118ba343d8a6e95d1561e Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Mon, 25 Sep 2023 09:04:05 +0200 Subject: [PATCH 5/8] Sanitize GooglePlayLogger interface Now login() method does not have arguments anymore. User and password are taken from the data store. --- .../data/login/GooglePlayAuthenticator.kt | 33 ++++++------------- .../foundation/e/apps/data/login/LoginData.kt | 10 +++--- .../e/apps/data/login/api/AnonymousLogger.kt | 6 ++-- .../e/apps/data/login/api/GPlayApiFactory.kt | 4 ++- .../data/login/api/GoogleAccountLogger.kt | 12 +++++-- .../e/apps/data/login/api/GooglePlayLogger.kt | 2 +- .../apps/data/login/api/GooglePlayWrapper.kt | 10 ++---- 7 files changed, 33 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index d5f690b9c..9d7d4ef22 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -130,14 +130,8 @@ class GooglePlayAuthenticator @Inject constructor( */ private suspend fun generateAuthData(): ResultSupreme { return when (loginData.getUserType()) { - User.ANONYMOUS -> getAuthData() - User.GOOGLE -> { - getAuthData( - loginData.getEmail(), - loginData.getOAuthToken(), - loginData.getAASToken() - ) - } + User.ANONYMOUS -> getAuthDataAnonymously() + User.GOOGLE -> getAuthDataWithGoogleAccount() else -> ResultSupreme.Error("User type not ANONYMOUS or GOOGLE") } } @@ -151,31 +145,24 @@ class GooglePlayAuthenticator @Inject constructor( return gson.fromJson(localAuthDataJson, AuthData::class.java) } - /** - * Get AuthData for ANONYMOUS mode. - */ - private suspend fun getAuthData(): ResultSupreme { - return loggerWrapper.login("", "", locale).run { + private suspend fun getAuthDataAnonymously(): ResultSupreme { + return loggerWrapper.login(locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } } - /** - * Get AuthData for GOOGLE login mode. - */ - private suspend fun getAuthData( - email: String, - oauthToken: String, - aasToken: String, - ): ResultSupreme { + private suspend fun getAuthDataWithGoogleAccount(): ResultSupreme { + val email = loginData.getEmail() + val oauthToken = loginData.getOAuthToken() + val aasToken = loginData.getAASToken() /* * If aasToken is not blank, means it was stored successfully from a previous Google login. * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { - return loggerWrapper.login(email, aasToken, locale) + return loggerWrapper.login(locale) } /* @@ -206,7 +193,7 @@ class GooglePlayAuthenticator @Inject constructor( * Finally save the aasToken and create auth data. */ loginData.saveAasToken(aasTokenFetched) - return loggerWrapper.login(email, aasTokenFetched, locale).run { + return loggerWrapper.login(locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } diff --git a/app/src/main/java/foundation/e/apps/data/login/LoginData.kt b/app/src/main/java/foundation/e/apps/data/login/LoginData.kt index 8459a1d86..c9da999b5 100644 --- a/app/src/main/java/foundation/e/apps/data/login/LoginData.kt +++ b/app/src/main/java/foundation/e/apps/data/login/LoginData.kt @@ -67,11 +67,11 @@ class LoginData @Inject constructor( * If AasToken is not stored, user has to logout and login again. */ - val authData = context.dataStore.data.map { it[AUTHDATA] ?: "" } - val emailData = context.dataStore.data.map { it[EMAIL] ?: "" } - val aasToken = context.dataStore.data.map { it[AASTOKEN] ?: "" } - val oauthToken = context.dataStore.data.map { it[OAUTHTOKEN] ?: "" } - val userType = context.dataStore.data.map { it[USERTYPE] ?: "" } + private val authData = context.dataStore.data.map { it[AUTHDATA] ?: "" } + private val emailData = context.dataStore.data.map { it[EMAIL] ?: "" } + private val aasToken = context.dataStore.data.map { it[AASTOKEN] ?: "" } + private val oauthToken = context.dataStore.data.map { it[OAUTHTOKEN] ?: "" } + private val userType = context.dataStore.data.map { it[USERTYPE] ?: "" } // Setters diff --git a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt index 33d80baf2..50aba6cbf 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt @@ -36,10 +36,10 @@ class AnonymousLogger( /** * Log anonymously a user - * @param email email of the user - * @param aasToken aasToken corresponding to the user + * + * @return authData: authentication data */ - override suspend fun login(email: String, aasToken: String): AuthData? { + override suspend fun login(): AuthData? { var authData: AuthData? = null withContext(Dispatchers.IO) { val response = diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt index 5996148aa..66a95b15a 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt @@ -21,6 +21,7 @@ import com.google.gson.Gson import foundation.e.apps.data.enums.User import foundation.e.apps.data.gplay.utils.AC2DMTask import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.login.LoginData import java.util.Properties import javax.inject.Inject import javax.inject.Singleton @@ -31,11 +32,12 @@ class GPlayApiFactory @Inject constructor( private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, private val gson: Gson, + private val loginData: LoginData ) { fun getGPlayApi(user: User): GooglePlayLogger { return when (user) { - User.GOOGLE -> GoogleAccountLogger(gPlayHttpClient, nativeDeviceProperty, aC2DMTask) + User.GOOGLE -> GoogleAccountLogger(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) else -> AnonymousLogger(gPlayHttpClient, nativeDeviceProperty, gson) } } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt index f19113c61..078a00a3e 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt @@ -23,6 +23,7 @@ import com.aurora.gplayapi.helpers.AuthHelper import foundation.e.apps.data.gplay.utils.AC2DMTask import foundation.e.apps.data.gplay.utils.CustomAuthValidator import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.login.LoginData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties @@ -31,6 +32,7 @@ class GoogleAccountLogger( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, + private val loginData: LoginData ) : GooglePlayLogger { /** @@ -51,10 +53,14 @@ class GoogleAccountLogger( } /** - * Convert email and AASToken to AuthData class. - * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 + * Login + * + * @return authData: authentication data */ - override suspend fun login(email: String, aasToken: String): AuthData? { + override suspend fun login(): AuthData? { + val email = loginData.getEmail() + val aasToken = loginData.getAASToken() + var authData: AuthData? withContext(Dispatchers.IO) { authData = AuthHelper.build(email, aasToken, nativeDeviceProperty) diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt index 025002dd5..1bdcb7b28 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt @@ -21,6 +21,6 @@ import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse interface GooglePlayLogger { - suspend fun login(email: String, aasToken: String): AuthData? + suspend fun login(): AuthData? suspend fun validate(authData: AuthData): PlayResponse } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt index c8fb3d8af..b4f7fe641 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt @@ -42,16 +42,10 @@ class GooglePlayWrapper constructor( /** * Gets the auth data from instance of [GooglePlayLogger]. - * Applicable for both Google and Anonymous login. - * - * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 - * @param email Email address for Google login. Blank for Anonymous login. - * @param aasToken For Google login - Access token obtained from [getAasToken] function, - * else blank for Anonymous login. */ - suspend fun login(email: String, aasToken: String, locale: Locale): ResultSupreme { + suspend fun login(locale: Locale): ResultSupreme { val result = handleNetworkResult { - logger.login(email, aasToken) + logger.login() } return result.apply { this.data?.locale = locale -- GitLab From 71756610b2e6abd9fe15471e91b06ec8f7f83d72 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Mon, 25 Sep 2023 12:27:02 +0200 Subject: [PATCH 6/8] Rename GooglePlayLogger to GooglePlayLoginManager --- .../data/login/GooglePlayAuthenticator.kt | 10 ++++----- ...mousLogger.kt => AnonymousLoginManager.kt} | 4 ++-- .../e/apps/data/login/api/GPlayApiFactory.kt | 6 ++--- ...Logger.kt => GoogleAccountLoginManager.kt} | 4 ++-- ...layLogger.kt => GooglePlayLoginManager.kt} | 2 +- .../apps/data/login/api/GooglePlayWrapper.kt | 22 +++++++++---------- 6 files changed, 24 insertions(+), 24 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/api/{AnonymousLogger.kt => AnonymousLoginManager.kt} (98%) rename app/src/main/java/foundation/e/apps/data/login/api/{GoogleAccountLogger.kt => GoogleAccountLoginManager.kt} (98%) rename app/src/main/java/foundation/e/apps/data/login/api/{GooglePlayLogger.kt => GooglePlayLoginManager.kt} (96%) diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index 9d7d4ef22..0d21095d8 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -25,8 +25,8 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.api.GPlayApiFactory -import foundation.e.apps.data.login.api.GooglePlayLogger -import foundation.e.apps.data.login.api.GoogleAccountLogger +import foundation.e.apps.data.login.api.GooglePlayLoginManager +import foundation.e.apps.data.login.api.GoogleAccountLoginManager import foundation.e.apps.data.login.api.GooglePlayWrapper import timber.log.Timber import java.util.Locale @@ -52,11 +52,11 @@ class GooglePlayAuthenticator @Inject constructor( private val user: User get() = loginData.getUserType() - private val logger: GooglePlayLogger + private val loginManager: GooglePlayLoginManager get() = gPlayApiFactory.getGPlayApi(user) private val loggerWrapper: GooglePlayWrapper - get() = GooglePlayWrapper(logger, user) + get() = GooglePlayWrapper(loginManager, user) private val locale: Locale get() = context.resources.configuration.locales[0] @@ -169,7 +169,7 @@ class GooglePlayAuthenticator @Inject constructor( * If aasToken is not yet saved / made, fetch it from email and oauthToken. */ val aasTokenResponse = loggerWrapper.getAasToken( - logger as GoogleAccountLogger, + loginManager as GoogleAccountLoginManager, email, oauthToken ) diff --git a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt rename to app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt index 50aba6cbf..bc4243fff 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt @@ -26,11 +26,11 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties -class AnonymousLogger( +class AnonymousLoginManager( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val gson: Gson, -) : GooglePlayLogger { +) : GooglePlayLoginManager { private val tokenUrl: String = "https://eu.gtoken.ecloud.global" diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt index 66a95b15a..74ad067d1 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt @@ -35,10 +35,10 @@ class GPlayApiFactory @Inject constructor( private val loginData: LoginData ) { - fun getGPlayApi(user: User): GooglePlayLogger { + fun getGPlayApi(user: User): GooglePlayLoginManager { return when (user) { - User.GOOGLE -> GoogleAccountLogger(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) - else -> AnonymousLogger(gPlayHttpClient, nativeDeviceProperty, gson) + User.GOOGLE -> GoogleAccountLoginManager(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) + else -> AnonymousLoginManager(gPlayHttpClient, nativeDeviceProperty, gson) } } } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt index 078a00a3e..00f9ec0ca 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt @@ -28,12 +28,12 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties -class GoogleAccountLogger( +class GoogleAccountLoginManager( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, private val loginData: LoginData -) : GooglePlayLogger { +) : GooglePlayLoginManager { /** * Get PlayResponse for AC2DM Map. This allows us to get an error message too. diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt index 1bdcb7b28..25f69432a 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLogger.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt @@ -20,7 +20,7 @@ package foundation.e.apps.data.login.api import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse -interface GooglePlayLogger { +interface GooglePlayLoginManager { suspend fun login(): AuthData? suspend fun validate(authData: AuthData): PlayResponse } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt index b4f7fe641..1c2188fb5 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt @@ -27,25 +27,25 @@ import foundation.e.apps.data.login.exceptions.GPlayLoginException import java.util.Locale /** - * Call methods of [GoogleAccountLogger] and [AnonymousLogger] from here. + * Call methods of [GoogleAccountLoginManager] and [AnonymousLoginManager] from here. * * Dependency Injection via hilt is not possible, - * we need to manually check login type, create an instance of either [GoogleAccountLogger] - * or [AnonymousLogger] and pass it to [logger]. + * we need to manually check login type, create an instance of either [GoogleAccountLoginManager] + * or [AnonymousLoginManager] and pass it to [loginManager]. * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 */ class GooglePlayWrapper constructor( - private val logger: GooglePlayLogger, + private val loginManager: GooglePlayLoginManager, private val user: User, ) { /** - * Gets the auth data from instance of [GooglePlayLogger]. + * Gets the auth data from instance of [GooglePlayLoginManager]. */ suspend fun login(locale: Locale): ResultSupreme { val result = handleNetworkResult { - logger.login() + loginManager.login() } return result.apply { this.data?.locale = locale @@ -69,7 +69,7 @@ class GooglePlayWrapper constructor( suspend fun validate(authData: AuthData): ResultSupreme { var response = PlayResponse() val result = handleNetworkResult { - response = logger.validate(authData) + response = loginManager.validate(authData) if (response.code != 200) { throw Exception("Validation network code: ${response.code}") } @@ -93,18 +93,18 @@ class GooglePlayWrapper constructor( * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 * - * @param googleAccountLogin An instance of [GoogleAccountLogger] must be passed, this method - * cannot work on [logger] as it is a common interface for both Google and Anonymous + * @param googleAccountLoginManager An instance of [GoogleAccountLoginManager] must be passed, this method + * cannot work on [loginManager] as it is a common interface for both Google and Anonymous * login, but this method is only for Google login. */ suspend fun getAasToken( - googleAccountLogin: GoogleAccountLogger, + googleAccountLoginManager: GoogleAccountLoginManager, email: String, oauthToken: String ): ResultSupreme { val result = handleNetworkResult { var aasToken = "" - val response = googleAccountLogin.getAC2DMResponse(email, oauthToken) + val response = googleAccountLoginManager.getAC2DMResponse(email, oauthToken) var error = response.errorString if (response.isSuccessful) { val responseMap = AC2DMUtil.parseResponse(String(response.responseBytes)) -- GitLab From a75a3799af0b948baf1d53441d58d9868332d4e6 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Thu, 12 Oct 2023 08:36:16 +0200 Subject: [PATCH 7/8] Rename GPlayApiFactory to GooglePlayLoginManagerFactory --- .../foundation/e/apps/data/login/GooglePlayAuthenticator.kt | 6 +++--- ...{GPlayApiFactory.kt => GooglePlayLoginManagerFactory.kt} | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) rename app/src/main/java/foundation/e/apps/data/login/api/{GPlayApiFactory.kt => GooglePlayLoginManagerFactory.kt} (92%) diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt index 0d21095d8..98436bd56 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt @@ -24,7 +24,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User -import foundation.e.apps.data.login.api.GPlayApiFactory +import foundation.e.apps.data.login.api.GooglePlayLoginManagerFactory import foundation.e.apps.data.login.api.GooglePlayLoginManager import foundation.e.apps.data.login.api.GoogleAccountLoginManager import foundation.e.apps.data.login.api.GooglePlayWrapper @@ -47,13 +47,13 @@ class GooglePlayAuthenticator @Inject constructor( ) : StoreAuthenticator, AuthDataValidator { @Inject - lateinit var gPlayApiFactory: GPlayApiFactory + lateinit var loginManagerFactory: GooglePlayLoginManagerFactory private val user: User get() = loginData.getUserType() private val loginManager: GooglePlayLoginManager - get() = gPlayApiFactory.getGPlayApi(user) + get() = loginManagerFactory.createLoginManager(user) private val loggerWrapper: GooglePlayWrapper get() = GooglePlayWrapper(loginManager, user) diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt similarity index 92% rename from app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt index 74ad067d1..19aff3feb 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GPlayApiFactory.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt @@ -27,7 +27,7 @@ import javax.inject.Inject import javax.inject.Singleton @Singleton -class GPlayApiFactory @Inject constructor( +class GooglePlayLoginManagerFactory @Inject constructor( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, @@ -35,7 +35,7 @@ class GPlayApiFactory @Inject constructor( private val loginData: LoginData ) { - fun getGPlayApi(user: User): GooglePlayLoginManager { + fun createLoginManager(user: User): GooglePlayLoginManager { return when (user) { User.GOOGLE -> GoogleAccountLoginManager(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) else -> AnonymousLoginManager(gPlayHttpClient, nativeDeviceProperty, gson) -- GitLab From 9239f47e59b1c119abe3c3b2ef0a92c205266784 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Tue, 17 Oct 2023 08:53:56 +0200 Subject: [PATCH 8/8] Bigger renamings --- .../java/foundation/e/apps/MainActivity.kt | 4 +-- .../foundation/e/apps/data/NetworkHandler.kt | 4 +-- ...eStoreRepository.kt => StoreRepository.kt} | 2 +- .../repositories/CleanApkRepository.kt | 4 +-- .../e/apps/data/fused/FusedApiImpl.kt | 4 +-- ...enticator.kt => PlayStoreAuthenticator.kt} | 30 +++++++++---------- .../data/login/api/AnonymousLoginManager.kt | 6 ++-- ...tLoginManager.kt => GoogleLoginManager.kt} | 10 +++---- ...ginManager.kt => PlayStoreLoginManager.kt} | 2 +- ...ory.kt => PlayStoreLoginManagerFactory.kt} | 10 +++---- ...layWrapper.kt => PlayStoreLoginWrapper.kt} | 16 +++++----- .../PlayStoreRepository.kt} | 6 ++-- .../PlayStoreRepositoryImpl.kt} | 8 ++--- .../{gplay => playstore}/utils/AC2DMTask.kt | 2 +- .../{gplay => playstore}/utils/AC2DMUtil.kt | 2 +- .../utils/CustomAuthValidator.kt | 2 +- .../utils/EglExtensionProvider.kt | 2 +- .../utils/GPlayHttpClient.kt | 2 +- .../utils/NativeDeviceInfoProviderModule.kt | 2 +- .../utils/NativeGsfVersionProvider.kt | 2 +- .../java/foundation/e/apps/di/LoginModule.kt | 4 +-- .../e/apps/di/NamedRepositoryModule.kt | 10 +++---- .../e/apps/ui/AppInfoFetchViewModel.kt | 4 +-- .../apps/ui/parentFragment/TimeoutFragment.kt | 4 +-- .../signin/google/GoogleSignInFragment.kt | 2 +- .../e/apps/fused/FusedApiImplTest.kt | 4 +-- .../e/apps/gplay/GplyHttpClientTest.kt | 2 +- 27 files changed, 75 insertions(+), 75 deletions(-) rename app/src/main/java/foundation/e/apps/data/{BaseStoreRepository.kt => StoreRepository.kt} (96%) rename app/src/main/java/foundation/e/apps/data/login/{GooglePlayAuthenticator.kt => PlayStoreAuthenticator.kt} (88%) rename app/src/main/java/foundation/e/apps/data/login/api/{GoogleAccountLoginManager.kt => GoogleLoginManager.kt} (92%) rename app/src/main/java/foundation/e/apps/data/login/api/{GooglePlayLoginManager.kt => PlayStoreLoginManager.kt} (96%) rename app/src/main/java/foundation/e/apps/data/login/api/{GooglePlayLoginManagerFactory.kt => PlayStoreLoginManagerFactory.kt} (78%) rename app/src/main/java/foundation/e/apps/data/login/api/{GooglePlayWrapper.kt => PlayStoreLoginWrapper.kt} (90%) rename app/src/main/java/foundation/e/apps/data/{gplay/GplayStoreRepository.kt => playstore/PlayStoreRepository.kt} (92%) rename app/src/main/java/foundation/e/apps/data/{gplay/GplayStoreRepositoryImpl.kt => playstore/PlayStoreRepositoryImpl.kt} (97%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/AC2DMTask.kt (98%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/AC2DMUtil.kt (97%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/CustomAuthValidator.kt (97%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/EglExtensionProvider.kt (96%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/GPlayHttpClient.kt (96%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/NativeDeviceInfoProviderModule.kt (96%) rename app/src/main/java/foundation/e/apps/data/{gplay => playstore}/utils/NativeGsfVersionProvider.kt (96%) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index 959edf180..5b94937da 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -40,7 +40,7 @@ import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.login.AuthObject -import foundation.e.apps.data.login.GooglePlayAuthenticator +import foundation.e.apps.data.login.PlayStoreAuthenticator import foundation.e.apps.data.login.LoginViewModel import foundation.e.apps.data.login.exceptions.GPlayValidationException import foundation.e.apps.data.preference.PreferenceManagerModule @@ -308,7 +308,7 @@ class MainActivity : AppCompatActivity() { binding.sessionErrorLayout.visibility = View.VISIBLE binding.retrySessionButton.setOnClickListener { binding.sessionErrorLayout.visibility = View.GONE - loginViewModel.startLoginFlow(listOf(GooglePlayAuthenticator::class.java.simpleName)) + loginViewModel.startLoginFlow(listOf(PlayStoreAuthenticator::class.java.simpleName)) } } } diff --git a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt index 78985de5f..fd736daed 100644 --- a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt @@ -18,8 +18,8 @@ package foundation.e.apps.data -import foundation.e.apps.data.gplay.utils.GPlayHttpClient -import foundation.e.apps.data.gplay.utils.GplayHttpRequestException +import foundation.e.apps.data.playstore.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.GplayHttpRequestException import foundation.e.apps.data.login.exceptions.GPlayException import java.net.SocketTimeoutException diff --git a/app/src/main/java/foundation/e/apps/data/BaseStoreRepository.kt b/app/src/main/java/foundation/e/apps/data/StoreRepository.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/BaseStoreRepository.kt rename to app/src/main/java/foundation/e/apps/data/StoreRepository.kt index 722bfb177..0f8e1e426 100644 --- a/app/src/main/java/foundation/e/apps/data/BaseStoreRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/StoreRepository.kt @@ -18,7 +18,7 @@ package foundation.e.apps.data -interface BaseStoreRepository { +interface StoreRepository { suspend fun getHomeScreenData(): Any suspend fun getAppDetails(packageNameOrId: String): Any? } diff --git a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkRepository.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkRepository.kt index 618e41203..d4ae420c9 100644 --- a/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/cleanapk/repositories/CleanApkRepository.kt @@ -18,7 +18,7 @@ package foundation.e.apps.data.cleanapk.repositories -import foundation.e.apps.data.BaseStoreRepository +import foundation.e.apps.data.StoreRepository import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.search.Search import retrofit2.Response @@ -26,7 +26,7 @@ import retrofit2.Response const val NUMBER_OF_ITEMS = 20 const val NUMBER_OF_PAGES = 1 -interface CleanApkRepository : BaseStoreRepository { +interface CleanApkRepository : StoreRepository { suspend fun getSearchResult(query: String, searchBy: String? = null): Response suspend fun getAppsByCategory(category: String, paginationParameter: Any? = null): Response suspend fun getCategories(): Response diff --git a/app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt b/app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt index d992aa61d..6d67932fa 100644 --- a/app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt @@ -59,7 +59,7 @@ import foundation.e.apps.data.fused.data.Ratings import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fused.utils.CategoryUtils import foundation.e.apps.data.fusedDownload.models.FusedDownload -import foundation.e.apps.data.gplay.GplayStoreRepository +import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.preference.PreferenceManagerModule @@ -86,7 +86,7 @@ class FusedApiImpl @Inject constructor( private val pkgManagerModule: PkgManagerModule, private val pwaManagerModule: PWAManagerModule, private val preferenceManagerModule: PreferenceManagerModule, - @Named("gplayRepository") private val gplayRepository: GplayStoreRepository, + @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, @Named("cleanApkPWARepository") private val cleanApkPWARepository: CleanApkRepository, @ApplicationContext private val context: Context diff --git a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt b/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt similarity index 88% rename from app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt rename to app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt index 98436bd56..0c89311e6 100644 --- a/app/src/main/java/foundation/e/apps/data/login/GooglePlayAuthenticator.kt +++ b/app/src/main/java/foundation/e/apps/data/login/PlayStoreAuthenticator.kt @@ -24,10 +24,10 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.User -import foundation.e.apps.data.login.api.GooglePlayLoginManagerFactory -import foundation.e.apps.data.login.api.GooglePlayLoginManager -import foundation.e.apps.data.login.api.GoogleAccountLoginManager -import foundation.e.apps.data.login.api.GooglePlayWrapper +import foundation.e.apps.data.login.api.PlayStoreLoginManagerFactory +import foundation.e.apps.data.login.api.PlayStoreLoginManager +import foundation.e.apps.data.login.api.GoogleLoginManager +import foundation.e.apps.data.login.api.PlayStoreLoginWrapper import timber.log.Timber import java.util.Locale import javax.inject.Inject @@ -40,23 +40,23 @@ import javax.inject.Singleton * https://gitlab.e.foundation/e/backlog/-/issues/5680 */ @Singleton -class GooglePlayAuthenticator @Inject constructor( +class PlayStoreAuthenticator @Inject constructor( @ApplicationContext private val context: Context, private val gson: Gson, private val loginData: LoginData, ) : StoreAuthenticator, AuthDataValidator { @Inject - lateinit var loginManagerFactory: GooglePlayLoginManagerFactory + lateinit var loginManagerFactory: PlayStoreLoginManagerFactory private val user: User get() = loginData.getUserType() - private val loginManager: GooglePlayLoginManager + private val loginManager: PlayStoreLoginManager get() = loginManagerFactory.createLoginManager(user) - private val loggerWrapper: GooglePlayWrapper - get() = GooglePlayWrapper(loginManager, user) + private val loginWrapper: PlayStoreLoginWrapper + get() = PlayStoreLoginWrapper(loginManager, user) private val locale: Locale get() = context.resources.configuration.locales[0] @@ -146,7 +146,7 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun getAuthDataAnonymously(): ResultSupreme { - return loggerWrapper.login(locale).run { + return loginWrapper.login(locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } @@ -162,14 +162,14 @@ class GooglePlayAuthenticator @Inject constructor( * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { - return loggerWrapper.login(locale) + return loginWrapper.login(locale) } /* * If aasToken is not yet saved / made, fetch it from email and oauthToken. */ - val aasTokenResponse = loggerWrapper.getAasToken( - loginManager as GoogleAccountLoginManager, + val aasTokenResponse = loginWrapper.getAasToken( + loginManager as GoogleLoginManager, email, oauthToken ) @@ -193,7 +193,7 @@ class GooglePlayAuthenticator @Inject constructor( * Finally save the aasToken and create auth data. */ loginData.saveAasToken(aasTokenFetched) - return loggerWrapper.login(locale).run { + return loginWrapper.login(locale).run { if (isSuccess()) ResultSupreme.Success(formatAuthData(this.data!!)) else this } @@ -215,5 +215,5 @@ class GooglePlayAuthenticator @Inject constructor( } private suspend fun isAuthDataValid(savedAuth: AuthData?) = - savedAuth != null && loggerWrapper.validate(savedAuth).exception == null + savedAuth != null && loginWrapper.validate(savedAuth).exception == null } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt index bc4243fff..52b600c43 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/AnonymousLoginManager.kt @@ -20,8 +20,8 @@ package foundation.e.apps.data.login.api import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.google.gson.Gson -import foundation.e.apps.data.gplay.utils.CustomAuthValidator -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.CustomAuthValidator +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties @@ -30,7 +30,7 @@ class AnonymousLoginManager( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val gson: Gson, -) : GooglePlayLoginManager { +) : PlayStoreLoginManager { private val tokenUrl: String = "https://eu.gtoken.ecloud.global" diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt b/app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginManager.kt similarity index 92% rename from app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt rename to app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginManager.kt index 00f9ec0ca..c0d5eff3c 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GoogleAccountLoginManager.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/GoogleLoginManager.kt @@ -20,20 +20,20 @@ package foundation.e.apps.data.login.api import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.helpers.AuthHelper -import foundation.e.apps.data.gplay.utils.AC2DMTask -import foundation.e.apps.data.gplay.utils.CustomAuthValidator -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.AC2DMTask +import foundation.e.apps.data.playstore.utils.CustomAuthValidator +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.login.LoginData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.Properties -class GoogleAccountLoginManager( +class GoogleLoginManager( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, private val loginData: LoginData -) : GooglePlayLoginManager { +) : PlayStoreLoginManager { /** * Get PlayResponse for AC2DM Map. This allows us to get an error message too. diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManager.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt rename to app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManager.kt index 25f69432a..12fad6b6d 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManager.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManager.kt @@ -20,7 +20,7 @@ package foundation.e.apps.data.login.api import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse -interface GooglePlayLoginManager { +interface PlayStoreLoginManager { suspend fun login(): AuthData? suspend fun validate(authData: AuthData): PlayResponse } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManagerFactory.kt similarity index 78% rename from app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt rename to app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManagerFactory.kt index 19aff3feb..784532df9 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayLoginManagerFactory.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginManagerFactory.kt @@ -19,15 +19,15 @@ package foundation.e.apps.data.login.api import com.google.gson.Gson import foundation.e.apps.data.enums.User -import foundation.e.apps.data.gplay.utils.AC2DMTask -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.AC2DMTask +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.login.LoginData import java.util.Properties import javax.inject.Inject import javax.inject.Singleton @Singleton -class GooglePlayLoginManagerFactory @Inject constructor( +class PlayStoreLoginManagerFactory @Inject constructor( private val gPlayHttpClient: GPlayHttpClient, private val nativeDeviceProperty: Properties, private val aC2DMTask: AC2DMTask, @@ -35,9 +35,9 @@ class GooglePlayLoginManagerFactory @Inject constructor( private val loginData: LoginData ) { - fun createLoginManager(user: User): GooglePlayLoginManager { + fun createLoginManager(user: User): PlayStoreLoginManager { return when (user) { - User.GOOGLE -> GoogleAccountLoginManager(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) + User.GOOGLE -> GoogleLoginManager(gPlayHttpClient, nativeDeviceProperty, aC2DMTask, loginData) else -> AnonymousLoginManager(gPlayHttpClient, nativeDeviceProperty, gson) } } diff --git a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginWrapper.kt similarity index 90% rename from app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt rename to app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginWrapper.kt index 1c2188fb5..ddb836357 100644 --- a/app/src/main/java/foundation/e/apps/data/login/api/GooglePlayWrapper.kt +++ b/app/src/main/java/foundation/e/apps/data/login/api/PlayStoreLoginWrapper.kt @@ -21,27 +21,27 @@ import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.User -import foundation.e.apps.data.gplay.utils.AC2DMUtil +import foundation.e.apps.data.playstore.utils.AC2DMUtil import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.exceptions.GPlayLoginException import java.util.Locale /** - * Call methods of [GoogleAccountLoginManager] and [AnonymousLoginManager] from here. + * Call methods of [GoogleLoginManager] and [AnonymousLoginManager] from here. * * Dependency Injection via hilt is not possible, - * we need to manually check login type, create an instance of either [GoogleAccountLoginManager] + * we need to manually check login type, create an instance of either [GoogleLoginManager] * or [AnonymousLoginManager] and pass it to [loginManager]. * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 */ -class GooglePlayWrapper constructor( - private val loginManager: GooglePlayLoginManager, +class PlayStoreLoginWrapper constructor( + private val loginManager: PlayStoreLoginManager, private val user: User, ) { /** - * Gets the auth data from instance of [GooglePlayLoginManager]. + * Gets the auth data from instance of [PlayStoreLoginManager]. */ suspend fun login(locale: Locale): ResultSupreme { val result = handleNetworkResult { @@ -93,12 +93,12 @@ class GooglePlayWrapper constructor( * * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5680 * - * @param googleAccountLoginManager An instance of [GoogleAccountLoginManager] must be passed, this method + * @param googleAccountLoginManager An instance of [GoogleLoginManager] must be passed, this method * cannot work on [loginManager] as it is a common interface for both Google and Anonymous * login, but this method is only for Google login. */ suspend fun getAasToken( - googleAccountLoginManager: GoogleAccountLoginManager, + googleAccountLoginManager: GoogleLoginManager, email: String, oauthToken: String ): ResultSupreme { diff --git a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepository.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt similarity index 92% rename from app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepository.kt rename to app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt index 5ad24dc43..5f82c8e53 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt @@ -16,17 +16,17 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay +package foundation.e.apps.data.playstore import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.File import com.aurora.gplayapi.data.models.SearchBundle -import foundation.e.apps.data.BaseStoreRepository +import foundation.e.apps.data.StoreRepository import foundation.e.apps.data.fused.utils.CategoryType -interface GplayStoreRepository : BaseStoreRepository { +interface PlayStoreRepository : StoreRepository { suspend fun getSearchResult(query: String, subBundle: MutableSet?): Pair, MutableSet> suspend fun getSearchSuggestions(query: String): List suspend fun getAppsByCategory(category: String, pageUrl: String? = null): Any diff --git a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepositoryImpl.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt rename to app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepositoryImpl.kt index 180b8e5fe..96c35cf8d 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/GplayStoreRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepositoryImpl.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay +package foundation.e.apps.data.playstore import android.content.Context import com.aurora.gplayapi.SearchSuggestEntry @@ -36,18 +36,18 @@ import com.aurora.gplayapi.helpers.TopChartsHelper import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.fused.utils.CategoryType -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.login.AuthenticatorRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber import javax.inject.Inject -class GplayStoreRepositoryImpl @Inject constructor( +class PlayStoreRepositoryImpl @Inject constructor( @ApplicationContext private val context: Context, private val gPlayHttpClient: GPlayHttpClient, private val authenticatorRepository: AuthenticatorRepository -) : GplayStoreRepository { +) : PlayStoreRepository { override suspend fun getHomeScreenData(): Any { val homeScreenData = mutableMapOf>() diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMTask.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMTask.kt similarity index 98% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMTask.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMTask.kt index 448c45904..f1e3eb3eb 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMTask.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMTask.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import com.aurora.gplayapi.data.models.PlayResponse import okhttp3.RequestBody.Companion.toRequestBody diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMUtil.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMUtil.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMUtil.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMUtil.kt index fefe386eb..cba734aac 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/AC2DMUtil.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/AC2DMUtil.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import java.util.StringTokenizer import java.util.regex.Pattern diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/CustomAuthValidator.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt similarity index 97% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/CustomAuthValidator.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt index 2bfb68252..e2654d240 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/CustomAuthValidator.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/CustomAuthValidator.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import com.aurora.gplayapi.GooglePlayApi import com.aurora.gplayapi.data.models.AuthData diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/EglExtensionProvider.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/EglExtensionProvider.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/EglExtensionProvider.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/EglExtensionProvider.kt index 3b36d3d2a..ad877ee28 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/EglExtensionProvider.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/EglExtensionProvider.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import android.opengl.GLES10 import android.text.TextUtils diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/GPlayHttpClient.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/GPlayHttpClient.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt index 2bfd5578a..8b7737c68 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/GPlayHttpClient.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/GPlayHttpClient.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import androidx.annotation.VisibleForTesting import com.aurora.gplayapi.data.models.PlayResponse diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/NativeDeviceInfoProviderModule.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/NativeDeviceInfoProviderModule.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/NativeDeviceInfoProviderModule.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/NativeDeviceInfoProviderModule.kt index 53a70ff93..ae3d2ef6f 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/NativeDeviceInfoProviderModule.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/NativeDeviceInfoProviderModule.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import android.app.ActivityManager import android.content.Context diff --git a/app/src/main/java/foundation/e/apps/data/gplay/utils/NativeGsfVersionProvider.kt b/app/src/main/java/foundation/e/apps/data/playstore/utils/NativeGsfVersionProvider.kt similarity index 96% rename from app/src/main/java/foundation/e/apps/data/gplay/utils/NativeGsfVersionProvider.kt rename to app/src/main/java/foundation/e/apps/data/playstore/utils/NativeGsfVersionProvider.kt index 40ab7b2fc..175b8f511 100644 --- a/app/src/main/java/foundation/e/apps/data/gplay/utils/NativeGsfVersionProvider.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/utils/NativeGsfVersionProvider.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package foundation.e.apps.data.gplay.utils +package foundation.e.apps.data.playstore.utils import android.content.Context import android.content.pm.PackageManager diff --git a/app/src/main/java/foundation/e/apps/di/LoginModule.kt b/app/src/main/java/foundation/e/apps/di/LoginModule.kt index 4347316c4..ac964187d 100644 --- a/app/src/main/java/foundation/e/apps/di/LoginModule.kt +++ b/app/src/main/java/foundation/e/apps/di/LoginModule.kt @@ -22,7 +22,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import foundation.e.apps.data.login.CleanApkAuthenticator -import foundation.e.apps.data.login.GooglePlayAuthenticator +import foundation.e.apps.data.login.PlayStoreAuthenticator import foundation.e.apps.data.login.StoreAuthenticator @InstallIn(SingletonComponent::class) @@ -31,7 +31,7 @@ object LoginModule { @Provides fun providesAuthenticators( - gPlay: GooglePlayAuthenticator, + gPlay: PlayStoreAuthenticator, cleanApk: CleanApkAuthenticator, ): List { return listOf(gPlay, cleanApk) diff --git a/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt b/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt index 34d20ae09..e3d60030b 100644 --- a/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt +++ b/app/src/main/java/foundation/e/apps/di/NamedRepositoryModule.kt @@ -29,9 +29,9 @@ import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.cleanapk.repositories.CleanApkAppsRepositoryImpl import foundation.e.apps.data.cleanapk.repositories.CleanApkPWARepository import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository -import foundation.e.apps.data.gplay.GplayStoreRepository -import foundation.e.apps.data.gplay.GplayStoreRepositoryImpl -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.PlayStoreRepository +import foundation.e.apps.data.playstore.PlayStoreRepositoryImpl +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.login.AuthenticatorRepository import javax.inject.Named import javax.inject.Singleton @@ -46,8 +46,8 @@ object NamedRepositoryModule { @ApplicationContext context: Context, gPlayHttpClient: GPlayHttpClient, authenticatorRepository: AuthenticatorRepository - ): GplayStoreRepository { - return GplayStoreRepositoryImpl(context, gPlayHttpClient, authenticatorRepository) + ): PlayStoreRepository { + return PlayStoreRepositoryImpl(context, gPlayHttpClient, authenticatorRepository) } @Singleton diff --git a/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt b/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt index 3cf70583f..a9afde8e4 100644 --- a/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt @@ -10,7 +10,7 @@ import foundation.e.apps.data.blockedApps.BlockedAppRepository import foundation.e.apps.data.faultyApps.FaultyAppRepository import foundation.e.apps.data.fdroid.FdroidRepository import foundation.e.apps.data.fused.data.FusedApp -import foundation.e.apps.data.gplay.GplayStoreRepository +import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.DataStoreModule import javax.inject.Inject import javax.inject.Named @@ -21,7 +21,7 @@ import javax.inject.Named @HiltViewModel class AppInfoFetchViewModel @Inject constructor( private val fdroidRepository: FdroidRepository, - @Named("gplayRepository") private val gplayRepository: GplayStoreRepository, + @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val faultyAppRepository: FaultyAppRepository, private val dataStoreModule: DataStoreModule, private val blockedAppRepository: BlockedAppRepository, diff --git a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt index f529755c7..11ab0653f 100644 --- a/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/parentFragment/TimeoutFragment.kt @@ -33,7 +33,7 @@ import androidx.lifecycle.ViewModelProvider import foundation.e.apps.R import foundation.e.apps.data.enums.User import foundation.e.apps.data.login.AuthObject -import foundation.e.apps.data.login.GooglePlayAuthenticator +import foundation.e.apps.data.login.PlayStoreAuthenticator import foundation.e.apps.data.login.LoginViewModel import foundation.e.apps.data.login.exceptions.CleanApkException import foundation.e.apps.data.login.exceptions.GPlayException @@ -206,7 +206,7 @@ abstract class TimeoutFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { * Clears saved GPlay AuthData and restarts login process to get */ fun clearAndRestartGPlayLogin() { - loginViewModel.startLoginFlow(listOf(GooglePlayAuthenticator::class.java.simpleName)) + loginViewModel.startLoginFlow(listOf(PlayStoreAuthenticator::class.java.simpleName)) } /** diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt index 8dc3081b3..ac4e98dd8 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt @@ -31,7 +31,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.findNavController import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R -import foundation.e.apps.data.gplay.utils.AC2DMUtil +import foundation.e.apps.data.playstore.utils.AC2DMUtil import foundation.e.apps.data.login.LoginViewModel import foundation.e.apps.databinding.FragmentGoogleSigninBinding import foundation.e.apps.di.CommonUtilsModule.safeNavigate diff --git a/app/src/test/java/foundation/e/apps/fused/FusedApiImplTest.kt b/app/src/test/java/foundation/e/apps/fused/FusedApiImplTest.kt index bc91a6ff9..9b5ee5030 100644 --- a/app/src/test/java/foundation/e/apps/fused/FusedApiImplTest.kt +++ b/app/src/test/java/foundation/e/apps/fused/FusedApiImplTest.kt @@ -38,7 +38,7 @@ import foundation.e.apps.data.fused.FusedApiImpl import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.utils.CategoryType -import foundation.e.apps.data.gplay.GplayStoreRepository +import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.install.pkg.PWAManagerModule import foundation.e.apps.install.pkg.PkgManagerModule import foundation.e.apps.util.MainCoroutineRule @@ -93,7 +93,7 @@ class FusedApiImplTest { private lateinit var cleanApkPWARepository: CleanApkRepository @Mock - private lateinit var gPlayAPIRepository: GplayStoreRepository + private lateinit var gPlayAPIRepository: PlayStoreRepository private lateinit var preferenceManagerModule: FakePreferenceModule diff --git a/app/src/test/java/foundation/e/apps/gplay/GplyHttpClientTest.kt b/app/src/test/java/foundation/e/apps/gplay/GplyHttpClientTest.kt index 38aa99e04..89c5e9f81 100644 --- a/app/src/test/java/foundation/e/apps/gplay/GplyHttpClientTest.kt +++ b/app/src/test/java/foundation/e/apps/gplay/GplyHttpClientTest.kt @@ -19,7 +19,7 @@ package foundation.e.apps.gplay import com.aurora.gplayapi.data.models.PlayResponse -import foundation.e.apps.data.gplay.utils.GPlayHttpClient +import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.login.AuthObject import foundation.e.apps.util.FakeCall import foundation.e.apps.util.MainCoroutineRule -- GitLab