Implement getFilters() without rxjava (#2990)
This commit is contained in:
parent
25443217c2
commit
f796f77f9a
4 changed files with 10 additions and 14 deletions
|
@ -7,6 +7,7 @@ import android.widget.ArrayAdapter
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import at.connyduck.calladapter.networkresult.fold
|
import at.connyduck.calladapter.networkresult.fold
|
||||||
|
import at.connyduck.calladapter.networkresult.getOrElse
|
||||||
import com.keylesspalace.tusky.appstore.EventHub
|
import com.keylesspalace.tusky.appstore.EventHub
|
||||||
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
|
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
|
||||||
import com.keylesspalace.tusky.databinding.ActivityFiltersBinding
|
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.setupEditDialogForFilter
|
||||||
import com.keylesspalace.tusky.view.showAddFilterDialog
|
import com.keylesspalace.tusky.view.showAddFilterDialog
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.rx3.await
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -150,12 +150,10 @@ class FiltersActivity : BaseActivity() {
|
||||||
binding.filterProgressBar.show()
|
binding.filterProgressBar.show()
|
||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
val newFilters = try {
|
val newFilters = api.getFilters().getOrElse {
|
||||||
api.getFilters().await()
|
|
||||||
} catch (t: Exception) {
|
|
||||||
binding.filterProgressBar.hide()
|
binding.filterProgressBar.hide()
|
||||||
binding.filterMessageView.show()
|
binding.filterMessageView.show()
|
||||||
if (t is IOException) {
|
if (it is IOException) {
|
||||||
binding.filterMessageView.setup(
|
binding.filterMessageView.setup(
|
||||||
R.drawable.elephant_offline,
|
R.drawable.elephant_offline,
|
||||||
R.string.error_network
|
R.string.error_network
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.util.Log
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import androidx.paging.PagingData
|
import androidx.paging.PagingData
|
||||||
|
import at.connyduck.calladapter.networkresult.getOrElse
|
||||||
import com.keylesspalace.tusky.appstore.BlockEvent
|
import com.keylesspalace.tusky.appstore.BlockEvent
|
||||||
import com.keylesspalace.tusky.appstore.BookmarkEvent
|
import com.keylesspalace.tusky.appstore.BookmarkEvent
|
||||||
import com.keylesspalace.tusky.appstore.DomainMuteEvent
|
import com.keylesspalace.tusky.appstore.DomainMuteEvent
|
||||||
|
@ -280,10 +281,8 @@ abstract class TimelineViewModel(
|
||||||
|
|
||||||
private fun reloadFilters() {
|
private fun reloadFilters() {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val filters = try {
|
val filters = api.getFilters().getOrElse {
|
||||||
api.getFilters().await()
|
Log.e(TAG, "Failed to fetch filters", it)
|
||||||
} catch (t: Exception) {
|
|
||||||
Log.e(TAG, "Failed to fetch filters", t)
|
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
filterModel.initWithFilters(
|
filterModel.initWithFilters(
|
||||||
|
|
|
@ -337,12 +337,11 @@ class ViewThreadViewModel @Inject constructor(
|
||||||
|
|
||||||
private fun loadFilters() {
|
private fun loadFilters() {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val filters = try {
|
val filters = api.getFilters().getOrElse {
|
||||||
api.getFilters().await()
|
Log.w(TAG, "Failed to fetch filters", it)
|
||||||
} catch (t: Exception) {
|
|
||||||
Log.w(TAG, "Failed to fetch filters", t)
|
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
|
|
||||||
filterModel.initWithFilters(
|
filterModel.initWithFilters(
|
||||||
filters.filter { filter ->
|
filters.filter { filter ->
|
||||||
filter.context.contains(Filter.THREAD)
|
filter.context.contains(Filter.THREAD)
|
||||||
|
|
|
@ -82,7 +82,7 @@ interface MastodonApi {
|
||||||
suspend fun getInstance(@Header(DOMAIN_HEADER) domain: String? = null): NetworkResult<Instance>
|
suspend fun getInstance(@Header(DOMAIN_HEADER) domain: String? = null): NetworkResult<Instance>
|
||||||
|
|
||||||
@GET("api/v1/filters")
|
@GET("api/v1/filters")
|
||||||
fun getFilters(): Single<List<Filter>>
|
suspend fun getFilters(): NetworkResult<List<Filter>>
|
||||||
|
|
||||||
@GET("api/v1/timelines/home")
|
@GET("api/v1/timelines/home")
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
|
|
Loading…
Add table
Reference in a new issue