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

Commit 28e84f90 authored by Nishant Dande's avatar Nishant Dande
Browse files

Merge branch '1430-anonymous-domain-layer' into 1456-integrate-anonymous-user

# Conflicts:
#	app/build.gradle
#	app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepository.kt
#	app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepositoryImpl.kt
#	app/src/main/java/foundation/e/apps/domain/login/usecase/UserLoginUseCase.kt
#	app/src/main/java/foundation/e/apps/utils/Resource.kt
#	app/src/test/java/foundation/e/apps/Shared.kt
parents a1d79950 e4219815
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -170,7 +170,6 @@ dependencies {
    implementation "androidx.datastore:datastore-preferences:1.0.0"
    implementation 'com.facebook.shimmer:shimmer:0.5.0'
    implementation 'androidx.core:core-google-shortcuts:1.0.0'
    implementation 'androidx.test.ext:junit-ktx:1.1.5'
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
    testImplementation "com.google.truth:truth:1.1.3"
    testImplementation 'junit:junit:4.13.2'
@@ -260,7 +259,6 @@ dependencies {
    // elib
    implementation 'foundation.e:elib:0.0.1-alpha11'


    testImplementation 'org.mockito:mockito-core:5.0.0'
    testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0'
    testImplementation 'org.robolectric:robolectric:4.9'
+2 −8
Original line number Diff line number Diff line
@@ -16,17 +16,11 @@
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


package foundation.e.apps.domain.login.repository

import app.lounge.model.AnonymousAuthDataRequestBody
import com.aurora.gplayapi.data.models.AuthData


interface LoginRepository {

    suspend fun anonymousUser(
        authDataRequestBody: AnonymousAuthDataRequestBody
    ): AuthData

    suspend fun anonymousUser(): AuthData
}
+15 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


package foundation.e.apps.domain.login.repository

import android.content.Context
@@ -26,16 +25,24 @@ import app.lounge.networking.NetworkResult
import app.lounge.storage.cache.configurations
import com.aurora.gplayapi.data.models.AuthData
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.utils.SystemInfoProvider
import java.util.Properties
import javax.inject.Inject

class LoginRepositoryImpl @Inject constructor(
    private val networkFetching: AnonymousUser,
    @ApplicationContext val applicationContext: Context
    @ApplicationContext val applicationContext: Context,
    private val properties: Properties,
    private val anonymousUser: AnonymousUser,
) : LoginRepository {

    override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthData {
        val result = networkFetching.requestAuthData(
            anonymousAuthDataRequestBody = authDataRequestBody
    private val userAgent: String by lazy { SystemInfoProvider.getAppBuildInfo() }

    override suspend fun anonymousUser(): AuthData {
        val result = anonymousUser.requestAuthData(
            anonymousAuthDataRequestBody = AnonymousAuthDataRequestBody(
                properties = properties,
                userAgent = userAgent
            )
        )

        when (result) {
@@ -47,5 +54,4 @@ class LoginRepositoryImpl @Inject constructor(
            }
        }
    }

}
+6 −19
Original line number Diff line number Diff line
@@ -16,39 +16,26 @@
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


package foundation.e.apps.domain.login.usecase

import app.lounge.model.AnonymousAuthDataRequestBody
import com.aurora.gplayapi.data.models.AuthData
import foundation.e.apps.domain.login.repository.LoginRepository
import foundation.e.apps.utils.Resource
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.single
import retrofit2.HttpException
import java.io.IOException
import java.util.Properties
import javax.inject.Inject

class UserLoginUseCase @Inject constructor(
    private val loginRepository: LoginRepository,
) {

    suspend operator fun invoke(
        properties: Properties,
        userAgent: String
    ): Resource<AuthData> = flow {
    fun anonymousUser(): Flow<Resource<AuthData>> = flow {
        try {
            emit(Resource.Loading())
            val userResponse = loginRepository.anonymousUser(
                authDataRequestBody = AnonymousAuthDataRequestBody(
                    properties = properties,
                    userAgent = userAgent
                )
            )
            val userResponse = loginRepository.anonymousUser()
            emit(Resource.Success(userResponse))
        } catch (e: Exception) {
            emit(Resource.Error(e.localizedMessage))
        }
    }.single()
    }
}
+15 −2
Original line number Diff line number Diff line
@@ -16,12 +16,25 @@
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


package foundation.e.apps.utils


/**
 * Class represents the different states of a resource for user case layer
 */
sealed class Resource<T>(val data: T? = null, val message: String? = null) {
    /**
     * Represents a successful state of the resource with data.
     * @param data The data associated with the resource.
     */
    class Success<T>(data: T) : Resource<T>(data)
    /**
     * Represents an error state of the resource with an error message.
     * @param message The error message associated with the resource.
     */
    class Error<T>(message: String, data: T? = null) : Resource<T>(data, message)

    /**
     * Represents a loading state of the resource.
     */
    class Loading<T>(data: T? = null) : Resource<T>(data)
}
Loading