From 62c2cb3fb758b828890a4bf5a7ab750028256860 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 27 Sep 2020 16:44:39 +0530 Subject: [PATCH] app: add no posts state Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/lobsters/MainActivity.kt | 33 ++++++++++++++----- .../res/drawable/ic_sync_problem_24px.xml | 9 +++++ app/src/main/res/values/strings.xml | 3 +- 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable/ic_sync_problem_24px.xml diff --git a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt index 03c66b3f..289eeec3 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt @@ -4,6 +4,9 @@ import android.os.Bundle import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.Text +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumnForIndexed import androidx.compose.material.Scaffold import androidx.compose.material.TopAppBar @@ -11,10 +14,13 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers import androidx.compose.runtime.ambientOf import androidx.compose.runtime.collectAsState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.platform.setContent import androidx.compose.ui.res.stringResource import dagger.hilt.android.AndroidEntryPoint import dev.msfjarvis.lobsters.api.LobstersApi +import dev.msfjarvis.lobsters.compose.utils.IconResource import dev.msfjarvis.lobsters.data.LobstersViewModel import dev.msfjarvis.lobsters.ui.LobstersItem import dev.msfjarvis.lobsters.ui.LobstersTheme @@ -52,15 +58,26 @@ fun LobstersApp( Scaffold( topBar = { TopAppBar({ Text(text = stringResource(R.string.app_name)) }) }, bodyContent = { - LazyColumnForIndexed(state.value) { index, item -> - if (lastIndex == index) { - viewModel.getMorePosts() + if (state.value.isEmpty()) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + IconResource(R.drawable.ic_sync_problem_24px) + Text(stringResource(R.string.nothing_to_see_here)) + } + } else { + LazyColumnForIndexed(state.value) { index, item -> + if (lastIndex == index) { + viewModel.getMorePosts() + } + LobstersItem( + item, + linkOpenAction = { post -> urlLauncher.launch(post.url) }, + commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, + ) } - LobstersItem( - item, - linkOpenAction = { post -> urlLauncher.launch(post.url) }, - commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, - ) } } ) diff --git a/app/src/main/res/drawable/ic_sync_problem_24px.xml b/app/src/main/res/drawable/ic_sync_problem_24px.xml new file mode 100644 index 00000000..fe10eb1f --- /dev/null +++ b/app/src/main/res/drawable/ic_sync_problem_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b0ce64c6..eb4d1126 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ lobste.rs - \ No newline at end of file + Nothing to see here… +