mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-16 19:47:02 +05:30
desktop: wire in API into desktop client
This commit is contained in:
parent
2fa682048a
commit
2abbda7641
3 changed files with 101 additions and 15 deletions
|
@ -3,9 +3,9 @@ import androidx.compose.foundation.layout.fillMaxHeight
|
|||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.rememberScrollbarAdapter
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
@ -14,21 +14,36 @@ import androidx.compose.ui.window.WindowPosition
|
|||
import androidx.compose.ui.window.application
|
||||
import androidx.compose.ui.window.rememberWindowState
|
||||
import dev.msfjarvis.claw.common.posts.LobstersCard
|
||||
import dev.msfjarvis.claw.common.posts.TEST_POST
|
||||
import dev.msfjarvis.claw.common.theme.LobstersTheme
|
||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||
import dev.msfjarvis.claw.database.local.SavedPost
|
||||
import dev.msfjarvis.claw.model.LobstersPost
|
||||
import org.pushingpixels.aurora.component.AuroraVerticalScrollbar
|
||||
import org.pushingpixels.aurora.skin.ceruleanSkin
|
||||
import org.pushingpixels.aurora.window.AuroraWindow
|
||||
|
||||
fun LobstersPost.toDbModel(): SavedPost {
|
||||
return SavedPost(
|
||||
shortId = shortId,
|
||||
title = title,
|
||||
url = url,
|
||||
createdAt = createdAt,
|
||||
commentsUrl = commentsUrl,
|
||||
submitterName = submitter.username,
|
||||
submitterAvatarUrl = submitter.avatarUrl,
|
||||
tags = tags,
|
||||
)
|
||||
}
|
||||
|
||||
fun main() = application {
|
||||
val paging = Paging(rememberCoroutineScope())
|
||||
val items = paging.pagingData.collectAsLazyPagingItems()
|
||||
val urlLauncher = UrlLauncher()
|
||||
val state =
|
||||
rememberWindowState(
|
||||
placement = WindowPlacement.Floating,
|
||||
position = WindowPosition.Aligned(Alignment.Center),
|
||||
)
|
||||
val itemsList = (0 until 10).toList()
|
||||
AuroraWindow(
|
||||
skin = ceruleanSkin(),
|
||||
title = "Claw",
|
||||
|
@ -41,18 +56,24 @@ fun main() = application {
|
|||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
val listState = rememberLazyListState()
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
) {
|
||||
itemsIndexed(itemsList) { _, _ ->
|
||||
LobstersCard(
|
||||
post = TEST_POST,
|
||||
isSaved = false,
|
||||
viewPost = { urlLauncher.launch(TEST_POST.url.ifEmpty { TEST_POST.commentsUrl }) },
|
||||
viewComments = { urlLauncher.launch(TEST_POST.commentsUrl) },
|
||||
toggleSave = {},
|
||||
modifier = Modifier.padding(bottom = 16.dp, start = 16.dp, end = 16.dp),
|
||||
)
|
||||
if (items.itemCount == 0) {
|
||||
Box(modifier = Modifier.fillMaxSize())
|
||||
} else {
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
) {
|
||||
items(items) { item ->
|
||||
if (item != null) {
|
||||
LobstersCard(
|
||||
post = item.toDbModel(),
|
||||
isSaved = false,
|
||||
viewPost = { urlLauncher.launch(item.url.ifEmpty { item.commentsUrl }) },
|
||||
viewComments = { urlLauncher.launch(item.commentsUrl) },
|
||||
toggleSave = {},
|
||||
modifier = Modifier.padding(bottom = 16.dp, start = 16.dp, end = 16.dp),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
AuroraVerticalScrollbar(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue