From d7055062f36dd1264fec00502c8e875816114ebe Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Tue, 6 May 2025 20:51:08 +0200 Subject: [PATCH 1/4] Use new version of Markdown to sanitise url labels from # and @ --- .../amethyst/ui/components/markdown/MarkdownMediaRenderer.kt | 4 ++++ gradle/libs.versions.toml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt index 938808bf2..0ef07dbfc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/markdown/MarkdownMediaRenderer.kt @@ -80,6 +80,10 @@ class MarkdownMediaRenderer( false } + override fun shouldSanitizeUriLabel(): Boolean = true + + override fun sanitizeUriLabel(label: String): String = label.filterNot { it == '#' || it == '@' } + override fun renderImage( title: String?, uri: String, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15b2c9d46..2066afc0a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ languageId = "17.0.6" lazysodiumAndroid = "5.1.0" lifecycleRuntimeKtx = "2.8.7" lightcompressor = "1.3.2" -markdown = "077a2cde64" +markdown = "e1151c8" media3 = "1.6.1" mockk = "1.14.2" kotlinx-coroutines-test = "1.10.2" From 6206d550e65006698c9eced75f03d6569f7e4ec9 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Thu, 8 May 2025 13:09:08 +0200 Subject: [PATCH 2/4] Upgrade agp to 8.10.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15b2c9d46..e2c48cd04 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] accompanistAdaptive = "0.37.3" activityCompose = "1.10.1" -agp = "8.9.2" +agp = "8.10.0" android-compileSdk = "35" android-minSdk = "26" android-targetSdk = "35" From 5d1515659e968508c46005de9030439e65ea5a4f Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Thu, 8 May 2025 13:13:02 +0200 Subject: [PATCH 3/4] remove unused imports --- .../src/main/java/com/vitorpamplona/amethyst/ui/note/Gallery.kt | 1 - .../publicChannels/ephemChat/metadata/NewEphemeralChatScreen.kt | 1 - .../ui/screen/loggedIn/chats/rooms/ChatroomHeaderCompose.kt | 2 -- .../chats/rooms/datasource/ChatroomListFilterAssembler.kt | 2 -- .../amethyst/ui/screen/loggedIn/discover/ChannelCardCompose.kt | 2 -- .../amethyst/ui/screen/loggedIn/home/HomeScreen.kt | 2 -- .../ui/screen/loggedIn/home/live/RenderEphemeralBubble.kt | 1 - 7 files changed, 11 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Gallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Gallery.kt index 4c90939e3..6fb306d84 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Gallery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Gallery.kt @@ -36,7 +36,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.amethyst.ui.navigation.EmptyNav.nav import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.routeFor import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/ephemChat/metadata/NewEphemeralChatScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/ephemChat/metadata/NewEphemeralChatScreen.kt index abaeb374e..7d4660e03 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/ephemChat/metadata/NewEphemeralChatScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/ephemChat/metadata/NewEphemeralChatScreen.kt @@ -39,7 +39,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardCapitalization diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChatroomHeaderCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChatroomHeaderCompose.kt index 8f559631b..008c9d045 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChatroomHeaderCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChatroomHeaderCompose.kt @@ -20,7 +20,6 @@ */ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms -import android.R.attr.label import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.height @@ -55,7 +54,6 @@ import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.logTime -import com.vitorpamplona.amethyst.model.Channel import com.vitorpamplona.amethyst.model.EphemeralChatChannel import com.vitorpamplona.amethyst.model.FeatureSetType import com.vitorpamplona.amethyst.model.Note diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt index 32fc70d29..4c4a079ad 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/datasource/ChatroomListFilterAssembler.kt @@ -35,8 +35,6 @@ import com.vitorpamplona.quartz.nip04Dm.messages.PrivateDmEvent import com.vitorpamplona.quartz.nip28PublicChat.admin.ChannelCreateEvent import com.vitorpamplona.quartz.nip28PublicChat.admin.ChannelMetadataEvent import com.vitorpamplona.quartz.nip28PublicChat.message.ChannelMessageEvent -import kotlinx.coroutines.flow.toList -import kotlin.collections.flatten // This allows multiple screen to be listening to tags, even the same tag class ChatroomListState( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/ChannelCardCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/ChannelCardCompose.kt index 056e6d971..90cacb21b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/ChannelCardCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/ChannelCardCompose.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.discover import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.model.Note diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/HomeScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/HomeScreen.kt index d6f5a7ee3..3cb713b02 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/HomeScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/HomeScreen.kt @@ -71,7 +71,6 @@ import com.vitorpamplona.amethyst.ui.feeds.WatchLifecycleAndUpdateModel import com.vitorpamplona.amethyst.ui.feeds.rememberForeverPagerState import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold import com.vitorpamplona.amethyst.ui.navigation.AppBottomBar -import com.vitorpamplona.amethyst.ui.navigation.EmptyNav.nav import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.Route import com.vitorpamplona.amethyst.ui.note.NoteCompose @@ -89,7 +88,6 @@ import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.launch -import kotlin.collections.forEachIndexed @Composable fun HomeScreen( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/RenderEphemeralBubble.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/RenderEphemeralBubble.kt index 4c266f15a..6c794c733 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/RenderEphemeralBubble.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/RenderEphemeralBubble.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.model.EphemeralChatChannel import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.observeChannelNoteAuthors -import com.vitorpamplona.amethyst.ui.navigation.EmptyNav.nav import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.routeFor import com.vitorpamplona.amethyst.ui.note.Gallery From 245b767dc862cd53ad1c618e2e43bb1b71f5878e Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Thu, 8 May 2025 14:56:55 +0000 Subject: [PATCH 4/4] New Crowdin translations by GitHub Action --- amethyst/src/main/res/values-cs-rCZ/strings.xml | 14 +++++++++++++- amethyst/src/main/res/values-de-rDE/strings.xml | 12 ++++++++++++ amethyst/src/main/res/values-pt-rBR/strings.xml | 12 ++++++++++++ amethyst/src/main/res/values-sv-rSE/strings.xml | 12 ++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/res/values-cs-rCZ/strings.xml b/amethyst/src/main/res/values-cs-rCZ/strings.xml index 34c1a7608..d94357bfa 100644 --- a/amethyst/src/main/res/values-cs-rCZ/strings.xml +++ b/amethyst/src/main/res/values-cs-rCZ/strings.xml @@ -216,6 +216,13 @@ Přestat sledovat Kanál vytvořen "Informace kanálu změněna na" + Mizící chat + Relé chat + Relé chaty + Relay chaty jsou chatové skupiny ovládané jejich domácí relé. + Jsou viditelné pro všechny na Nostru a každý se jich může zúčastnit. + Jsou skvělé pro otevřené komunity kolem konkrétních témat. Některé z těchto skupin jsou efemérní + a proto zprávy časem mizí Veřejný chat Metadata veřejného chatu Veřejné konverzace jsou viditelné pro všechny na Nostru a kdokoli @@ -541,7 +548,9 @@ Odhlášení vymaže všechny vaše místní informace. Ujistěte se, že máte zálohované své privátní klíče, abyste se vyhnuli ztrátě účtu. Chcete pokračovat? Sledované značky Rele - Objevování poznámek + Balíčky Sledování + Přečtené + Algoritmy kanálu Trh Živě Komunita @@ -604,6 +613,7 @@ Aktivovat Veřejné Nová veřejná nebo soukromá skupina + Relé Soukromé Pro Předmět @@ -946,4 +956,6 @@ Vyberte seznam pro filtrování kanálu Odhlásit se na zámek zařízení Soukromá zpráva + Relé chatu + Relé, ke kterému se všichni uživatelé tohoto chatu připojují diff --git a/amethyst/src/main/res/values-de-rDE/strings.xml b/amethyst/src/main/res/values-de-rDE/strings.xml index 99c7f6f80..e7880a2e4 100644 --- a/amethyst/src/main/res/values-de-rDE/strings.xml +++ b/amethyst/src/main/res/values-de-rDE/strings.xml @@ -220,6 +220,13 @@ anz der Bedingungen ist erforderlich Entfolgen Kanal erstellt "Kanalinformationen geändert in" + Verschwindender Chat + Relay-Chat + Relay-Chats + Relaischats sind Chatgruppen, die von ihrem Home-Relais gesteuert werden. + Sie sind für jeden auf Nostr sichtbar und jeder kann an ihnen teilnehmen. + Sie eignen sich hervorragend für offene Communities rund um bestimmte Themen. Einige dieser Gruppen sind kurzsichtig + und daher verschwinden Chat-Nachrichten im Laufe der Zeit Öffentlicher Chat Öffentliche Chat Metadaten Öffentliche Chats sind für jeden auf Nostr sichtbar und jeder @@ -546,6 +553,8 @@ anz der Bedingungen ist erforderlich Das Abmelden löscht alle Ihre lokalen Informationen. Stellen Sie sicher, dass Sie Ihre privaten Schlüssel gesichert haben, um einen Kontoverlust zu vermeiden. Möchten Sie fortfahren? Gefolgte Tags Relais + Folge Paketen + Lesungen Notizen Entdeckung Marktplatz Live @@ -609,6 +618,7 @@ anz der Bedingungen ist erforderlich Aktivieren Öffentlich Neue öffentliche oder private Gruppe + Relais Privat An Betreff @@ -951,4 +961,6 @@ anz der Bedingungen ist erforderlich Liste zum Filtern des Feeds auswählen Beim Sperren des Geräts abmelden Private Nachricht + Chat-Relais + Das Relais, mit dem sich alle Benutzer dieses Chats verbinden diff --git a/amethyst/src/main/res/values-pt-rBR/strings.xml b/amethyst/src/main/res/values-pt-rBR/strings.xml index 15d1300fc..1e7c8e877 100644 --- a/amethyst/src/main/res/values-pt-rBR/strings.xml +++ b/amethyst/src/main/res/values-pt-rBR/strings.xml @@ -216,6 +216,13 @@ Desseguir Canal criado "Informação do canal mudou para" + Chat Desaparecendo + Chat Relé + Chat Relés + Chat Relés são grupos de chat controlados por seu relé de origem. + Eles são visíveis para todos no Nostr e qualquer pessoa pode participar. + São ótimos para comunidades abertas em torno de tópicos específicos. Alguns desses grupos são efêmeros, + portanto, as mensagens desaparecem com o tempo Chat público Metadados do Chat Público Os chats públicos são visíveis para todos no Nostr, e qualquer pessoa @@ -541,6 +548,8 @@ Sair exclui todas as suas informações locais. Certifique-se de fazer backup de suas chaves privadas para evitar a perda de sua conta. Você quer continuar? Tags Seguidas Relés + Pacotes Seguir + Leituras Descoberta de Notas Mercado Ao vivo @@ -604,6 +613,7 @@ Ativar Público Novo Grupo Público ou Privado + Relé Privado Para Assunto @@ -946,4 +956,6 @@ Selecione uma lista para filtrar o feed Terminar sessão no bloqueio do dispositivo Mensagem Privada + Relé de chat + O relé a qual todos os usuários deste chat se conectam diff --git a/amethyst/src/main/res/values-sv-rSE/strings.xml b/amethyst/src/main/res/values-sv-rSE/strings.xml index 9eeec7e3b..4d6656aec 100644 --- a/amethyst/src/main/res/values-sv-rSE/strings.xml +++ b/amethyst/src/main/res/values-sv-rSE/strings.xml @@ -216,6 +216,13 @@ Sluta följa Kanal skapad "Kanalinformation ändrad till" + Försvinnande chatt + Relä Chatt + Relä Chattar + Relä chattar är chattgrupper som kontrolleras av deras hem relä. + De är synliga för alla på Nostr och vem som helst kan delta på dem. + De är bra för öppna gemenskaper kring specifika ämnen. Några av dessa grupper är kortlivade + och därmed försvinner chattmeddelanden över tiden Publik Chat Metadata för offentlig chatt Offentliga chattar är synliga för alla på Nostr och alla @@ -540,6 +547,8 @@ Att logga ut raderar all din lokala information. Se till att ha dina privata nycklar säkerhetskopierade för att undvika att förlora ditt konto. Vill du fortsätta? Följda taggar Reläer + Följpaket + Läsningar Upptäckt av anteckningar Marknadsplats Live @@ -603,6 +612,7 @@ Aktivera Publik Ny offentlig eller privat grupp + Relä Privat Till Ämne @@ -945,4 +955,6 @@ Välj en lista för att filtrera flödet Logga ut när enheten låses Privat meddelande + Chatt Relä + Reläet som alla användare av den här chatten ansluter till