From e04a35afed3df7d3572e22d23029c2773bbe591f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 6 Oct 2023 16:27:09 -0400 Subject: [PATCH 1/4] Fixes bug of not immediately loading chat rooms --- .../vitorpamplona/amethyst/service/NostrAccountDataSource.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt index 2cae8f0df..90467bf12 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrAccountDataSource.kt @@ -147,6 +147,8 @@ object NostrAccountDataSource : NostrDataSource("AccountData") { latestEOSEs.addOrUpdate(account.userProfile(), account.defaultNotificationFollowList, relayUrl, time) } else { hasLoadedTheBasics[account.userProfile()] = true + + invalidateFilters() } } From 6748abbf70416e36a99a16ba02f819fe2296c6e1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 6 Oct 2023 16:27:40 -0400 Subject: [PATCH 2/4] Fixes failure to load long form content with d tags reserved url chars --- .../com/vitorpamplona/amethyst/model/LocalCache.kt | 10 +++++++++- .../com/vitorpamplona/amethyst/ui/note/NoteCompose.kt | 7 ++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 97fd92232..284e7abdc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -94,7 +94,15 @@ object LocalCache { val noteEvent = note.event return if (noteEvent is AddressableEvent) { // upgrade to the latest - checkGetOrCreateAddressableNote(noteEvent.address().toTag()) + val newNote = checkGetOrCreateAddressableNote(noteEvent.address().toTag()) + + if (newNote != null && noteEvent is Event && newNote.event == null) { + val author = note.author ?: getOrCreateUser(noteEvent.pubKey) + newNote.loadEvent(noteEvent as Event, author, emptyList()) + note.moveAllReferencesTo(newNote) + } + + newNote } else { note } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index faf9adf2c..6eee2b03f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -212,6 +212,7 @@ import kotlinx.coroutines.launch import java.io.File import java.math.BigDecimal import java.net.URL +import java.net.URLEncoder import java.util.Locale import kotlin.time.measureTimedValue @@ -1276,16 +1277,16 @@ fun routeFor(note: Note, loggedIn: User): String? { } } else if (noteEvent is LiveActivitiesEvent || noteEvent is LiveActivitiesChatMessageEvent) { note.channelHex()?.let { - return "Channel/$it" + return "Channel/${URLEncoder.encode(it, "utf-8")}" } } else if (noteEvent is ChatroomKeyable) { val room = noteEvent.chatroomKey(loggedIn.pubkeyHex) loggedIn.createChatroom(room) return "Room/${room.hashCode()}" } else if (noteEvent is CommunityDefinitionEvent) { - return "Community/${note.idHex}" + return "Community/${URLEncoder.encode(note.idHex, "utf-8")}" } else { - return "Note/${note.idHex}" + return "Note/${URLEncoder.encode(note.idHex, "utf-8")}" } return null From 2f1c221a7c9148ce0a75888b7801554018b56b77 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Fri, 6 Oct 2023 20:29:37 +0000 Subject: [PATCH 3/4] New Crowdin translations by GitHub Action --- app/src/main/res/values-fr/strings.xml | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c3746d50e..9afddef6f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -36,6 +36,8 @@ Connectez vous avec une clé privée pour pouvoir envoyer des zaps Connectez-vous avec une clé privée pour Suivre Connectez-vous avec une clé privée pour ne plus Suivre + Vous utilisez une clé publique et les clés publiques sont en lecture seule. Connectez-vous avec une clé privée pour pouvoir masquer un mot ou une phrase + Vous utilisez une clé publique et les clés publiques sont en lecture seule. Connectez-vous avec une clé privée pour pouvoir afficher un mot ou une phrase Zaps Nombre de vues Boost @@ -191,6 +193,8 @@ Clé secrète (nsec) copiée dans le presse-papiers Copier ma clé secrète Échec de l\'authentification + La biométrie n\'a pas pu authentifier le propriétaire de ce téléphone + La biométrie n\'a pas pu authentifier le propriétaire de ce téléphone. Erreur : %1$s Erreur "Créé par %1$s" "Image de badge pour %1$s" @@ -270,6 +274,8 @@ (0–100)% Clôturer après jours + Impossible de voter + Le Sondage est fermé aux nouveaux votes Montant des Zap Un seul vote par utilisateur est autorisé sur ce type de sondage "Recherche de l'Événement %1$s" @@ -279,6 +285,7 @@ Merci pour tout votre travail ! Créer et Ajouter Les auteurs du sondage ne peuvent pas voter dans leurs propres sondages. + Qu\'est-ce que cela signifie ? Ce contenu est le même depuis le message Ce contenu a changé. L\'auteur n\'a peut-être pas vu ou approuvé le changement Ajouter une Image @@ -491,6 +498,7 @@ Les clients supportés vont diviser et transférer les zaps aux utilisateurs ajoutés ici au lieu du vôtre Rechercher et Ajouter un Utilisateur Nom d\'utilisateur ou nom affiché + Configuration lightning manquante L\'utilisateur %1$s n\'a pas configuré d\'adresse Lightning pour recevoir des sats Pourcentage 25 @@ -505,4 +513,25 @@ Aucun portefeuille trouvé pour payer une facture lightning. Veuillez installer un portefeuille Lightning pour utiliser les zaps Mots Masqués Masquer un nouveau mot ou une phrase + Photo de profil + Afficher les photos de profil + Sélectionnez une option + Impossible de payer la facture + Impossible de retirer + Impossible de configurer Wallet Connect + %1$s sats ont été envoyés à votre portefeuille. (Frais : %2$s sats) + Impossible de se connecter à Tor + Téléchargement du document relais indisponible + Impossible d\'assembler LNUrl à partir de l\'adresse Lightning \"%1$s\". Vérifiez la configuration de l\'utilisateur + Le service lightning du récepteur à %1$s n\'est pas disponible. Il a été calculé à partir de l\'adresse lightning \"%2$s\". Erreur: %3$s. Vérifiez si le serveur est en ligne et si l\'adresse lightning est correcte + Impossible de résoudre %1$s. Vérifiez si vous êtes connecté, si le serveur est en ligne et si l\'adresse lightning %2$s est correcte + Impossible de récupérer la facture depuis %1$s + Erreur lors de l\'analyse du JSON à partir de l\'Adresse Lightning. Vérifiez la configuration lightning de l\'utilisateur + URL de callback introuvable dans la configuration serveur de l\'adresse lightning de l\'utilisateur + Erreur lors de l\'analyse du JSON à partir de la récupération de la facture de l\'Adresse Lightning. Vérifiez la configuration Lightning de l\'utilisateur + Montant de la facture (%1$s sats) incorrect de %2$s. Il aurait dû être %3$s + Impossible de créer une facture lightning avant d\'envoyer le zap. Le portefeuille lightning du destinataire a envoyé l\'erreur suivante : %1$s + Impossible de créer une facture lightning avant d\'envoyer le zap. Élément pr introuvable dans le JSON résultant. + Utilisateur en lecture seule + Aucune réaction configurée From 275051ed308b4bfeb960bcf859248424579a1573 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 6 Oct 2023 16:37:55 -0400 Subject: [PATCH 4/4] Fixes visibility of the bottom and top bar when the user comes back to the app. --- .../amethyst/ui/screen/loggedIn/MainScreen.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt index df6cec710..d767fe7fc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt @@ -23,7 +23,6 @@ import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState import androidx.compose.runtime.derivedStateOf @@ -265,7 +264,10 @@ fun MainScreen( } } - WatchNavStateToUpdateBarVisibility(navState, bottomBarOffsetHeightPx) + WatchNavStateToUpdateBarVisibility(navState) { + bottomBarOffsetHeightPx.value = 0f + shouldShow.value = true + } ModalNavigationDrawer( drawerState = drawerState, @@ -393,16 +395,16 @@ private fun DisplayErrorMessages(accountViewModel: AccountViewModel) { } @Composable -fun WatchNavStateToUpdateBarVisibility(navState: State, bottomBarOffsetHeightPx: MutableState) { +fun WatchNavStateToUpdateBarVisibility(navState: State, onReset: () -> Unit) { LaunchedEffect(key1 = navState.value) { - bottomBarOffsetHeightPx.value = 0f + onReset() } val lifeCycleOwner = LocalLifecycleOwner.current DisposableEffect(lifeCycleOwner) { val observer = LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_RESUME) { - bottomBarOffsetHeightPx.value = 0f + onReset() } }