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

Commit 6e46b5ed authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

Merge branch '3220-improve-exception-handling' into 'main'

refactor: improve UI for unavailable CleanAPK app

See merge request !565
parents fce432fe 5c3d327b
Loading
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject

@HiltViewModel
@@ -77,7 +78,7 @@ class ApplicationViewModel @Inject constructor(
    ) {

        if (params.isFdroidDeepLink) {
            getCleanapkAppDetails(params.packageName)
            getCleanApkAppDetails(params.packageName)
            return
        }

@@ -183,18 +184,23 @@ class ApplicationViewModel @Inject constructor(
     * Dedicated method to get app details from cleanapk using package name.
     * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5509
     */
    fun getCleanapkAppDetails(packageName: String) {
    private fun getCleanApkAppDetails(packageName: String) {
        viewModelScope.launch {
            try {
                applicationRepository.getApplicationDetails(listOf(packageName), Source.OPEN_SOURCE).run {
                    if (this.first[0].package_name.isBlank()) {
                val (apps, status) = applicationRepository.getApplicationDetails(
                    listOf(packageName), Source.OPEN_SOURCE
                )

                val app = apps.firstOrNull()
                if (app == null || app.package_name.isBlank()) {
                    _errorMessageLiveData.postValue(R.string.app_not_found)
                    } else {
                        applicationLiveData.postValue(Pair(this.first[0], this.second))
                        updateShareVisibilityState(first[0].shareUri.toString())
                    }
                    return@launch
                }

                applicationLiveData.postValue(Pair(app, status))
                updateShareVisibilityState(app.shareUri.toString())
            } catch (e: Exception) {
                Timber.w(e)
                _errorMessageLiveData.postValue(R.string.unknown_error)
            }
        }