diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt index 4bcdbc11ba1b8f29a6ef2d980627663e8e5d7fbf..07090c95cd1dabfbda8cc9fb3e64bfe9cffd2562 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt @@ -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()) { - _errorMessageLiveData.postValue(R.string.app_not_found) - } else { - applicationLiveData.postValue(Pair(this.first[0], this.second)) - updateShareVisibilityState(first[0].shareUri.toString()) - } + 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) + return@launch } + + applicationLiveData.postValue(Pair(app, status)) + updateShareVisibilityState(app.shareUri.toString()) } catch (e: Exception) { + Timber.w(e) _errorMessageLiveData.postValue(R.string.unknown_error) } }