common: refactor comments page to accept modifiers

This commit is contained in:
Harsh Shandilya 2021-11-15 23:14:15 +05:30
parent 520430592c
commit dd621d90a5
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
2 changed files with 13 additions and 15 deletions

View file

@ -120,7 +120,7 @@ fun LobstersApp(
modifier = Modifier.navigationBarsPadding(), modifier = Modifier.navigationBarsPadding(),
) )
}, },
) { paddingValues -> ) {
NavHost(navController, startDestination = Destinations.Hottest) { NavHost(navController, startDestination = Destinations.Hottest) {
composable(Destinations.Hottest) { composable(Destinations.Hottest) {
setWebUri("https://lobste.rs/") setWebUri("https://lobste.rs/")
@ -139,7 +139,7 @@ fun LobstersApp(
CommentsPage( CommentsPage(
postId = postId, postId = postId,
getDetails = viewModel::getPostComments, getDetails = viewModel::getPostComments,
paddingValues = paddingValues, modifier = Modifier.navigationBarsPadding(),
) )
} }
} }

View file

@ -1,11 +1,9 @@
package dev.msfjarvis.claw.common.comments package dev.msfjarvis.claw.common.comments
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.CircularProgressIndicator import androidx.compose.material.CircularProgressIndicator
@ -20,7 +18,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import dev.msfjarvis.claw.model.LobstersPostDetails import dev.msfjarvis.claw.model.LobstersPostDetails
import dev.msfjarvis.lobsters.ui.comments.NetworkState import dev.msfjarvis.lobsters.ui.comments.NetworkState
@ -28,9 +25,9 @@ import dev.msfjarvis.lobsters.ui.comments.NetworkState
@Composable @Composable
private fun CommentsPageInternal( private fun CommentsPageInternal(
details: LobstersPostDetails, details: LobstersPostDetails,
bottomPadding: Dp, modifier: Modifier = Modifier,
) { ) {
LazyColumn(Modifier.padding(bottom = bottomPadding)) { LazyColumn(modifier) {
item { CommentsHeader(postDetails = details) } item { CommentsHeader(postDetails = details) }
item { Spacer(modifier = Modifier.height(8.dp)) } item { Spacer(modifier = Modifier.height(8.dp)) }
@ -46,7 +43,7 @@ private fun CommentsPageInternal(
fun CommentsPage( fun CommentsPage(
postId: String, postId: String,
getDetails: suspend (String) -> LobstersPostDetails, getDetails: suspend (String) -> LobstersPostDetails,
paddingValues: PaddingValues, modifier: Modifier = Modifier,
) { ) {
var postDetails: NetworkState by remember { mutableStateOf(NetworkState.Loading) } var postDetails: NetworkState by remember { mutableStateOf(NetworkState.Loading) }
@ -56,18 +53,19 @@ fun CommentsPage(
is NetworkState.Success<*> -> { is NetworkState.Success<*> -> {
CommentsPageInternal( CommentsPageInternal(
(postDetails as NetworkState.Success<LobstersPostDetails>).data, (postDetails as NetworkState.Success<LobstersPostDetails>).data,
paddingValues.calculateBottomPadding(), modifier,
) )
} }
is NetworkState.Error -> TODO("Handle no network scenario") is NetworkState.Error -> TODO("Handle no network scenario")
NetworkState.Loading -> ProgressBar(paddingValues.calculateBottomPadding()) NetworkState.Loading -> ProgressBar(modifier)
} }
} }
@Composable @Composable
private fun ProgressBar(bottomPadding: Dp) { private fun ProgressBar(
Box( modifier: Modifier,
modifier = Modifier.padding(bottom = bottomPadding).fillMaxSize(), ) {
contentAlignment = Alignment.Center Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
) { CircularProgressIndicator(color = MaterialTheme.colors.secondary) } CircularProgressIndicator(color = MaterialTheme.colors.secondary)
}
} }