From b28eb09e3f05e9fc7dff6b7620bdeea4760ccf14 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 10 Oct 2020 17:57:35 +0530 Subject: [PATCH] app: add a FAB to reload posts Signed-off-by: Harsh Shandilya --- .../main/java/dev/msfjarvis/lobsters/MainActivity.kt | 10 +++++++--- .../dev/msfjarvis/lobsters/data/LobstersViewModel.kt | 5 +++++ app/src/main/res/drawable/ic_refresh_24px.xml | 9 +++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/ic_refresh_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 4ae5cfda..eca23603 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt @@ -9,8 +9,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumnForIndexed +import androidx.compose.material.FloatingActionButton import androidx.compose.material.Scaffold -import androidx.compose.material.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers import androidx.compose.runtime.ambientOf @@ -56,7 +56,6 @@ fun LobstersApp( val lastIndex = state.value.lastIndex Scaffold( - topBar = { TopAppBar({ Text(text = stringResource(R.string.app_name)) }) }, bodyContent = { if (state.value.isEmpty()) { Column( @@ -82,6 +81,11 @@ fun LobstersApp( ) } } - } + }, + floatingActionButton = { + FloatingActionButton(onClick = { viewModel.refreshPosts() }) { + IconResource(resourceId = R.drawable.ic_refresh_24px) + } + }, ) } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/data/LobstersViewModel.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/LobstersViewModel.kt index 545fd881..29c5b008 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/data/LobstersViewModel.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/data/LobstersViewModel.kt @@ -41,6 +41,11 @@ class LobstersViewModel @ViewModelInject constructor( getMorePostsInternal(false) } + fun refreshPosts() { + apiPage = 1 + getMorePostsInternal(true) + } + private fun getMorePostsInternal(firstLoad: Boolean) { viewModelScope.launch(coroutineExceptionHandler) { val newPosts = lobstersApi.getHottestPosts(apiPage) diff --git a/app/src/main/res/drawable/ic_refresh_24px.xml b/app/src/main/res/drawable/ic_refresh_24px.xml new file mode 100644 index 00000000..aac564c5 --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh_24px.xml @@ -0,0 +1,9 @@ + + +