mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 13:47:02 +05:30
app: add a FAB to reload posts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
9d22682626
commit
b28eb09e3f
3 changed files with 21 additions and 3 deletions
|
@ -9,8 +9,8 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumnForIndexed
|
import androidx.compose.foundation.lazy.LazyColumnForIndexed
|
||||||
|
import androidx.compose.material.FloatingActionButton
|
||||||
import androidx.compose.material.Scaffold
|
import androidx.compose.material.Scaffold
|
||||||
import androidx.compose.material.TopAppBar
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Providers
|
import androidx.compose.runtime.Providers
|
||||||
import androidx.compose.runtime.ambientOf
|
import androidx.compose.runtime.ambientOf
|
||||||
|
@ -56,7 +56,6 @@ fun LobstersApp(
|
||||||
val lastIndex = state.value.lastIndex
|
val lastIndex = state.value.lastIndex
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
topBar = { TopAppBar({ Text(text = stringResource(R.string.app_name)) }) },
|
|
||||||
bodyContent = {
|
bodyContent = {
|
||||||
if (state.value.isEmpty()) {
|
if (state.value.isEmpty()) {
|
||||||
Column(
|
Column(
|
||||||
|
@ -82,6 +81,11 @@ fun LobstersApp(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
floatingActionButton = {
|
||||||
|
FloatingActionButton(onClick = { viewModel.refreshPosts() }) {
|
||||||
|
IconResource(resourceId = R.drawable.ic_refresh_24px)
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,11 @@ class LobstersViewModel @ViewModelInject constructor(
|
||||||
getMorePostsInternal(false)
|
getMorePostsInternal(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun refreshPosts() {
|
||||||
|
apiPage = 1
|
||||||
|
getMorePostsInternal(true)
|
||||||
|
}
|
||||||
|
|
||||||
private fun getMorePostsInternal(firstLoad: Boolean) {
|
private fun getMorePostsInternal(firstLoad: Boolean) {
|
||||||
viewModelScope.launch(coroutineExceptionHandler) {
|
viewModelScope.launch(coroutineExceptionHandler) {
|
||||||
val newPosts = lobstersApi.getHottestPosts(apiPage)
|
val newPosts = lobstersApi.getHottestPosts(apiPage)
|
||||||
|
|
9
app/src/main/res/drawable/ic_refresh_24px.xml
Normal file
9
app/src/main/res/drawable/ic_refresh_24px.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M17.65,6.35c-1.63,-1.63 -3.94,-2.57 -6.48,-2.31 -3.67,0.37 -6.69,3.35 -7.1,7.02C3.52,15.91 7.27,20 12,20c3.19,0 5.93,-1.87 7.21,-4.56 0.32,-0.67 -0.16,-1.44 -0.9,-1.44 -0.37,0 -0.72,0.2 -0.88,0.53 -1.13,2.43 -3.84,3.97 -6.8,3.31 -2.22,-0.49 -4.01,-2.3 -4.48,-4.52C5.31,9.44 8.26,6 12,6c1.66,0 3.14,0.69 4.22,1.78l-1.51,1.51c-0.63,0.63 -0.19,1.71 0.7,1.71H19c0.55,0 1,-0.45 1,-1V6.41c0,-0.89 -1.08,-1.34 -1.71,-0.71l-0.64,0.65z"/>
|
||||||
|
</vector>
|
Loading…
Add table
Add a link
Reference in a new issue