mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 08:17:04 +05:30
android: split Compose code to LobstersApp composable
This commit is contained in:
parent
f1b56e27cd
commit
a5b04b9530
2 changed files with 59 additions and 43 deletions
|
@ -3,28 +3,12 @@ package dev.msfjarvis.claw.android
|
|||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material.CircularProgressIndicator
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Scaffold
|
||||
import androidx.compose.material.rememberScaffoldState
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.paging.LoadState
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.PagingConfig
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dev.msfjarvis.claw.android.paging.LobstersPagingSource
|
||||
import dev.msfjarvis.claw.android.ui.ClawAppBar
|
||||
import dev.msfjarvis.claw.android.ui.NetworkPosts
|
||||
import dev.msfjarvis.claw.android.ui.LobstersApp
|
||||
import dev.msfjarvis.claw.api.LobstersApi
|
||||
import dev.msfjarvis.claw.common.theme.LobstersTheme
|
||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -38,32 +22,10 @@ class MainActivity : ComponentActivity() {
|
|||
super.onCreate(savedInstanceState)
|
||||
val pager = Pager(PagingConfig(20)) { LobstersPagingSource(api::getHottestPosts) }
|
||||
setContent {
|
||||
val scaffoldState = rememberScaffoldState()
|
||||
LobstersTheme(darkTheme = isSystemInDarkTheme()) {
|
||||
val items = pager.flow.collectAsLazyPagingItems()
|
||||
Scaffold(
|
||||
scaffoldState = scaffoldState,
|
||||
topBar = { ClawAppBar() },
|
||||
modifier = Modifier,
|
||||
) { padding ->
|
||||
if (items.loadState.refresh != LoadState.Loading) {
|
||||
NetworkPosts(
|
||||
items = items,
|
||||
urlLauncher = urlLauncher,
|
||||
modifier = Modifier.padding(padding),
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.size(64.dp).align(Alignment.Center),
|
||||
color = MaterialTheme.colors.secondary,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LobstersApp(
|
||||
pager,
|
||||
urlLauncher,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package dev.msfjarvis.claw.android.ui
|
||||
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material.CircularProgressIndicator
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Scaffold
|
||||
import androidx.compose.material.rememberScaffoldState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.paging.LoadState
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import dev.msfjarvis.claw.api.model.LobstersPost
|
||||
import dev.msfjarvis.claw.common.theme.LobstersTheme
|
||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||
|
||||
@Composable
|
||||
fun LobstersApp(
|
||||
pager: Pager<Int, LobstersPost>,
|
||||
urlLauncher: UrlLauncher,
|
||||
) {
|
||||
val scaffoldState = rememberScaffoldState()
|
||||
LobstersTheme(darkTheme = isSystemInDarkTheme()) {
|
||||
val items = pager.flow.collectAsLazyPagingItems()
|
||||
Scaffold(
|
||||
scaffoldState = scaffoldState,
|
||||
topBar = { ClawAppBar() },
|
||||
modifier = Modifier,
|
||||
) { padding ->
|
||||
if (items.loadState.refresh != LoadState.Loading) {
|
||||
NetworkPosts(
|
||||
items = items,
|
||||
urlLauncher = urlLauncher,
|
||||
modifier = Modifier.padding(padding),
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.size(64.dp).align(Alignment.Center),
|
||||
color = MaterialTheme.colors.secondary,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue