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

Commit a8b0271b authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

refactor: rewrite getSystemAppInfo & getSystemAppUpdateInfo from SystemAppsUpdatesRepository.kt

The goal was to handle some potential NULL in a better way
and also remove two unused import
parent 8b9a1d45
Loading
Loading
Loading
Loading
+21 −21
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import foundation.e.apps.data.gitlab.models.toApplication
import foundation.e.apps.data.handleNetworkResult
import foundation.e.apps.install.pkg.AppLoungePackageManager
import foundation.e.apps.utils.SystemInfoProvider
import retrofit2.Response
import javax.inject.Inject
import javax.inject.Singleton
import timber.log.Timber
@@ -115,18 +114,9 @@ class SystemAppsUpdatesRepository @Inject constructor(

        val systemAppProject = systemAppProjectList.find { it.packageName == packageName } ?: return null

        val systemAppInfo = getSystemAppInfo(systemAppProject, releaseType) ?: return null

        val response = getSystemAppInfo(systemAppProject, releaseType)
        if (response == null) { //todo refactor to avoid checking this
            Timber.e("Can't get latest release for : $packageName")
            return null
        }
        val systemAppInfo = response?.body()

        return if (systemAppInfo == null) {
            Timber.e("Null app info for: $packageName, response: ${response.errorBody()?.string()}")
            null
        } else if (isSystemAppBlocked(systemAppInfo, sdkLevel, device)) {
        return if (isSystemAppBlocked(systemAppInfo, sdkLevel, device)) {
            Timber.e("Blocked system app: $packageName, details: $systemAppInfo")
            null
        } else {
@@ -134,19 +124,30 @@ class SystemAppsUpdatesRepository @Inject constructor(
        }
    }

    private suspend fun getSystemAppInfo(systemAppProject: SystemAppProject, releaseType: String): Response<SystemAppInfo>? {
    private suspend fun getSystemAppInfo(
        systemAppProject: SystemAppProject,
        releaseType: String
    ): SystemAppInfo? {

        val projectId = systemAppProject.projectId

        return if (systemAppProject.dependsOnAndroidVersion) {
            val latestReleaseTag = getLatestReleaseByAndroidVersion(projectId)?.tagName
        val response = if (systemAppProject.dependsOnAndroidVersion) {
            val latestRelease = getLatestReleaseByAndroidVersion(projectId) ?: run {
                Timber.e("No release found for project $projectId")
                return null
            }

            systemAppDefinitionApi.getSystemAppUpdateInfoByTag(projectId, latestRelease.tagName, releaseType)

            if (latestReleaseTag == null) {
                null
        } else {
                systemAppDefinitionApi.getSystemAppUpdateInfoByTag(projectId, latestReleaseTag, releaseType)
            systemAppDefinitionApi.getLatestSystemAppUpdateInfo(projectId, releaseType)
        }

        return if (response.isSuccessful ) {
            response.body()
        } else {
            systemAppDefinitionApi.getLatestSystemAppUpdateInfo(projectId, releaseType)
            Timber.e("Can't get AppInfo for ${systemAppProject.packageName}, response: ${response.errorBody()?.string()}")
            null
        }
    }

@@ -222,5 +223,4 @@ class SystemAppsUpdatesRepository @Inject constructor(

        return updateList
    }

}