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

Commit 2abcc41e authored by Nishant Dande's avatar Nishant Dande
Browse files

Update codebase with necessary changes

parent ca157f9c
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -153,6 +153,8 @@ allOpen {

dependencies {

    implementation project(':modules')

    // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628
    api files('libs/splitinstall-lib.jar')

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

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


interface LoginRepository {

    suspend fun anonymousUser(
        authDataRequestBody: AnonymousAuthDataRequestBody
    ): AuthDataResponse
    ): AuthData

}
 No newline at end of file
+15 −7
Original line number Diff line number Diff line
package foundation.e.apps.domain.login.repository

import android.content.Context
import app.lounge.login.anonymous.AnonymousUser
import app.lounge.model.AnonymousAuthDataRequestBody
import app.lounge.model.AuthDataResponse
import app.lounge.networking.NetworkFetching
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 javax.inject.Inject

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

    override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthDataResponse {
        return networkFetching.requestAuthData(
    override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthData {
        val result = networkFetching.requestAuthData(
            anonymousAuthDataRequestBody = authDataRequestBody
        ).also {
            applicationContext.configurations.authData = it.toString()
        )

        when(result) {
            is NetworkResult.Error ->
                throw Exception(result.errorMessage, result.exception)
            is NetworkResult.Success -> {
                applicationContext.configurations.authData = result.data.toString()
                return result.data
            }
        }
    }

+5 −7
Original line number Diff line number Diff line
package foundation.e.apps.domain.login.usecase

import app.lounge.model.AnonymousAuthDataRequestBody
import app.lounge.model.AuthDataResponse
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
@@ -18,20 +18,18 @@ class UserLoginUseCase @Inject constructor(
    suspend operator fun invoke(
        properties: Properties,
        userAgent: String
    ): Resource<AuthDataResponse> = flow {
    ): Resource<AuthData> = flow {
        try {
            emit(Resource.Loading())
            val userResponse: AuthDataResponse = loginRepository.anonymousUser(
            val userResponse = loginRepository.anonymousUser(
                authDataRequestBody = AnonymousAuthDataRequestBody(
                    properties = properties,
                    userAgent = userAgent
                )
            )
            emit(Resource.Success(userResponse))
        } catch(e: HttpException) {
            emit(Resource.Error(e.localizedMessage ?: "An unexpected error occured"))
        } catch(e: IOException) {
            emit(Resource.Error("Couldn't reach server. Check your internet connection."))
        } catch(e: Exception) {
            emit(Resource.Error(e.localizedMessage))
        }
    }.single()
}
 No newline at end of file
+12 −10
Original line number Diff line number Diff line
@@ -2,11 +2,6 @@ package foundation.e.apps.usecase.repository

import android.content.Context
import androidx.test.core.app.ApplicationProvider
import app.lounge.model.AuthDataResponse
import app.lounge.networking.NetworkFetching
import foundation.e.apps.testAnonymousRequestBodyData
import foundation.e.apps.domain.login.repository.LoginRepositoryImpl
import foundation.e.apps.testAnonymousResponseData
import kotlinx.coroutines.test.runTest
import org.junit.Assert
import org.junit.Before
@@ -17,11 +12,18 @@ import org.mockito.Mockito
import org.mockito.MockitoAnnotations
import org.robolectric.RobolectricTestRunner

import foundation.e.apps.domain.login.repository.LoginRepositoryImpl
import foundation.e.apps.testAnonymousRequestBodyData
import foundation.e.apps.testAnonymousResponseData

import app.lounge.login.anonymous.AnonymousUser
import app.lounge.networking.NetworkResult

@RunWith(RobolectricTestRunner::class)
class LoginRepositoryTest {

    @Mock
    lateinit var networkAPI:  NetworkFetching
    lateinit var anonymousUser:  AnonymousUser

    private lateinit var instrumentationContext: Context

@@ -34,11 +36,11 @@ class LoginRepositoryTest {

    @Test
    fun testRequestAuthData() = runTest {
        Mockito.`when`(networkAPI.requestAuthData(testAnonymousRequestBodyData))
            .thenReturn(testAnonymousResponseData)
        Mockito.`when`(anonymousUser.requestAuthData(testAnonymousRequestBodyData))
            .thenReturn(NetworkResult.Success(testAnonymousResponseData))

        val loginRepository = LoginRepositoryImpl(networkAPI, instrumentationContext)
        val result: AuthDataResponse = loginRepository.anonymousUser(testAnonymousRequestBodyData)
        val loginRepository = LoginRepositoryImpl(anonymousUser, instrumentationContext)
        val result = loginRepository.anonymousUser(testAnonymousRequestBodyData)
        Assert.assertNotNull(result)
        Assert.assertEquals("eOS@murena.io", result.email)
    }