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

Verified Commit 89f0b70e authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

refactor(install): move InstallationProcessor to data module

parent 8bc413ac
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ package foundation.e.apps.data.install.core
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.enums.ResultStatus
import foundation.e.apps.data.install.AppManagerWrapper
import foundation.e.apps.data.installation.core.InstallationProcessor
import foundation.e.apps.data.installation.model.AppInstall
import foundation.e.apps.data.installation.model.InstallationResult
import foundation.e.apps.domain.model.install.Status
import javax.inject.Inject

@@ -71,5 +73,13 @@ class AppInstallationFacade @Inject constructor(
        runInForeground: (suspend (String) -> Unit)
    ): Result<ResultStatus> {
        return installationProcessor.processInstall(fusedDownloadId, isItUpdateWork, runInForeground)
            .map { installationResult ->
                when (installationResult) {
                    InstallationResult.OK -> ResultStatus.OK
                    InstallationResult.TIMEOUT -> ResultStatus.TIMEOUT
                    InstallationResult.UNKNOWN -> ResultStatus.UNKNOWN
                    InstallationResult.RETRY -> ResultStatus.RETRY
                }
            }
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -26,9 +26,10 @@ import foundation.e.apps.data.enums.Type
import foundation.e.apps.data.install.AppManagerWrapper
import foundation.e.apps.data.install.core.AppInstallationFacade
import foundation.e.apps.data.install.core.InstallationEnqueuer
import foundation.e.apps.data.install.core.InstallationProcessor
import foundation.e.apps.data.install.core.InstallationRequest
import foundation.e.apps.data.installation.model.AppInstall
import foundation.e.apps.data.installation.model.InstallationResult
import foundation.e.apps.data.installation.core.InstallationProcessor
import foundation.e.apps.domain.model.install.Status
import foundation.e.apps.util.MainCoroutineRule
import io.mockk.coEvery
@@ -115,7 +116,7 @@ class AppInstallationFacadeTest {
    fun processInstall_delegatesResult() = runTest {
        coEvery {
            installationProcessor.processInstall("123", false, any())
        } returns Result.success(ResultStatus.OK)
        } returns Result.success(InstallationResult.OK)

        val result = appInstallationFacade.processInstall("123", false) {
            // _ignored_
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import foundation.e.apps.data.installation.repository.AppInstallRepository
import foundation.e.apps.data.install.AppManager
import foundation.e.apps.data.install.download.DownloadManagerUtils
import foundation.e.apps.data.installation.model.AppInstall
import foundation.e.apps.data.install.core.InstallationProcessor
import foundation.e.apps.data.installation.core.InstallationProcessor
import foundation.e.apps.data.install.core.helper.InstallationCompletionHandler
import foundation.e.apps.domain.model.install.Status
import foundation.e.apps.util.MainCoroutineRule
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ dependencies {
    implementation libs.lifecycle.livedata.ktx
    implementation libs.room.ktx
    implementation libs.room.runtime
    implementation libs.timber

    ksp libs.room.compiler
    ksp libs.hilt.compile
+5 −23
Original line number Diff line number Diff line
/*
 * Copyright (C) 2026 e Foundation
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 */

package foundation.e.apps.data.install.core

import foundation.e.apps.data.enums.ResultStatus
package foundation.e.apps.data.installation.core

import foundation.e.apps.data.installation.model.AppInstall
import foundation.e.apps.data.installation.model.InstallationResult
import foundation.e.apps.data.installation.port.InstallationAppManager
import foundation.e.apps.data.installation.port.InstallationCompletionNotifier
import foundation.e.apps.data.installation.port.InstallationDownloadStatusUpdater
@@ -43,7 +25,7 @@ class InstallationProcessor @Inject constructor(
        fusedDownloadId: String,
        isItUpdateWork: Boolean,
        runInForeground: suspend (String) -> Unit
    ): Result<ResultStatus> {
    ): Result<InstallationResult> {
        val appInstall =
            appInstallRepository.getDownloadById(fusedDownloadId) ?: return Result.failure(
                IllegalStateException("App can't be null here.")
@@ -81,7 +63,7 @@ class InstallationProcessor @Inject constructor(
            startAppInstallationProcess(appInstall, isUpdateWork)
            Timber.i("doWork: RESULT SUCCESS: ${appInstall.name}")

            ResultStatus.OK
            InstallationResult.OK
        }.onFailure { exception ->
            if (exception is CancellationException) {
                throw exception
Loading