From 522bb7753ec023cdee9106459cfb13ecdbd6b435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Muller?= Date: Tue, 3 Sep 2024 13:17:48 +0200 Subject: [PATCH] Update demo app to display request response (#48) As discussed in https://github.com/SRGSSR/srgdataprovider-android/pull/46#discussion_r1738281007, I've updated the demo app to get rid of the `Log` `Coucou` and replaced it with a simple UI: | Loading | Success | Error | |-----|-----|------| | ![Screenshot_20240830_132703](https://github.com/user-attachments/assets/a82d4d94-15c6-4fa4-b648-0713ec8555ec) | ![Screenshot_20240830_132716](https://github.com/user-attachments/assets/e192332f-e602-4813-8b75-0ca7b7b36c54) | ![Screenshot_20240830_132854](https://github.com/user-attachments/assets/a5183f08-02c0-475d-b7e1-e298c74c34a5) | --- .../srgssr/dataprovider/demo/MainActivity.kt | 36 +++++++++++++++---- .../src/main/res/layout/activity_main.xml | 13 ++++++- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/dataproviderdemo/src/main/java/ch/srgssr/dataprovider/demo/MainActivity.kt b/dataproviderdemo/src/main/java/ch/srgssr/dataprovider/demo/MainActivity.kt index 7161d52..3aee24c 100644 --- a/dataproviderdemo/src/main/java/ch/srgssr/dataprovider/demo/MainActivity.kt +++ b/dataproviderdemo/src/main/java/ch/srgssr/dataprovider/demo/MainActivity.kt @@ -1,7 +1,9 @@ package ch.srgssr.dataprovider.demo import android.os.Bundle -import android.util.Log +import android.view.View +import android.widget.ProgressBar +import android.widget.TextView import androidx.activity.ComponentActivity import androidx.activity.enableEdgeToEdge import androidx.lifecycle.Lifecycle @@ -12,13 +14,16 @@ import ch.srg.dataProvider.integrationlayer.dependencies.modules.OkHttpModule import ch.srg.dataProvider.integrationlayer.request.IlHost import ch.srg.dataProvider.integrationlayer.request.IlService import ch.srg.dataProvider.integrationlayer.request.parameters.Bu -import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import okhttp3.OkHttpClient class MainActivity : ComponentActivity(R.layout.activity_main) { + private lateinit var loadingProgressBar: ProgressBar + private lateinit var messageTextView: TextView + private lateinit var okHttp: OkHttpClient private lateinit var ilService: IlService @@ -27,18 +32,37 @@ class MainActivity : ComponentActivity(R.layout.activity_main) { super.onCreate(savedInstanceState) + loadingProgressBar = findViewById(R.id.loading_pb) + messageTextView = findViewById(R.id.message_tv) + okHttp = OkHttpModule.createOkHttpClient(this) ilService = IlServiceModule.createIlService(okHttp, ilHost = IlHost.PROD) - val flowData = flow { + getTvLatestEpisodes() + } + + private fun getTvLatestEpisodes() { + val tvLatestEpisodesFlow = flow { emit(ilService.getTvLatestEpisodes(Bu.RTS)) } lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) { - flowData.collectLatest { - Log.d("Coucou", "${it.list}") - } + tvLatestEpisodesFlow + .catch { exception -> + loadingProgressBar.visibility = View.GONE + messageTextView.text = exception.message + messageTextView.visibility = View.VISIBLE + } + .collect { tvLatestEpisodes -> + val episodesNames = tvLatestEpisodes.list.joinToString(separator = "\n") { + "${it.show?.title} - ${it.title}" + } + + loadingProgressBar.visibility = View.GONE + messageTextView.text = episodesNames + messageTextView.visibility = View.VISIBLE + } } } } diff --git a/dataproviderdemo/src/main/res/layout/activity_main.xml b/dataproviderdemo/src/main/res/layout/activity_main.xml index 5e8e3dd..3655fe9 100644 --- a/dataproviderdemo/src/main/res/layout/activity_main.xml +++ b/dataproviderdemo/src/main/res/layout/activity_main.xml @@ -3,11 +3,22 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context=".MainActivity"> + + + android:indeterminate="true" />