From f796f77f9a170ef5410e2866d6ba73eb3ed935d2 Mon Sep 17 00:00:00 2001 From: Nik Clayton Date: Wed, 7 Dec 2022 19:30:53 +0100 Subject: [PATCH] Implement getFilters() without rxjava (#2990) --- .../main/java/com/keylesspalace/tusky/FiltersActivity.kt | 8 +++----- .../components/timeline/viewmodel/TimelineViewModel.kt | 7 +++---- .../tusky/components/viewthread/ViewThreadViewModel.kt | 7 +++---- .../java/com/keylesspalace/tusky/network/MastodonApi.kt | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt b/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt index 3a61df90..bbb5bc6a 100644 --- a/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt @@ -7,6 +7,7 @@ import android.widget.ArrayAdapter import android.widget.Toast import androidx.lifecycle.lifecycleScope import at.connyduck.calladapter.networkresult.fold +import at.connyduck.calladapter.networkresult.getOrElse import com.keylesspalace.tusky.appstore.EventHub import com.keylesspalace.tusky.appstore.PreferenceChangedEvent import com.keylesspalace.tusky.databinding.ActivityFiltersBinding @@ -19,7 +20,6 @@ import com.keylesspalace.tusky.view.getSecondsForDurationIndex import com.keylesspalace.tusky.view.setupEditDialogForFilter import com.keylesspalace.tusky.view.showAddFilterDialog import kotlinx.coroutines.launch -import kotlinx.coroutines.rx3.await import java.io.IOException import javax.inject.Inject @@ -150,12 +150,10 @@ class FiltersActivity : BaseActivity() { binding.filterProgressBar.show() lifecycleScope.launch { - val newFilters = try { - api.getFilters().await() - } catch (t: Exception) { + val newFilters = api.getFilters().getOrElse { binding.filterProgressBar.hide() binding.filterMessageView.show() - if (t is IOException) { + if (it is IOException) { binding.filterMessageView.setup( R.drawable.elephant_offline, R.string.error_network diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt index d640f64f..b5ed9c4e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt @@ -20,6 +20,7 @@ import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.PagingData +import at.connyduck.calladapter.networkresult.getOrElse import com.keylesspalace.tusky.appstore.BlockEvent import com.keylesspalace.tusky.appstore.BookmarkEvent import com.keylesspalace.tusky.appstore.DomainMuteEvent @@ -280,10 +281,8 @@ abstract class TimelineViewModel( private fun reloadFilters() { viewModelScope.launch { - val filters = try { - api.getFilters().await() - } catch (t: Exception) { - Log.e(TAG, "Failed to fetch filters", t) + val filters = api.getFilters().getOrElse { + Log.e(TAG, "Failed to fetch filters", it) return@launch } filterModel.initWithFilters( diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt index f4d7e14d..5b296999 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt @@ -337,12 +337,11 @@ class ViewThreadViewModel @Inject constructor( private fun loadFilters() { viewModelScope.launch { - val filters = try { - api.getFilters().await() - } catch (t: Exception) { - Log.w(TAG, "Failed to fetch filters", t) + val filters = api.getFilters().getOrElse { + Log.w(TAG, "Failed to fetch filters", it) return@launch } + filterModel.initWithFilters( filters.filter { filter -> filter.context.contains(Filter.THREAD) diff --git a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt index 9ddda4ba..e344650f 100644 --- a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt +++ b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt @@ -82,7 +82,7 @@ interface MastodonApi { suspend fun getInstance(@Header(DOMAIN_HEADER) domain: String? = null): NetworkResult @GET("api/v1/filters") - fun getFilters(): Single> + suspend fun getFilters(): NetworkResult> @GET("api/v1/timelines/home") @Throws(Exception::class)