From fe02519737d20472d1fb8c6b56d5d20fa63e641d Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Tue, 27 Jun 2023 13:30:37 +0100 Subject: [PATCH 1/4] Updated se/de/cs translations --- app/src/main/res/values-cs/strings.xml | 55 ++++++++++++++++++++++ app/src/main/res/values-de/strings.xml | 46 ++++++++++++++++++ app/src/main/res/values-sv-rSE/strings.xml | 52 ++++++++++++++++++++ 3 files changed, 153 insertions(+) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 49f3ec920..9f207a12f 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -323,6 +323,9 @@ nostrfiles.dev – důvěryhodný Nostrfiles.dev může upravit soubor + nostrcheck.me - důvěryhodný + nostrcheck.me může upravit soubor + Ověřitelný Imgur (NIP-94) Ověří, zda Imgur upravil soubor. Nový NIP: jiní klienti ho možná neuvidí @@ -335,6 +338,9 @@ Ověřitelný Nostrfiles.dev (NIP-94) Ověří, zda Nostrfiles.dev upravil soubor. Nový NIP: jiní klienti ho možná neuvidí + Ověřitelný Nostrcheck.me (NIP-94) + Ověří, zda Nostrcheck.me upravil soubor. Nový NIP: jiní klienti ho možná neuvidí + Vaše relé (NIP-95) Soubory jsou hostovány vašimi relé. Nový NIP: zkontrolujte, zda je podporují @@ -387,4 +393,53 @@ Vždy skrýt citlivý obsah Vždy zobrazit citlivý obsah Vždy zobrazovat upozornění na obsah + + Doporučuje: + Filtrovat spam od cizinců + Varovat, když příspěvky obsahují hlášení od vašich sledovaných osob + + Nový symbol reakce + Nebyly vybrány žádné typy reakcí. Dlouhým stiskem změňte + + Zapraiser + Přidá cílovou částku sats pro tento příspěvek. Podporované klienty ji mohou zobrazovat jako ukazatel postupu k podněcování darování + Cílová částka v sats + + Zapraiser na %1$s. Do cíle zbývá %2$s sats + Číst z Relay + Zapisovat do Relay + Při pokusu o získání informací z Relay se vyskytla chyba z %1$s + Vlastník + Verze + Software + Kontakt + Podporované NIPs + Vstupné + URL plateb + Omezení + Země + Jazyky + Tagy + Politika příspěvků + Délka zprávy + Předplatné + Filtry + Délka ID předplatného + Minimální předpona + Maximální počet značek události + Délka obsahu + Minimální PoW + Ověření + Platba + Cashu Token + Vyměnit + + ŽIVĚ + OFFLINE + UKONČENO + PLÁNOVÁNO + + Živé vysílání je offline + Živé vysílání ukončeno + 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? diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d239d901b..c4f041dd1 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -330,6 +330,8 @@ anz der Bedingungen ist erforderlich nostrfiles.dev - vertrauenswürdig Nostrfiles.dev kann die Datei ändern + nostrcheck.me - vertrauenswürdig + nostrcheck.me kann die Datei ändern Verifizierbares Imgur (NIP-94) Überprüft, ob Imgur die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht @@ -343,6 +345,8 @@ anz der Bedingungen ist erforderlich Verifizierbares Nostrfiles.dev (NIP-94) Überprüft, ob Nostrfiles.dev die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht + Verifizierbares Nostrcheck.me (NIP-94) + Überprüft, ob Nostrcheck.me die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht Deine Relays (NIP-95) Dateien werden von deinen Relays gehostet. Neuer NIP: Überprüfe, ob sie unterstützt werden @@ -400,9 +404,51 @@ anz der Bedingungen ist erforderlich Empfohlene Apps: + Spam von Fremden filtern + Warnung bei Meldungen von deinen Abonnements + Neues Reaktionssymbol + Keine Reaktionstypen ausgewählt. Lange drücken, um zu ändern + Zapraiser + Fügt einen Zielbetrag in Sats für diesen Beitrag hinzu. Unterstützende Clients können dies als Fortschrittsbalken anzeigen, um Spenden zu fördern + Zielbetrag in Sats + Zapraiser bei %1$s. %2$s Sats bis zum Ziel + Von Relay lesen + In Relay schreiben + Ein Fehler ist beim Abrufen von Relay-Informationen von %1$s aufgetreten + Inhaber + Version + Software + Kontakt + Unterstützte NIPs + Eintrittsgebühren + Zahlungs-URL + Einschränkungen + Länder + Sprachen + Tags + Veröffentlichungsrichtlinie + Nachrichtenlänge + Abonnements + Filter + Länge der Abonnement-ID + Mindestpräfix + Maximale Anzahl von Ereignis-Tags + Inhaltslänge + Mindest-PoW + Authentifizierung + Zahlung + Cashu-Token + Einlösen + LIVE + OFFLINE + BEENDET + GEPLANT + Livestream ist offline + Livestream beendet + 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? \ No newline at end of file diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 1b22f249d..ca3ef1876 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -323,6 +323,8 @@ nostrfiles.dev - betrodd Nostrfiles.dev kan ändra filen + nostrcheck.me - betrodd + nostrcheck.me kan ändra filen Verifierbar Imgur (NIP-94) Kontrollerar om Imgur modifierat filen. Nytt NIP: andra klienter kanske inte ser det @@ -336,6 +338,8 @@ Verifierbar Nostrfiles.dev (NIP-94) Kontrollerar om Nostrfiles.dev modifierat filen. Nytt NIP: andra klienter kanske inte ser det + Verifierbar Nostrcheck.me (NIP-94) + Kontrollerar om Nostrcheck.me modifierat filen. Nytt NIP: andra klienter kanske inte ser det Dina Reläer (NIP-95) Filer är värd för dina reläer. Nytt NIP: kontrollera om de stöder @@ -387,6 +391,54 @@ Dölj alltid känsligt innehåll Visa alltid känsligt innehåll Visa alltid innehållsvarningar + Rekommenderas: + Filtrera skräppost från främlingar + Varna när inlägg har rapporter från dina följare + + Ny reaktionssymbol + Inga reaktionstyper valda. Håll ned för att ändra + + Zapraiser + Lägger till en målsumma av sats för detta inlägg. Stödjande klienter kan visa detta som en framstegsindikator för att stimulera donationer + Målsumma i sats + + Zapraiser på %1$s. %2$s sats kvar till målet + Läs från Relay + Skriv till Relay + Ett fel inträffade vid försök att hämta information från Relay %1$s + Ägare + Version + Programvara + Kontakt + Stödda NIPs + Entréavgifter + Betalnings-URL + Begränsningar + Länder + Språk + Taggar + Publiceringspolicy + Meddelandelängd + Prenumerationer + Filter + Längd på prenumerations-ID + Minsta prefix + Maximalt antal händelse-taggar + Innehållslängd + Minsta PoW + Autentisering + Betalning + Cashu Token + Inlösen + + LIVE + OFFLINE + SLUTADE + PLANERAD + + Direktsändning är offline + Direktsändning avslutad + 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? From 985771beba9362b124e069896ea449a9419a0e3e Mon Sep 17 00:00:00 2001 From: Believethehype Date: Wed, 28 Jun 2023 11:49:14 +0200 Subject: [PATCH 2/4] Add copy button to Cashu Rendering, better default error message --- .../amethyst/service/CashuProcessor.kt | 5 +- .../amethyst/ui/components/CashuRedeem.kt | 72 ++++++++++++++----- 2 files changed, 57 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/CashuProcessor.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/CashuProcessor.kt index 14c88a39b..536cc6a0c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/CashuProcessor.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/CashuProcessor.kt @@ -14,6 +14,7 @@ import java.util.Base64 @Immutable data class CashuToken( + val token: String, val mint: String, val totalAmount: Long, val fees: Int, @@ -37,7 +38,7 @@ class CashuProcessor { val fees = Math.max(((totalAmount * 0.02).toInt()), 2) val redeemInvoiceAmount = totalAmount - fees - return GenericLoadable.Loaded(CashuToken(mint, totalAmount, fees, redeemInvoiceAmount, proofs)) + return GenericLoadable.Loaded(CashuToken(cashuToken, mint, totalAmount, fees, redeemInvoiceAmount, proofs)) } catch (e: Exception) { return GenericLoadable.Error("Could not parse this cashu token") } @@ -84,7 +85,7 @@ class CashuProcessor { if (successful) { onSuccess("Redeemed ${token.totalAmount} Sats" + " (Fees: ${token.fees} Sats)") } else { - onError(tree?.get("detail")?.asText()?.split('.')?.getOrNull(0) ?: "Error") + onError(tree?.get("detail")?.asText()?.split('.')?.getOrNull(0) ?: "Cashu: Tokens already spent.") } } catch (e: Exception) { onError("Token melt failure: " + e.message) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt index afe48697c..7b4144baa 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/CashuRedeem.kt @@ -16,9 +16,11 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextDirection import androidx.compose.ui.unit.dp @@ -67,6 +69,7 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) { val useWebService = false val context = LocalContext.current val scope = rememberCoroutineScope() + val clipboardManager = LocalClipboardManager.current Column( modifier = Modifier @@ -114,17 +117,17 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) { ) } - Button( + Row( + modifier = Modifier .fillMaxWidth() - .padding(vertical = 10.dp), - onClick = { - // Just in case we want to use a webservice instead of directly contacting the mint - if (useWebService) { - val url = "https://redeem.cashu.me?token=$token&lightning=$lud16&autopay=true" - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) - startActivity(context, intent, null) - } else { + .padding(bottom = 10.dp) + ) { + Button( + + modifier = Modifier + .padding(vertical = 10.dp).padding(horizontal = 2.dp), + onClick = { if (lud16 != null) { CashuProcessor().melt( token, @@ -142,17 +145,50 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) { ) } else { scope.launch { - Toast.makeText(context, "No Lightning Address set", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "No Lightning Address set", + Toast.LENGTH_SHORT + ).show() } } - } - }, - shape = QuoteBorder, - colors = ButtonDefaults.buttonColors( - backgroundColor = MaterialTheme.colors.primary - ) - ) { - Text(stringResource(R.string.cashu_redeem), color = Color.White, fontSize = 20.sp) + }, + shape = QuoteBorder, + colors = ButtonDefaults.buttonColors( + backgroundColor = MaterialTheme.colors.primary + ) + ) { + Text( + stringResource(R.string.cashu_redeem), + color = Color.White, + fontSize = 18.sp + ) + } + Button( + modifier = Modifier + .padding(vertical = 10.dp).padding(horizontal = 1.dp), + onClick = { + if (useWebService) { + // In case we want to use the cashu.me webservice + val url = "https://redeem.cashu.me?token=$token&lightning=$lud16&autopay=false" + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + startActivity(context, intent, null) + } else { + // Copying the token to clipboard for now + var orignaltoken = token.token + clipboardManager.setText(AnnotatedString("$orignaltoken")) + scope.launch { + Toast.makeText(context, "Copied token to clipboard", Toast.LENGTH_SHORT).show() + } + } + }, + shape = QuoteBorder, + colors = ButtonDefaults.buttonColors( + backgroundColor = MaterialTheme.colors.primary + ) + ) { + Text("⎘", color = Color.White, fontSize = 18.sp) + } } } } From 9f96e84378420fb4ec859f2918d79e8f578c8cd3 Mon Sep 17 00:00:00 2001 From: greenart7c3 <115044884+greenart7c3@users.noreply.github.com> Date: Wed, 28 Jun 2023 07:58:19 -0300 Subject: [PATCH 3/4] fix rendering url of highlight note --- .../java/com/vitorpamplona/amethyst/model/LocalCache.kt | 2 ++ .../java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt | 6 ++---- 2 files changed, 4 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 7bb5f3657..da9babb14 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -51,6 +51,7 @@ object LocalCache { } fun getUserIfExists(key: String): User? { + if (key.isEmpty()) return null return users[key] } @@ -108,6 +109,7 @@ object LocalCache { } private fun isValidHexNpub(key: String): Boolean { + if (key.isBlank()) return false if (key.contains(":")) return false return HexValidator.isHex(key) 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 0bdd0c86f..8cf04348a 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 @@ -2081,9 +2081,7 @@ fun DisplayHighlight( nav ) - authorHex?.let { - DisplayQuoteAuthor(authorHex, url, nav) - } + DisplayQuoteAuthor(authorHex ?: "", url, nav) } @Composable @@ -2105,7 +2103,7 @@ private fun DisplayQuoteAuthor( } } - Row() { + Row { userBase?.let { userBase -> LoadAndDisplayUser(userBase, nav) } From 3a70ce158727b28f95067255299a06f18de657e4 Mon Sep 17 00:00:00 2001 From: Zoltan <34719275+ZsZolee@users.noreply.github.com> Date: Wed, 28 Jun 2023 16:52:39 +0200 Subject: [PATCH 4/4] Additional Hungarian translation --- app/src/main/res/values-hu/strings.xml | 36 +++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index cfd733a01..8ef1dbea9 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -391,7 +391,7 @@ Az érzékeny tartalmat mindig rejtse el Az érzékeny tartalmat mindig jelenítse meg A tartalomra vonatkozó figyelmeztetéseket mindig jelenítse meg - + Ajánlottak: Idegenektől SPAM szűrése Figyelmeztessen ha a bejegyzések azok által akiket követek jelentve vannak @@ -406,4 +406,38 @@ A ZapGyűjtés %1$s-nál. %2$s sats kell a célig Olvassás a csomópontból Írás a csomópontra + Hiba történt a csomópont információ szerzés közben a %1$s -tól + Tulajdonos + Verzió + Szoftver + Kapcsolat + Támogatott NIP-ek + Csatlakozás díja + Fizetési cím + Korlátok + Országok + Nyelvek + Címkék + Szabályzat + Üzenet hossza + Feliratkozások + Filterek + Feliratkozás azonosítójának hossza + Minimális előtag + Maximális eseménycímkék + Tartalom hossza + Minimális PoW + Azonosítás + Fizetés + Cashu Token + Beváltás + + ÉLŐ + OFFLINE + VÉGE + ÜTEMEZETT + + Az élő közvetítés offline + Az élő közvetítésnek vége + A Kijelentkezés minden helyben tárolt információt töröl. Bizonyosodj meg róla, hogy a privát kulcsod le van mentve, ezzel elkerülve a fiókod elvesztését. Folytatni akarod?