Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c511b99 authored by Hasib Prince's avatar Hasib Prince
Browse files

Google sign in integrated

parent 7c4f92b4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@ 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.domain.login.repository.GoogleLoginRepository
import foundation.e.apps.domain.login.repository.GoogleLoginRepositoryImpl
import foundation.e.apps.domain.login.repository.LoginRepositoryImpl
import foundation.e.apps.domain.login.usecase.GplayLoginUseCase
import foundation.e.apps.domain.login.usecase.UserLoginUseCase

@InstallIn(SingletonComponent::class)
@@ -45,4 +48,11 @@ object LoginModule {
    ): UserLoginUseCase {
        return UserLoginUseCase(loginRepositoryImpl)
    }

    @Provides
    fun provideGoogleLoginUseCase(
        loginRepositoryImpl: GoogleLoginRepositoryImpl
    ): GplayLoginUseCase {
        return GplayLoginUseCase(loginRepositoryImpl)
    }
}
+1 −1
Original line number Diff line number Diff line
package foundation.e.apps.domain.login
package foundation.e.apps.domain.login.repository

import java.util.StringTokenizer

+2 −2
Original line number Diff line number Diff line
package foundation.e.apps.domain.login
package foundation.e.apps.domain.login.repository

import com.aurora.gplayapi.data.models.AuthData

interface GoogleLoginRepository {
    suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData?
    suspend fun getGoogleLoginAuthData(email: String, oauthToken: String?): AuthData?
    suspend fun validate(): Boolean
}
 No newline at end of file
+26 −7
Original line number Diff line number Diff line
package foundation.e.apps.domain.login
package foundation.e.apps.domain.login.repository

import android.content.Context
import app.lounge.login.google.GoogleLoginApi
import app.lounge.networking.NetworkResult
import app.lounge.storage.cache.configurations
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.data.models.PlayResponse
import com.aurora.gplayapi.helpers.AuthHelper
import dagger.hilt.android.qualifiers.ApplicationContext
import timber.log.Timber
import java.lang.Exception
import java.util.Properties
import javax.inject.Inject

class GoogleLoginRepositoryImpl @Inject constructor(
    @ApplicationContext private val context: Context,
    private val googleLoginApi: GoogleLoginApi,
    private val properties: Properties
) : GoogleLoginRepository {

    override suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData? {
    override suspend fun getGoogleLoginAuthData(email: String, oauthToken: String?): AuthData? {
        val aasToken = context.configurations.aasToken

        if (oauthToken.isNullOrEmpty() && aasToken.isNotEmpty()) {
            return AuthHelper.build(email, aasToken, properties)
        }

        return fetchAuthData(oauthToken, email)
    }

    private suspend fun fetchAuthData(oauthToken: String?, email: String): AuthData? {
        oauthToken?.let {
            val result = googleLoginApi.getAuthTokenPlayResponse(email, oauthToken)
            return when (result) {
                is NetworkResult.Success -> handleAuthTokenPlayResponseSuccess(result, email)
@@ -23,6 +38,9 @@ class GoogleLoginRepositoryImpl @Inject constructor(
            }
        }

        return null
    }

    private fun handleAuthTokenPlayResponseSuccess(
        result: NetworkResult.Success<PlayResponse>,
        email: String
@@ -30,9 +48,10 @@ class GoogleLoginRepositoryImpl @Inject constructor(
        if (result.data.isSuccessful) {
            val parsedResult =
                AuthTokenPlayResponseParser.parseResponse(String(result.data.responseBytes))

            val token = parsedResult["Token"] ?: ""
            Timber.d("Parsed token: $token")
            //TODO save token in the preferences
            context.configurations.aasToken = token
            return AuthHelper.build(email, token, properties)
        }
        return null
+3 −0
Original line number Diff line number Diff line
package foundation.e.apps.domain.login.usecase

open class BaseUseCase
 No newline at end of file
Loading