From 4facdc9b683745ffcbcb504bf3f13e1d8b6dcaa5 Mon Sep 17 00:00:00 2001 From: Konrad Pozniak Date: Sun, 7 Apr 2019 16:33:08 +0200 Subject: [PATCH] error handling in FiltersActivity (#1180) --- .../keylesspalace/tusky/FiltersActivity.kt | 43 +++++++++++++++++-- app/src/main/res/layout/activity_filters.xml | 21 ++++++--- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt b/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt index eafad499..609f290e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/FiltersActivity.kt @@ -2,6 +2,7 @@ package com.keylesspalace.tusky import android.os.Bundle import android.view.MenuItem +import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Toast @@ -10,6 +11,8 @@ import com.keylesspalace.tusky.appstore.EventHub import com.keylesspalace.tusky.appstore.PreferenceChangedEvent import com.keylesspalace.tusky.entity.Filter import com.keylesspalace.tusky.network.MastodonApi +import com.keylesspalace.tusky.util.hide +import com.keylesspalace.tusky.util.show import kotlinx.android.synthetic.main.activity_filters.* import kotlinx.android.synthetic.main.dialog_filter.* import kotlinx.android.synthetic.main.toolbar_basic.* @@ -17,6 +20,7 @@ import okhttp3.ResponseBody import retrofit2.Call import retrofit2.Callback import retrofit2.Response +import java.io.IOException import javax.inject.Inject class FiltersActivity: BaseActivity() { @@ -132,24 +136,55 @@ class FiltersActivity: BaseActivity() { } private fun loadFilters() { + + filterMessageView.hide() + filtersView.hide() + addFilterButton.hide() + filterProgressBar.show() + api.filters.enqueue(object : Callback> { override fun onResponse(call: Call>, response: Response>) { - filters = response.body()!!.filter { filter -> filter.context.contains(context) }.toMutableList() - refreshFilterDisplay() + val filterResponse = response.body() + if(response.isSuccessful && filterResponse != null) { + + filters = filterResponse.filter { filter -> filter.context.contains(context) }.toMutableList() + refreshFilterDisplay() + + filtersView.show() + addFilterButton.show() + filterProgressBar.hide() + } else { + filterProgressBar.hide() + filterMessageView.show() + filterMessageView.setup(R.drawable.elephant_error, + R.string.error_generic, this@FiltersActivity::reload) + } } override fun onFailure(call: Call>, t: Throwable) { - // Anything? + filterProgressBar.hide() + filterMessageView.show() + if (t is IOException) { + filterMessageView.setup(R.drawable.elephant_offline, + R.string.error_network, this@FiltersActivity::reload) + } else { + filterMessageView.setup(R.drawable.elephant_error, + R.string.error_generic, this@FiltersActivity::reload) + } } }) } + private fun reload(v: View) { + loadFilters() + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_filters) setupToolbarBackArrow() - filter_floating_add.setOnClickListener { + addFilterButton.setOnClickListener { showAddFilterDialog() } diff --git a/app/src/main/res/layout/activity_filters.xml b/app/src/main/res/layout/activity_filters.xml index ca25f54c..9d517255 100644 --- a/app/src/main/res/layout/activity_filters.xml +++ b/app/src/main/res/layout/activity_filters.xml @@ -1,7 +1,7 @@ + + + + + app:layout_anchor="@id/filtersView" + app:layout_anchorGravity="bottom|end" /> \ No newline at end of file