From 926a721c533a816c9ac062dff67fbd536d2f385c Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 16 May 2024 15:02:44 +0200 Subject: [PATCH 1/5] cleanup, potential fix endless loop --- .../loggedIn/NIP90ContentDiscoveryScreen.kt | 40 ++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) 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..f2f5a4f7f 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 @@ -40,7 +40,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 +89,7 @@ fun NIP90ContentDiscoveryScreen( @Composable @OptIn(ExperimentalFoundationApi::class) fun RenderNostrNIP90ContentDiscoveryScreen( - DVMID: String?, + dvmID: String?, accountViewModel: AccountViewModel, nav: (String) -> Unit, resultFeedViewModel: NostrNIP90ContentDiscoveryFeedViewModel, @@ -99,51 +98,37 @@ 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() - } - } - - thread.start() - thread.join() - } - - // TODO this shows the status but there might be a better way + // TODO this now shows the first status update 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) break + } else if (count > 1000) { + // Might not be the best way, but we want to avoid hanging in the loop forever + break } else { + count++ } } catch (e: Exception) { e.printStackTrace() } } } - thread.start() thread.join() + // TODO Maybe render a nice header with image and DVM name from the dvmID + // TODO How do we get the event information here?, LocalCache.checkGetOrCreateNote() returns note but event is empty + // TODO oterwise we have the NIP89 info in (note.event as AppDefinitionEvent).appMetaData() + // Text(text = dvminfo) + HorizontalPager(state = pagerState) { RefresheableBox(resultFeedViewModel, false) { SaveableFeedState(resultFeedViewModel, null) { listState -> @@ -154,6 +139,7 @@ fun RenderNostrNIP90ContentDiscoveryScreen( nav, null, onEmpty = { + // TODO Maybe also show some dvm image/text while waiting for the notes in this custom component FeedEmptywithStatus(status = dvmStatus) { } }, From 6bd98201f85b3733afd656c7e7038f48a35a86de Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 16 May 2024 15:16:30 +0200 Subject: [PATCH 2/5] add DVM not replying message --- .../ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt | 6 ++++-- app/src/main/res/values/strings.xml | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) 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 f2f5a4f7f..eddc12ce6 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 @@ -100,7 +102,8 @@ fun RenderNostrNIP90ContentDiscoveryScreen( val coroutineScope = rememberCoroutineScope() // TODO this now shows the first status update but there might be a better way - var dvmStatus = "DVM is processing..." + var dvmStatus = stringResource(R.string.dvm_no_status) + val thread = Thread { var count = 0 @@ -112,7 +115,6 @@ fun RenderNostrNIP90ContentDiscoveryScreen( break } else if (count > 1000) { // Might not be the best way, but we want to avoid hanging in the loop forever - break } else { count++ } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 581930251..89980e2af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -846,4 +846,6 @@ Draft Note From Msg + + DVM seems not to reply From 193e9a5adbeb52661424ceccc95dc33844361ff3 Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 16 May 2024 15:19:19 +0200 Subject: [PATCH 3/5] add more info on current dvm state --- .../ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt | 8 +++++--- app/src/main/res/values/strings.xml | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) 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 eddc12ce6..0c732212d 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 @@ -102,7 +102,8 @@ fun RenderNostrNIP90ContentDiscoveryScreen( val coroutineScope = rememberCoroutineScope() // TODO this now shows the first status update but there might be a better way - var dvmStatus = stringResource(R.string.dvm_no_status) + var dvmState = stringResource(R.string.dvm_waiting_status) + var dvmNoState = stringResource(R.string.dvm_no_status) val thread = Thread { @@ -111,9 +112,10 @@ fun RenderNostrNIP90ContentDiscoveryScreen( try { if (statusFeedViewModel.localFilter.feed().isNotEmpty()) { statusFeedViewModel.localFilter.feed()[0].event?.let { dvmStatus = it.content() } - println(dvmStatus) + 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++ @@ -142,7 +144,7 @@ fun RenderNostrNIP90ContentDiscoveryScreen( null, onEmpty = { // TODO Maybe also show some dvm image/text while waiting for the notes in this custom component - FeedEmptywithStatus(status = dvmStatus) { + FeedEmptywithStatus(status = dvmState) { } }, ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 89980e2af..2cf9242a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -847,5 +847,6 @@ From Msg + Waiting for DVM to reply DVM seems not to reply From c494cf8ac10011d8932c4ba5266ac196fe5980c1 Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 16 May 2024 15:20:04 +0200 Subject: [PATCH 4/5] Update NIP90ContentDiscoveryScreen.kt --- .../amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0c732212d..13dc1d2cb 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 @@ -111,7 +111,7 @@ fun RenderNostrNIP90ContentDiscoveryScreen( while (resultFeedViewModel.localFilter.feed().isEmpty()) { try { if (statusFeedViewModel.localFilter.feed().isNotEmpty()) { - statusFeedViewModel.localFilter.feed()[0].event?.let { dvmStatus = it.content() } + statusFeedViewModel.localFilter.feed()[0].event?.let { dvmState = it.content() } println(dvmState) break } else if (count > 1000) { From b2193f48d5ebe16878ea636c867f30d7f9327c49 Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 16 May 2024 16:48:19 +0200 Subject: [PATCH 5/5] Update NIP90ContentDiscoveryScreen.kt --- .../ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 13dc1d2cb..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 @@ -101,7 +101,7 @@ fun RenderNostrNIP90ContentDiscoveryScreen( val pagerState = rememberPagerState { 2 } val coroutineScope = rememberCoroutineScope() - // TODO this now shows the first status update but there might be a better way + // 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) @@ -128,14 +128,15 @@ fun RenderNostrNIP90ContentDiscoveryScreen( thread.start() thread.join() - // TODO Maybe render a nice header with image and DVM name from the dvmID - // TODO How do we get the event information here?, LocalCache.checkGetOrCreateNote() returns note but event is empty - // TODO oterwise we have the NIP89 info in (note.event as AppDefinitionEvent).appMetaData() + // 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, @@ -143,7 +144,7 @@ fun RenderNostrNIP90ContentDiscoveryScreen( nav, null, onEmpty = { - // TODO Maybe also show some dvm image/text while waiting for the notes in this custom component + // TODO (Optional) Maybe also show some dvm image/text while waiting for the notes in this custom component FeedEmptywithStatus(status = dvmState) { } },