mirror of
https://github.com/mediathekview/zapp.git
synced 2024-09-20 04:12:14 +02:00
Display mediathek errors
This commit is contained in:
parent
a808fdccee
commit
11292be979
@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.paging.LoadState
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import de.christinecoenen.code.zapp.R
|
||||
import de.christinecoenen.code.zapp.app.mediathek.ui.list.MediathekListFragmentViewModel
|
||||
import de.christinecoenen.code.zapp.app.mediathek.ui.list.adapter.FooterLoadStateAdapter
|
||||
import de.christinecoenen.code.zapp.app.mediathek.ui.list.adapter.MediathekShowComparator
|
||||
@ -22,6 +23,8 @@ import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import java.net.UnknownServiceException
|
||||
import javax.net.ssl.SSLHandshakeException
|
||||
|
||||
|
||||
class MediathekListFragment : Fragment(),
|
||||
@ -86,11 +89,11 @@ class MediathekListFragment : Fragment(),
|
||||
.distinctUntilChanged()
|
||||
.collectLatest { refreshState ->
|
||||
binding.loader.isVisible = refreshState is LoadState.Loading
|
||||
//binding.error.isVisible = refreshState is LoadState.Error
|
||||
binding.error.isVisible = refreshState is LoadState.Error
|
||||
updateNoShowsMessage(refreshState)
|
||||
|
||||
when (refreshState) {
|
||||
//is LoadState.Error -> onMediathekLoadErrorChanged(refreshState.error)
|
||||
is LoadState.Error -> onMediathekLoadErrorChanged(refreshState.error)
|
||||
is LoadState.NotLoading -> binding.list.scrollToPosition(0)
|
||||
is LoadState.Loading -> Unit
|
||||
}
|
||||
@ -125,4 +128,17 @@ class MediathekListFragment : Fragment(),
|
||||
val isAdapterEmpty = adapter.itemCount == 0 && loadState is LoadState.NotLoading
|
||||
binding.noShows.isVisible = isAdapterEmpty
|
||||
}
|
||||
|
||||
private fun onMediathekLoadErrorChanged(e: Throwable) {
|
||||
if (e is SSLHandshakeException || e is UnknownServiceException) {
|
||||
showError(R.string.error_mediathek_ssl_error)
|
||||
} else {
|
||||
showError(R.string.error_mediathek_info_not_available)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showError(messageResId: Int) {
|
||||
binding.errorMessage.setText(messageResId)
|
||||
binding.error.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@
|
||||
android:id="@+id/no_shows"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
@ -107,12 +108,13 @@
|
||||
app:layout_constraintStart_toStartOf="@id/list"
|
||||
app:layout_constraintTop_toTopOf="@id/list"
|
||||
tools:ignore="UseCompoundDrawables"
|
||||
tools:visibility="visible">
|
||||
tools:visibility="gone">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/lb_error_image_max_height"
|
||||
android:contentDescription="@null"
|
||||
android:focusable="false"
|
||||
android:src="@drawable/ic_sad_tv"
|
||||
android:tint="@color/lb_error_message" />
|
||||
|
||||
@ -120,10 +122,47 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/lb_error_under_image_baseline_margin"
|
||||
android:focusable="false"
|
||||
android:gravity="center"
|
||||
android:text="@string/fragment_mediathek_no_results"
|
||||
android:textAppearance="@style/TextAppearance.Leanback.ErrorMessage" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/list"
|
||||
app:layout_constraintEnd_toEndOf="@id/list"
|
||||
app:layout_constraintStart_toStartOf="@id/list"
|
||||
app:layout_constraintTop_toTopOf="@id/list"
|
||||
app:layout_constraintWidth_max="350dp"
|
||||
tools:ignore="UseCompoundDrawables"
|
||||
tools:visibility="visible">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/lb_error_image_max_height"
|
||||
android:contentDescription="@null"
|
||||
android:focusable="false"
|
||||
android:src="@drawable/ic_warning_white_24dp"
|
||||
android:tint="@color/lb_error_message" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/error_message"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/lb_error_under_image_baseline_margin"
|
||||
android:focusable="false"
|
||||
android:gravity="center"
|
||||
android:text="@string/error_mediathek_info_not_available"
|
||||
android:textAppearance="@style/TextAppearance.Leanback.ErrorMessage" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
Loading…
Reference in New Issue
Block a user