From 479e5bd67cc4ee4cfb35f85c4a22db4682177130 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sun, 3 May 2026 20:19:22 +0200 Subject: [PATCH] Prepare to show replies --- .../ui/composable/NostrEventDetailScreen.kt | 3 +- .../widgets/detail/TextNoteEventDetail.kt | 33 +++++++++++++++++-- .../ui/view/model/FeedListViewModel.kt | 1 + 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/NostrEventDetailScreen.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/NostrEventDetailScreen.kt index cc2a048e..205f0fb6 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/NostrEventDetailScreen.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/NostrEventDetailScreen.kt @@ -78,7 +78,8 @@ fun NostrEventDetailScreen( feedListUIState.localNostrEvent, onNavigateBack = onNavigateBack, onNavigateToWriteAReply = onNavigateToWriteAReply, - onNavigateToNostrEvent = onNavigateToQuoteNostrEvent + onNavigateToNostrEvent = onNavigateToQuoteNostrEvent, + nostrRepository = nostrRepository ) } RepostEvent.KIND -> { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt index 9f7a2687..b538c4cc 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt @@ -3,11 +3,15 @@ package ac.cord.auxiliary.compose.ui.composable.widgets.detail import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.Profile import ac.cord.auxiliary.compose.database.model.intermdiate.LocalNostrEvent +import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter import ac.cord.auxiliary.compose.extensions.toFormattedTimeAndDateString +import ac.cord.auxiliary.compose.repository.NostrRepository import ac.cord.auxiliary.compose.ui.composable.widgets.content.RichContent import ac.cord.auxiliary.compose.ui.composable.widgets.profile.ProfileAvatar import ac.cord.auxiliary.compose.ui.composable.widgets.profile.ProfileColor import ac.cord.auxiliary.compose.ui.theme.AuxTheme +import ac.cord.auxiliary.compose.ui.view.model.FeedListViewModel +import ac.cord.auxiliary.compose.ui.view.state.FeedListUIState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -46,6 +50,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent @@ -54,9 +59,22 @@ import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent fun TextNoteEventDetail( localNostrEvent: LocalNostrEvent, onNavigateBack: () -> Unit, + nostrRepository: NostrRepository, onNavigateToWriteAReply: (String) -> Unit, onNavigateToNostrEvent: (HexKey) -> Unit, ) { + val inReplyToNostrEventFeedListViewModel: FeedListViewModel = viewModel( + key = "replies", + factory = FeedListViewModel.factory( + initialFeedListUIState = FeedListUIState.Loading, + synchronizationFilter = SynchronizationFilter( + ids = arrayOf(localNostrEvent.nostrEvent.id) + // TODO: Marked Root In Reply... + ), + nostrRepository = nostrRepository + ), + ) + Scaffold( modifier = Modifier.fillMaxSize(), topBar = { @@ -173,6 +191,7 @@ fun TextNoteEventDetail( LazyColumn( modifier = Modifier.fillMaxSize() ) { + // TODO: get all the notes inReplyToRoot before this note item { Column( modifier = Modifier.fillMaxWidth(), @@ -315,9 +334,18 @@ fun TextNoteEventDetail( windowInsets = WindowInsets.navigationBars ) - Text("Replies coming soon...") + } } + + item { + inReplyToNostrEventFeedListViewModel.RenderFeed( + onNavigateToEvent = { + // TODO: NavigateToEvent... + } + ) + + } } } } @@ -354,7 +382,8 @@ It has survived not only five centuries, but also the leap into electronic types ), onNavigateBack = {}, onNavigateToWriteAReply = {}, - onNavigateToNostrEvent = {} + onNavigateToNostrEvent = {}, + nostrRepository = NostrRepository.NO_OP_NOSTR_REPOSITORY ) } } diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/FeedListViewModel.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/FeedListViewModel.kt index 35da6ae4..ed4408c5 100755 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/FeedListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/FeedListViewModel.kt @@ -33,6 +33,7 @@ import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import co.touchlab.kermit.Logger +import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO import kotlinx.coroutines.flow.distinctUntilChanged