diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt
index d2b42e677..5c0121309 100644
--- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt
+++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt
@@ -31,7 +31,9 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewmodel.compose.viewModel
+import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.service.relays.Client
import com.vitorpamplona.amethyst.ui.screen.FeedEmptywithStatus
@@ -40,7 +42,6 @@ import com.vitorpamplona.amethyst.ui.screen.NostrNIP90StatusFeedViewModel
import com.vitorpamplona.amethyst.ui.screen.RefresheableBox
import com.vitorpamplona.amethyst.ui.screen.RenderFeedState
import com.vitorpamplona.amethyst.ui.screen.SaveableFeedState
-import com.vitorpamplona.quartz.events.AppDefinitionEvent
import com.vitorpamplona.quartz.events.NIP90ContentDiscoveryRequestEvent
@Composable
@@ -90,7 +91,7 @@ fun NIP90ContentDiscoveryScreen(
@Composable
@OptIn(ExperimentalFoundationApi::class)
fun RenderNostrNIP90ContentDiscoveryScreen(
- DVMID: String?,
+ dvmID: String?,
accountViewModel: AccountViewModel,
nav: (String) -> Unit,
resultFeedViewModel: NostrNIP90ContentDiscoveryFeedViewModel,
@@ -99,54 +100,43 @@ fun RenderNostrNIP90ContentDiscoveryScreen(
Column(Modifier.fillMaxHeight()) {
val pagerState = rememberPagerState { 2 }
val coroutineScope = rememberCoroutineScope()
- // TODO 1 Render a nice header with image and DVM name from the id
- // TODO How do we get the event information here?
- var dvminfo = "DVM " + DVMID
- if (DVMID != null) {
- val thread =
- Thread {
- try {
- var note = LocalCache.checkGetOrCreateNote(DVMID)
- if (note != null) {
- dvminfo = ((note.event as AppDefinitionEvent).appMetaData()?.name ?: "DVM from note")
- } else {
- dvminfo = "DVM from not found"
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
+ // TODO (Optional) this now shows the first status update but there might be a better way
+ var dvmState = stringResource(R.string.dvm_waiting_status)
+ var dvmNoState = stringResource(R.string.dvm_no_status)
- thread.start()
- thread.join()
- }
-
- // TODO this shows the status but there might be a better way
- var dvmStatus = "DVM is processing..."
val thread =
Thread {
- println(dvmStatus)
+ var count = 0
while (resultFeedViewModel.localFilter.feed().isEmpty()) {
try {
if (statusFeedViewModel.localFilter.feed().isNotEmpty()) {
- statusFeedViewModel.localFilter.feed()[0].event?.let { dvmStatus = it.content() }
- println(dvmStatus)
+ statusFeedViewModel.localFilter.feed()[0].event?.let { dvmState = it.content() }
+ println(dvmState)
break
+ } else if (count > 1000) {
+ dvmState = dvmNoState
+ // Might not be the best way, but we want to avoid hanging in the loop forever
} else {
+ count++
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
-
thread.start()
thread.join()
+ // TODO (Optional) Maybe render a nice header with image and DVM name from the dvmID
+ // TODO (Optional) How do we get the event information here?, LocalCache.checkGetOrCreateNote() returns note but event is empty
+ // TODO (Optional) otherwise we have the NIP89 info in (note.event as AppDefinitionEvent).appMetaData()
+ // Text(text = dvminfo)
+
HorizontalPager(state = pagerState) {
RefresheableBox(resultFeedViewModel, false) {
SaveableFeedState(resultFeedViewModel, null) { listState ->
+ // TODO (Optional) Instead of a like reaction, do a Kind 31989 NIP89 App recommendation
RenderFeedState(
resultFeedViewModel,
accountViewModel,
@@ -154,7 +144,8 @@ fun RenderNostrNIP90ContentDiscoveryScreen(
nav,
null,
onEmpty = {
- FeedEmptywithStatus(status = dvmStatus) {
+ // TODO (Optional) Maybe also show some dvm image/text while waiting for the notes in this custom component
+ FeedEmptywithStatus(status = dvmState) {
}
},
)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 581930251..2cf9242a4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -846,4 +846,7 @@
Draft Note
From Msg
+
+ Waiting for DVM to reply
+ DVM seems not to reply