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

Commit 60d90868 authored by dev-12's avatar dev-12 Committed by dev-12
Browse files

refactor: return fetch status and simplify control flow

Return a status so callers can react to failures instead of failing silently, and simplify control flow by making non‑success/empty responses explicit failures.
parent 29e42e0a
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package foundation.e.apps.data.gitlab
import android.content.Context
import android.os.Build
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.data.ResultSupreme
import foundation.e.apps.data.application.ApplicationDataManager
import foundation.e.apps.data.application.data.Application
import foundation.e.apps.data.enums.Source
@@ -63,7 +64,7 @@ class SystemAppsUpdatesRepository @Inject constructor(
        return systemAppProjectList.map { it.packageName }
    }

    suspend fun fetchUpdatableSystemApps(forceRefresh: Boolean = false) {
    suspend fun fetchUpdatableSystemApps(forceRefresh: Boolean = false): ResultSupreme<Unit> {
        val result = handleNetworkResult {
            if (getUpdatableSystemApps().isNotEmpty() && !forceRefresh) {
                return@handleNetworkResult
@@ -71,18 +72,22 @@ class SystemAppsUpdatesRepository @Inject constructor(

            val endPoint = getUpdatableSystemAppEndPoint()
            val response = updatableSystemAppsApi.getUpdatableSystemApps(endPoint)
            check(response.isSuccessful) {
                "request failed! code : (${response.code()})"
            }
            val body = response.body()
            if (body.isNullOrEmpty()) {
                error("response is empty! despite response indicating success")
            }

            if (response.isSuccessful && !response.body().isNullOrEmpty()) {
            systemAppProjectList.clear()
                response.body()?.let { systemAppProjectList.addAll(it) }
            } else {
                Timber.e("Failed to fetch updatable apps: ${response.errorBody()?.string()}")
            }
            systemAppProjectList.addAll(body)
        }

        if (!result.isSuccess()) {
            Timber.e("Network error when fetching updatable apps - ${result.message}")
            Timber.e("error when fetching updatable apps - ${result.message}")
        }
        return result
    }

    private fun getUpdatableSystemAppEndPoint(): EndPoint {
+2 −1
Original line number Diff line number Diff line
@@ -124,7 +124,8 @@ class UpdatesWorkerTest {
        )

        whenever(updatesManagerRepository.getUpdatesOSS()).thenReturn(Pair(applications, ResultStatus.OK))
        whenever(systemAppsUpdatesRepository.fetchUpdatableSystemApps(true)).thenReturn(Unit)
        whenever(systemAppsUpdatesRepository.fetchUpdatableSystemApps(true))
            .thenReturn(ResultSupreme.Success(Unit))

        val worker = UpdatesWorker(
            workerContext,