diff --git a/amethyst/build.gradle b/amethyst/build.gradle
index 161d3de06..d154fda61 100644
--- a/amethyst/build.gradle
+++ b/amethyst/build.gradle
@@ -12,8 +12,8 @@ android {
applicationId "com.vitorpamplona.amethyst"
minSdk 26
targetSdk 34
- versionCode 383
- versionName "0.88.6"
+ versionCode 385
+ versionName "0.88.8"
buildConfigField "String", "RELEASE_NOTES_ID", "\"2a34cbadd03212c8162e1ff896ba12641821088a2ec8d5e40d54aa80c0510800\""
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt
index 7580bdc2e..5231262ce 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt
@@ -55,10 +55,17 @@ class EventNotificationConsumer(
// PushNotification Wraps don't include a receiver.
// Test with all logged in accounts
+ var matchAccount = false
LocalPreferences.allSavedAccounts().forEach {
- if (it.hasPrivKey || it.loggedInWithExternalSigner) {
+ if (!matchAccount && it.hasPrivKey || it.loggedInWithExternalSigner) {
LocalPreferences.loadCurrentAccountFromEncryptedStorage(it.npub)?.let { acc ->
- consumeIfMatchesAccount(event, acc)
+ Log.d("EventNotificationConsumer", "New Notification Testing if for ${it.npub}")
+ try {
+ consumeIfMatchesAccount(event, acc)
+ matchAccount = true
+ } catch (e: Exception) {
+ // Not for this account.
+ }
}
}
}
@@ -71,7 +78,7 @@ class EventNotificationConsumer(
pushWrappedEvent.cachedGift(account.signer) { notificationEvent ->
val consumed = LocalCache.hasConsumed(notificationEvent)
val verified = LocalCache.justVerify(notificationEvent)
- Log.d("EventNotificationConsumer", "New Notification Arrived for ${account.userProfile().toBestDisplayName()} consumed= $consumed && verified= $verified")
+ Log.d("EventNotificationConsumer", "New Notification ${notificationEvent.kind} ${notificationEvent.id} Arrived for ${account.userProfile().toBestDisplayName()} consumed= $consumed && verified= $verified")
if (!consumed && verified) {
Log.d("EventNotificationConsumer", "New Notification was verified")
unwrapAndConsume(notificationEvent, account) { innerEvent ->
@@ -154,6 +161,7 @@ class EventNotificationConsumer(
event.id,
content,
user,
+ event.createdAt,
userPicture,
noteUri,
applicationContext,
@@ -194,7 +202,7 @@ class EventNotificationConsumer(
val userPicture = note.author?.profilePicture()
val noteUri = note.toNEvent()
notificationManager()
- .sendDMNotification(event.id, content, user, userPicture, noteUri, applicationContext)
+ .sendDMNotification(event.id, content, user, event.createdAt, userPicture, noteUri, applicationContext)
}
}
}
@@ -237,31 +245,63 @@ class EventNotificationConsumer(
val author = LocalCache.getOrCreateUser(it.pubKey)
val senderInfo = Pair(author, it.content.ifBlank { null })
- acc.decryptContent(noteZapped) {
- Log.d("EventNotificationConsumer", "Notify Decrypted if Private Note")
+ if (noteZapped.event?.content() != null) {
+ acc.decryptContent(noteZapped) {
+ Log.d("EventNotificationConsumer", "Notify Decrypted if Private Note")
- val zappedContent = it.split("\n").get(0)
+ val zappedContent = it.split("\n").get(0)
+
+ val user = senderInfo.first.toBestDisplayName()
+ var title = stringRes(applicationContext, R.string.app_notification_zaps_channel_message, amount)
+ senderInfo.second?.ifBlank { null }?.let { title += " ($it)" }
+
+ var content =
+ stringRes(
+ applicationContext,
+ R.string.app_notification_zaps_channel_message_from,
+ user,
+ )
+ zappedContent.let {
+ content +=
+ " " +
+ stringRes(
+ applicationContext,
+ R.string.app_notification_zaps_channel_message_for,
+ zappedContent,
+ )
+ }
+ val userPicture = senderInfo?.first?.profilePicture()
+ val noteUri = "nostr:Notifications"
+
+ Log.d("EventNotificationConsumer", "Notify ${event.id} $content $title $noteUri")
+
+ notificationManager()
+ .sendZapNotification(
+ event.id,
+ content,
+ title,
+ event.createdAt,
+ userPicture,
+ noteUri,
+ applicationContext,
+ )
+ }
+ } else {
+ // doesn't have a base note to refer to.
+ Log.d("EventNotificationConsumer", "Notify Zapped note not available")
val user = senderInfo.first.toBestDisplayName()
var title = stringRes(applicationContext, R.string.app_notification_zaps_channel_message, amount)
senderInfo.second?.ifBlank { null }?.let { title += " ($it)" }
- var content =
+ val content =
stringRes(
applicationContext,
R.string.app_notification_zaps_channel_message_from,
user,
)
- zappedContent.let {
- content +=
- " " +
- stringRes(
- applicationContext,
- R.string.app_notification_zaps_channel_message_for,
- zappedContent,
- )
- }
- val userPicture = senderInfo?.first?.profilePicture()
+
+ val userPicture = senderInfo.first.profilePicture()
val noteUri = "nostr:Notifications"
Log.d("EventNotificationConsumer", "Notify ${event.id} $content $title $noteUri")
@@ -271,6 +311,7 @@ class EventNotificationConsumer(
event.id,
content,
title,
+ event.createdAt,
userPicture,
noteUri,
applicationContext,
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt
index 4bc761c5d..f29ceb3e8 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt
@@ -90,6 +90,7 @@ object NotificationUtils {
id: String,
messageBody: String,
messageTitle: String,
+ time: Long,
pictureUrl: String?,
uri: String,
applicationContext: Context,
@@ -101,6 +102,7 @@ object NotificationUtils {
id,
messageBody,
messageTitle,
+ time,
pictureUrl,
uri,
channelId,
@@ -113,6 +115,7 @@ object NotificationUtils {
id: String,
messageBody: String,
messageTitle: String,
+ time: Long,
pictureUrl: String?,
uri: String,
applicationContext: Context,
@@ -124,6 +127,7 @@ object NotificationUtils {
id,
messageBody,
messageTitle,
+ time,
pictureUrl,
uri,
channelId,
@@ -136,6 +140,7 @@ object NotificationUtils {
id: String,
messageBody: String,
messageTitle: String,
+ time: Long,
pictureUrl: String?,
uri: String,
channelId: String,
@@ -151,6 +156,7 @@ object NotificationUtils {
id = id,
messageBody = messageBody,
messageTitle = messageTitle,
+ time = time,
picture = imageResult.drawable as? BitmapDrawable,
uri = uri,
channelId,
@@ -162,6 +168,7 @@ object NotificationUtils {
id = id,
messageBody = messageBody,
messageTitle = messageTitle,
+ time = time,
picture = null,
uri = uri,
channelId,
@@ -175,6 +182,7 @@ object NotificationUtils {
id: String,
messageBody: String,
messageTitle: String,
+ time: Long,
picture: BitmapDrawable?,
uri: String,
channelId: String,
@@ -218,6 +226,7 @@ object NotificationUtils {
.setContentIntent(contentPendingIntent)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true)
+ .setWhen(time * 1000)
// Build the notification
val builder =
@@ -236,6 +245,7 @@ object NotificationUtils {
.setPublicVersion(builderPublic.build())
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true)
+ .setWhen(time * 1000)
notify(notId, builder.build())
}
diff --git a/amethyst/src/main/res/values-cs/strings.xml b/amethyst/src/main/res/values-cs/strings.xml
index f077e465c..cd2b10fe4 100644
--- a/amethyst/src/main/res/values-cs/strings.xml
+++ b/amethyst/src/main/res/values-cs/strings.xml
@@ -14,6 +14,7 @@
Nepodařilo se dešifrovat zprávu
Obrázek skupiny
Explicitní obsah
+ Nevyžádaná pošta
Počet spamových událostí z tohoto relé
Zneužívání identity
Nezákonné jednání
@@ -102,6 +103,7 @@
Přidat přeposílání
Zobrazované jméno
Moje zobrazované jméno
+ Ostrich McAwesome
Vítejte Ostrich!
Uživatelské jméno
Moje uživatelské jméno
@@ -197,6 +199,9 @@
Nostr Adresa
nikdy
nyní
+ h
+ m
+ d
Nahota
Neslušnost / Nenávistná řeč
Nahlásit nenávistnou řeč
@@ -297,6 +302,7 @@
Minimální zaps
Maximální zaps
Konsensus
+ (0–100)%
Uzavřít po
dnech
Nebylo možné hlasovat
@@ -359,6 +365,7 @@
Upozorní vás, když dorazí soukromá zpráva
Přijaté zapsy
Upozorní vás, když vás někdo zapsne
+ %1$s satů
Od %1$s
pro %1$s
Upozornit:
@@ -410,6 +417,7 @@
Minimální PoW
Ověření
Platba
+ Cashu Token
Vyměnit
Poslat do Zap peněženky
Otevřít v Cashu Wallet
@@ -417,6 +425,7 @@
Není nastavena žádná Lightning adresa
Token zkopírován do schránky
ŽIVĚ
+ OFFLINE
UKONČENO
PLÁNOVÁNO
Živé vysílání je offline
@@ -437,6 +446,7 @@
Nastavení
Vždy
Pouze Wi-Fi
+ Neomezená WiFi
Nikdy
Hotovo
Zjednodušené
@@ -503,6 +513,7 @@
Hlasy jsou váženy podle hodnoty zapu. Můžete nastavit minimální částku, abyste se vyhnuli spammerům, a maximální částku, abyste zabránili velkým zapperům, kteří by mohli ovládnout hlasování. Použijte stejnou částku v obou polích, aby byla hodnota každého hlasu stejná. Nechte prázdné pro přijetí libovolné částky.
Nelze odeslat zap
Poslat zprávu uživateli
+ OK
Nepodařilo se dosáhnout %1$s: %2$s
Nepodařilo se sestavit adresu URL NIP-11 pro %1$s: %2$s
Nepodařilo se dosáhnout %1$s: %2$s
@@ -524,6 +535,7 @@
Chybí nastavení blesku
Uživatel %1$s nemá nastavenou bleskovou adresu pro přijímání satoshi
Procenta
+ 25
Rozdělování Zapů s
Přeposílání Zapů na
Bleskové peněženky nenalezený
@@ -590,9 +602,11 @@
Ahoj, je to stále k dispozici?
Prodat předmět
Název
+ iPhone 13
Stav
Kategorie
Cena (v Sats)
+ 1000
Místo
Město, stát, země
Nový
@@ -611,6 +625,7 @@
Knihy
Domácí zvířata
Sportovní
+ Fitness
Umění
Vyrobí
Domovský
@@ -625,6 +640,8 @@
Server po nahrání neposkytl URL
Nepodařilo se stáhnout nahraná média ze serveru
Nelze připravit místní soubor k nahrání: %1$s
+ Nahrání selhalo: %1$s
+ Smazání selhalo: %1$s
Upravit koncept
Přihlášení pomocí QR kódu
Trasa
@@ -644,6 +661,8 @@
Odpověď
Zvýšit nebo citovat
Olajkovat
+ Zap
+ Změnit rychlé reakce
Obrázek profilu %1$s
Relé %1$s
Rozbalit seznam relací
@@ -658,6 +677,7 @@
Zrušit Zap-zběrku
Místo
Odstranit umístění
+ Zap splits
Zrušit rozdělení Zap
Přidat upozornění na obsah
Odstranit upozornění na obsah
@@ -702,9 +722,11 @@
Maximální limit
Omezené zápisy
Rozštěpováno od
+ FORK
Git repositář: %1$s
Internet:
Klon:
+ OTS: %1$s
Důkaz časového razítka
Existuje důkaz, že tento příspěvek byl podepsán někdy před %1$s. Důkaz byl označen v Bitcoin blockchainu v tomto datu a čase.
Upravit příspěvek
@@ -732,7 +754,6 @@
Žádost o práci od DVM
Žádost o platbu odeslána, čeká se na potvrzení z vaší peněženky
Čekání na potvrzení platby DVM nebo na zaslání výsledků
-
Špatný požadavek - Server nemůže nebo nechce zpracovat požadavek.
Neautorizovaný - Uživatel nemá platné přihlašovací údaje
Požadována platba - Server vyžaduje platbu pro dokončení požadavku
@@ -752,7 +773,6 @@
Rozsah nesplnitelný - Server nemůže splnit hodnotu uvedenou v hlavičce rozsahu požadavku.
Očekávání selhalo - Server nemůže splnit požadavky uvedené v hlavičce očekávání požadavku
Vyžadována aktualizace - Server odmítá zpracovat požadavek s aktuálním protokolem, pokud klient neaktualizuje na jiný protokol.
-
Interní chyba serveru - Server narazil na neočekávanou chybu a nemůže dokončit požadavek
Nerealizováno - Server nemůže splnit požadavek nebo nerozpoznává metodu požadavku
Špatná brána - Server funguje jako brána a obdržel neplatnou odpověď od hostitele
@@ -763,9 +783,4 @@
Nedostatečné úložiště - Server nemá dostatek úložiště, aby úspěšně zpracoval požadavek
Detekována smyčka - Server detekuje nekonečnou smyčku při zpracování požadavku
Vyžadováno ověření sítě - Klient musí být autentizován, aby získal přístup k síti
-
- Neomezená WiFi
- Nahrání selhalo: %1$s
- Smazání selhalo: %1$s
- Změnit rychlé reakce
diff --git a/amethyst/src/main/res/values-de/strings.xml b/amethyst/src/main/res/values-de/strings.xml
index 749c1d593..eb4dcbe31 100644
--- a/amethyst/src/main/res/values-de/strings.xml
+++ b/amethyst/src/main/res/values-de/strings.xml
@@ -14,6 +14,7 @@
Nachricht konnte nicht entschlüsselt werden
Gruppenbild
Anstößiger Inhalt
+ Spam
Anzahl der Spam-Ereignisse von diesem Relais
Vortäuschung
Illegales Verhalten
@@ -44,11 +45,15 @@
Sie verwenden einen öffentlichen Schlüssel und öffentliche Schlüssel sind schreibgeschützt. Mit einem privaten Schlüssel anmelden, um nicht mehr zu folgen
Sie verwenden einen öffentlichen Schlüssel, und öffentliche Schlüssel sind nur lesbar. Melden Sie sich mit einem privaten Schlüssel an, um ein Wort oder einen Satz auszublenden
Sie verwenden einen öffentlichen Schlüssel und öffentliche Schlüssel sind schreibgeschützt. Mit einem privaten Schlüssel anmelden, um ein Wort oder einen Satz anzeigen zu können
+ Zaps
Aufrufe
+ Boost
+ boosted
bearbeitet
Bearbeitung #%1$s
Original
Zitat
+ Fork
Eine Bearbeitung vorschlagen
Neuer Betrag in Sats
Hinzufügen
@@ -87,6 +92,7 @@
Fehler beim Hochladen des Bildes
Relay-Adresse
Beiträge
+ Bytes
Fehler
Anzahl der Verbindungsfehler in dieser Sitzung
Startseite
@@ -97,6 +103,7 @@
Relay hinzufügen
Anzeigename
Mein Anzeigename
+ Ostrich McAwesome
Willkommen Ostrich!
Benutzername
Mein Benutzername
@@ -197,6 +204,7 @@ anz der Bedingungen ist erforderlich
nie
jetzt
s
+ m
t
Nacktheit
Beleidigungen / Hassrede
@@ -300,6 +308,7 @@ anz der Bedingungen ist erforderlich
Mindest-Zap-Betrag
Maximaler Zap-Betrag
Konsens
+ (0–100)%
Schließen nach
Tagen
Konnte nicht abstimmen
@@ -391,6 +400,7 @@ anz der Bedingungen ist erforderlich
Die Menge in Bytes, die von diesem Relais empfangen wurde, einschließlich Filter und Ereignisse
Ein Fehler ist beim Abrufen von Relay-Informationen von %1$s aufgetreten
Inhaber
+ Version
Programme
Kontakt
Unterstützte NIPs
@@ -399,6 +409,7 @@ anz der Bedingungen ist erforderlich
Einschränkungen
Länder
Sprachen
+ Tags
Veröffentlichungsrichtlinie
Fehler und Hinweise von diesem Relais
Nachrichtenlänge
@@ -418,6 +429,8 @@ anz der Bedingungen ist erforderlich
Token kopieren
Keine Lightning-Adresse festgelegt
Token in die Zwischenablage kopiert
+ LIVE
+ OFFLINE
BEENDET
GEPLANT
Livestream ist offline
@@ -427,7 +440,9 @@ anz der Bedingungen ist erforderlich
Relais
Notizen Entdeckung
Marktplatz
+ Live
Gemeinschaft
+ Plaudern
Genehmigte Beiträge
Diese Gruppe hat keine Beschreibung oder Regeln. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.
Diese Community hat keine Beschreibung. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.
@@ -436,10 +451,12 @@ anz der Bedingungen ist erforderlich
Einstellungen
Immer
Nur WLAN
+ Unbegrenztes WLAN
Nie
Fertig
Vereinfacht
Leistung
+ System
Hell
Dunkel
Anwendungseinstellungen
@@ -501,6 +518,7 @@ anz der Bedingungen ist erforderlich
Die Abstimmungen werden nach der Höhe des Zaps gewichtet. Sie können einen Mindestbetrag festlegen, um Spam zu verhindern, und einen Höchstbetrag, um zu verhindern, dass große Zapper die Abstimmung dominieren. Verwenden Sie denselben Betrag in beiden Feldern, um sicherzustellen, dass jeder Stimme der gleiche Wert zukommt. Lassen Sie es leer, um jeden Betrag zu akzeptieren.
Zap konnte nicht gesendet werden
Mit dem Benutzer kommunizieren
+ OK
Konnte %1$s nicht erreichen: %2$s
Fehler beim Zusammenstellen der NIP-11-URL für %1$s: %2$s
Konnte %1$s nicht erreichen: %2$s
@@ -512,6 +530,8 @@ anz der Bedingungen ist erforderlich
Aktiv für:
Startseite
Nachrichten
+ Plaudern
+ Global
Suche
Zaps aufteilen und weiterleiten
Unterstützende Clients werden Zaps an die hier hinzugefügten Benutzer aufteilen und weiterleiten, anstatt an Sie
@@ -520,6 +540,7 @@ anz der Bedingungen ist erforderlich
Fehlende Lightning-Konfiguration
Benutzer %1$s hat keine Lightning-Adresse eingerichtet, um Sats zu empfangen
Prozent
+ 25
Zaps aufteilen mit
Zaps weiterleiten an
Lightning-Wallets nicht gefunden
@@ -586,9 +607,11 @@ anz der Bedingungen ist erforderlich
Hallo, ist das noch verfügbar?
Artikel verkaufen
Titel
+ iPhone 13
Zustand
Kategorie
Preis (in Sats)
+ 1000
Ort
Stadt, Staat, Land
Neu
@@ -607,6 +630,7 @@ anz der Bedingungen ist erforderlich
Bücher
Haustiere
Sport
+ Fitness
Kunst
Handwerk
Zuhause
@@ -621,13 +645,17 @@ anz der Bedingungen ist erforderlich
Der Server hat nach dem Hochladen keine URL angegeben
Hochgeladene Medien konnten nicht vom Server heruntergeladen werden
Lokale Datei konnte nicht zum Hochladen vorbereitet werden: %1$s
+ Upload fehlgeschlagen: %1$s
+ Löschen fehlgeschlagen: %1$s
Entwurf bearbeiten
Einloggen mit QR-Code
+ Route
Startseite
Suche
Entdecken
Nachrichten
Benachrichtigungen
+ Global
Kurzfilme
Sicherheitsfilter
Neuer Beitrag
@@ -638,6 +666,8 @@ anz der Bedingungen ist erforderlich
Antworten
Boosten oder Zitieren
Gefällt mir
+ Zap
+ Schnelle Reaktionen ändern
Profilbild von %1$s
%1$s weiterleiten
Rela-Liste erweitern
@@ -692,12 +722,16 @@ anz der Bedingungen ist erforderlich
Jetzt spenden
wurde Ihnen präsentiert von:
Diese Version wurde Ihnen präsentiert von:
+ Version %1$s
Vielen Dank!
Maximallimit
Eingeschränkte Schriften
Geforkt von
+ FORK
+ Git Repository: %1$s
Internet:
Klonen:
+ OTS: %1$s
Zeitstempel Beweis
Es gibt einen Beweis, dass dieser Beitrag irgendwann vor %1$s signiert wurde. Der Beweis wurde zu diesem Datum und Uhrzeit in der Bitcoin-Blockchain gestempelt.
Beitrag bearbeiten
@@ -725,7 +759,6 @@ anz der Bedingungen ist erforderlich
Anforderung eines Jobs von DVM
Zahlungsanforderung gesendet, wartet auf Bestätigung Ihrer Geldbörse
Warten auf Bestätigung der Zahlung durch DVM oder auf die Ergebnisse
-
Fehlerhafte Anfrage - Der Server kann oder will die Anfrage nicht verarbeiten.
Nicht autorisiert - Der Benutzer hat keine gültigen Authentifizierungsdaten
Zahlung erforderlich - Der Server verlangt eine Zahlung, um die Anfrage abzuschließen
@@ -745,7 +778,6 @@ anz der Bedingungen ist erforderlich
Bereich nicht erfüllbar - Der Server kann den im Range-Header-Feld der Anfrage angegebenen Wert nicht erfüllen.
Erwartung fehlgeschlagen - Der Server kann die Anforderungen, die durch den Expect-Request-Header-Feld angegeben sind, nicht erfüllen
Upgrade erforderlich - Der Server weigert sich, die Anfrage mit dem aktuellen Protokoll zu verarbeiten, es sei denn, der Client wechselt zu einem anderen Protokoll.
-
Interner Serverfehler - Der Server hat einen unerwarteten Fehler festgestellt und kann die Anfrage nicht abschließen
Nicht implementiert - Der Server kann die Anfrage nicht erfüllen oder erkennt die Anfragemethode nicht
Schlechtes Gateway - Der Server agiert als Gateway und erhielt eine ungültige Antwort vom Host
@@ -756,9 +788,4 @@ anz der Bedingungen ist erforderlich
Unzureichender Speicher - Der Server hat nicht genug Speicher, um die Anfrage erfolgreich zu verarbeiten
Schleife erkannt - Der Server erkennt eine Endlosschleife, während er die Anfrage bearbeitet
Netzwerk-Authentifizierung erforderlich - Der Client muss authentifiziert werden, um auf das Netzwerk zuzugreifen
-
- Unbegrenztes WLAN
- Upload fehlgeschlagen: %1$s
- Löschen fehlgeschlagen: %1$s
- Schnelle Reaktionen ändern
diff --git a/amethyst/src/main/res/values-hi-rIN/strings.xml b/amethyst/src/main/res/values-hi-rIN/strings.xml
index 38fd4c515..1d84f8053 100644
--- a/amethyst/src/main/res/values-hi-rIN/strings.xml
+++ b/amethyst/src/main/res/values-hi-rIN/strings.xml
@@ -642,6 +642,8 @@
सेवासंगणक ने आरोहण पश्चात जालपता नहीं दिया
सेवासंगणक से आरोहणकृत चित्र चलचित्र का अवरोहण नहीं कर पाए
स्थानीय अभिलेख अनुकूल नहीं बना सके आरोहण के लिए : %1$s
+ आरोहण असफल : %1$s
+ मिटाने में असफल : %1$s
पाण्डुलिपि का सम्पादन करें
क्यूआर॰ क्रमचित्र के साथ प्रवेशांकन करें
मार्ग
@@ -754,4 +756,22 @@
डीवीएम॰ से कार्य का अनुरोध किया जा रहा है
भुगतान अनुरोध भेजा गया। आपके धनकोष से पुष्टीकरण की प्रतीक्षा में
डीवीएम॰ से भुगतान की पुष्टीकरण अथवा परिणाम भेजने की प्रतीक्षा में
+ बुरा अनुरोध - सेवासंगणक इस अनुरोध पर काम नहीं कर सकता अथवा नहीं करेगा।
+ अनधिकृत - उपयोगकर्ता के पास प्रमाणिकरण हेतु वैध परिचयपत्र उपलब्ध नहीं
+ भुगतान अनिवार्य - अनुरोध पूरा करने के लिए सेवासंगणक को भुगतान की आवश्यकता है
+ वर्जित - उपयोगकर्ता को यह अनुरोध करने का अधिकार नहीं
+ अप्राप्त - याचित पता ढूँढने में सेवासंगणक असफल
+ कार्य की अनुमति नहीं - सेवासंगणक याचित कार्य का आलम्बन करता है पर लक्ष्यांकित संसाधन को नहीं
+ अस्वीकृत - सेवासंगणक कोई विषयवस्तु नहीं ढूँढ सका जिससे अनुरोध की पूर्ति हो सके।
+ प्रतिनिधि प्रमाणिकरण आवश्यक - उपयोगकर्ता के पास प्रमाणिकरण हेतु वैध परिचयपत्र उपलब्ध नहीं
+ अनुरोध समयसीमा समाप्त - सेवासंगणक समयसीमा पार किया किसी अन्य की प्रतीक्षा में।
+ संघर्ष - सेवासंगणक अनुरोध की पूर्ति नहीं कर सकता क्योंकि संसाधन के साथ संघर्ष है
+ विगत - याचित विषयवस्तु सेवासंगणक से सर्वदा के लिए मिटाया गया है तथा पुनर्स्थापित नहीं होगा
+ लम्बाई आवश्यक - सेवासंगणक ने अनुरोध अस्वीकार किया क्योंकि इस के लिए स्पष्ट विषयवस्तु लम्बाई सूचक शीर्षक चाहिए
+ पूर्वावस्था असफल - अनुरोध के शीर्षक प्रपत्रस्थानों में निर्दिष्ट पूर्वावस्थाओं की पूर्ति में सेवासंगणक असफल
+ भार अत्याधिक - अनुरोध सेवासंगणक के निरूपित सीमाएँ से बडा है, तथा सेवासंगणक ने इस पर काम करना नकार दिया
+ जालपता लम्बाई अत्याधिक - ग्राहक द्वारा अनुरोधित जालपता की लम्बाई सेवासंगणक के काम के लिए अत्याधिक है।
+ अनावलम्बित माध्यम प्रकार - अनुरोध में प्रयुक्त माध्यम प्रकार सेवासंगणक द्वारा अवलम्बित नहीं
+ विस्तार असाध्य - अनुरोध के विस्तार शीर्षक प्रपत्रस्थान में सूचित मूल्य की पूर्ति सेवासंगणक द्वारा असाध्य।
+ अपेक्षा असफल - अनुरोध के अपेक्षा शीर्षक प्रपत्रस्थान में सूचित आवश्यकताओं की पूर्ति सेवासंगणक के लिए असाध्य
diff --git a/amethyst/src/main/res/values-pt-rBR/strings.xml b/amethyst/src/main/res/values-pt-rBR/strings.xml
index 5613dd9f5..c0d5b4ba1 100644
--- a/amethyst/src/main/res/values-pt-rBR/strings.xml
+++ b/amethyst/src/main/res/values-pt-rBR/strings.xml
@@ -14,6 +14,7 @@
Não foi possível descriptografar a mensagem
Imagem do grupo
Conteúdo explícito
+ Spam
O número de eventos de spam vindo deste relé
Representação
Comportamento ilegal
@@ -44,11 +45,13 @@
Faça login com uma chave privada para poder remover seguidores
Você está usando uma chave pública e as chaves públicas são somente de leitura. Faça login com uma chave privada para poder ocultar uma palavra ou frase.
Você está usando uma chave pública e as chaves públicas são somente de leitura. Faça login com uma chave privada para poder mostrar uma palavra ou frase.
+ Zaps
Contagem de visualizações
Impulsionar
impulsionado
editado
edição #%1$s
+ original
Citar
Garfo
Propor uma Edição
@@ -89,6 +92,7 @@
Falha ao enviar imagem
Endereço do Relay
Postagens
+ Bytes
Erros
O número de erros de conexão nesta sessão
Feed principal
@@ -130,6 +134,7 @@
"Seguindo"
"Denúncias"
Mais opções
+ " Relés"
Site
Endereço Lightning
Copiar a chave Nsec (sua senha) para backup
@@ -194,6 +199,9 @@
Endereço Nostr
nunca
agora
+ h
+ m
+ d
Nudez
Palavrões / Discurso de ódio
Denunciar discurso de ódio
@@ -294,6 +302,7 @@
Zap mínimo
Zap máximo
Consenso
+ (0–100)%
Fechar depois
dias
Impossibilitado de votar
@@ -338,6 +347,7 @@
Não
Lista de seguidores
Seguindo
+ Global
Lista Silenciada
## Conecte-se através do Tor com o Orbot
\n\n1. Instale o [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
@@ -355,6 +365,7 @@
Notifica você quando chega uma mensagem privada
Zaps Recebidos
Notifica quando alguém te manda um zap
+ %1$s sats
De %1$s
por %1$s
Notificar:
@@ -421,6 +432,7 @@
Transmissão ao vivo encerrada
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
Descoberta de Notas
Mercado
Ao vivo
@@ -434,6 +446,7 @@
Configurações
Sempre
Somente wifi
+ WiFi não medida
Nunca
Concluído
Simplificado
@@ -452,6 +465,7 @@
Modo de interface
Escolha o estilo da publicação
Carregar imagem
+ Spammers
Silenciado. Clique para ativar o som
Som ligado. Clique para silenciar
Pesquise registros locais e remotos
@@ -499,6 +513,7 @@
Os votos são ponderados pelo valor do zap. Você pode definir um valor mínimo para evitar spammers e um valor máximo para evitar que grandes zappers assumam o controle da enquete. Use o mesmo valor em ambos os campos para garantir que cada voto tenha o mesmo valor. Deixe em branco para aceitar qualquer valor.
Não foi possível enviar o Zap
Mensagem ao usuário
+ OK
Falha ao acessar %1$s: %2$s
Falha ao montar NIP-11 url para %1$s: %2$s
Falha ao acessar %1$s: %2$s
@@ -511,6 +526,7 @@
Início
Mensagens diretas
Bate-papos
+ Global
Pesquisa
Dividir e encaminhar Zaps
Os clientes que suportam dividirão e encaminharão zaps para os usuários adicionados aqui em vez dos seus
@@ -519,6 +535,7 @@
Configuração Lightning ausente
O usuário %1$s não possui um endereço lightning configurado para receber sats
Percentual
+ 25
Dividindo zaps com
Encaminhando zaps para
Carteira Lightning não encontrada
@@ -585,9 +602,11 @@
Olá, ainda está disponível?
Vender um Item
Título
+ iPhone 13
Condição
Categoria
Preço (em Sats)
+ 1000
Localização
Cidade, Estado, País
Novo
@@ -606,6 +625,7 @@
Livros
Animais de Estimação
Esportes
+ Bem-estar
Arte
Artesanato
Casa
@@ -620,6 +640,8 @@
O servidor não forneceu uma URL após o upload
Não foi possível baixar o arquivo de mídia carregado do servidor
Não foi possível preparar o arquivo local para enviar: %1$s
+ Falha ao enviar: %1$s
+ Falha ao excluir: %1$s
Editar rascunho
Entrar com Código QR
Rota
@@ -628,6 +650,7 @@
Descobrir
Mensagens
Notificações
+ Global
Vídeos Curtos
Filtros de Segurança
Novo Post
@@ -638,6 +661,8 @@
Responder
Impulsionar ou Citar
Gostar
+ Zap
+ Mudar reações rápidas
Foto de perfil de %1$s
Repassar %1$s
Expandir lista de repasse
@@ -697,9 +722,11 @@
Limite máximo
Gravações Restritas
Forkado de
+ FORK
Repositório Git: %1$s
Site:
Clonar:
+ OTS: %1$s
Prova de Carimbo de data/hora
Há prova de que esta postagem foi assinada antes de %1$s. A prova foi carimbada no blockchain do Bitcoin naquela data e hora.
Editar postagem
@@ -727,7 +754,6 @@
Solicitando Trabalho ao DVM
Pedido de pagamento enviado, aguardando confirmação da sua carteira
Aguardando o DVM confirmar o pagamento ou enviar resultados
-
Requisição inválida - O servidor não pode ou não irá processar a requisição.
Não autorizado - O usuário não possui credenciais de autenticação válidas
Pagamento necessário - O servidor requer pagamento para completar a requisição
@@ -747,7 +773,6 @@
Faixa não satisfatória - O servidor não pode atender ao valor indicado no campo de cabeçalho Range da requisição.
Falha na expectativa - O servidor não pode atender aos requisitos indicados pelo campo de cabeçalho Expect da requisição
Atualização necessária - O servidor se recusa a processar a requisição com o protocolo atual, a menos que o cliente faça a atualização para um protocolo diferente.
-
Erro interno do servidor - O servidor encontrou um erro inesperado e não pode completar a requisição
Não implementado - O servidor não pode cumprir a requisição ou não reconhece o método da requisição
Gateway inválido - O servidor atua como um gateway e recebeu uma resposta inválida do host
@@ -758,9 +783,4 @@
Armazenamento insuficiente - O servidor não possui armazenamento suficiente para processar a requisição com sucesso
Loop detectado - O servidor detecta um loop infinito enquanto processa a requisição
Autenticação de rede necessária - O cliente deve ser autenticado para acessar a rede
-
- WiFi não medida
- Falha ao enviar: %1$s
- Falha ao excluir: %1$s
- Mudar reações rápidas
diff --git a/amethyst/src/main/res/values-sv-rSE/strings.xml b/amethyst/src/main/res/values-sv-rSE/strings.xml
index 8c414f8a4..80e25592d 100644
--- a/amethyst/src/main/res/values-sv-rSE/strings.xml
+++ b/amethyst/src/main/res/values-sv-rSE/strings.xml
@@ -14,6 +14,7 @@
Kunde inte dekryptera meddelandet
Grupp bild
Explicit Innehåll
+ Spam
Antal skräpposthändelser från detta relä
Imitation
Olagligt beteende
@@ -44,11 +45,13 @@
Logga in med en privat nyckel för att kunna sluta följa
Du använder en offentlig nyckel, och offentliga nycklar är endast läsbara. Logga in med en privat nyckel för att kunna dölja ett ord eller en mening
Du använder en offentlig nyckel, och offentliga nycklar är endast läsbara. Logga in med en privat nyckel för att kunna visa ett ord eller en mening
+ Zaps
Antal visningar
Boosta
boostad
redigerat
redigering #%1$s
+ original
Citera
Förgrening
Föreslå en redigering
@@ -89,6 +92,7 @@
Det gick inte att ladda upp bilden
Relä Adress
Inlägg
+ Bytes
Fel
Antal anslutningsfel under denna session
Hem Flöde
@@ -104,6 +108,8 @@
Användarnamn
Mitt användarnamn
Om mig
+ Profilbild URL
+ Banner URL
Websida URL
LN Adress
LN URL (Utdaterad)
@@ -144,6 +150,7 @@
Sluta blockera Användare
"npub, hex, användarnamn "
Rensa
+ Appens logo
nsec / npub / hex privat nyckel
lösenord för att öppna nyckeln
Visa lösenord
@@ -192,6 +199,9 @@
Nostr-adress
aldrig
nu
+ t
+ m
+ d
Naket
Svordomar / Hatiskt tal
Anmäl hattal
@@ -276,6 +286,7 @@
Ta bort från Publika Bokmärken
Wallet Connect Tjänst
Tillåter en Nostr Secret att betala zaps utan att lämna appen. Håll hemligheten säker och använd ett privat relä om möjligt
+ Plånbok Anslut Pubkey
Wallet Connect relä
Wallet Connect hemlighet
Visa secret key
@@ -291,6 +302,7 @@
Minsta Zap
Maximal Zap
Konsensus
+ (0–100)%
Avsluta efter
dagar
Kunde inte rösta
@@ -335,6 +347,7 @@
Nej
Följ lista
Alla följare
+ Global
Tyst listan
## Anslut genom Tor med Orbot
\n\n1. Installera [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
@@ -343,6 +356,7 @@
\n4. Ändra vid behov porten i Orbot
\n5. Konfigurera Socks-porten på den här skärmen
\n6. Tryck på knappen Aktivera för att använda Orbot som proxy
+ Orbot Socks Port
Ogiltigt portnummer
Använd Orbot
Koppla ifrån Tor/Orbot
@@ -350,6 +364,7 @@
Meddelar dig när ett privat meddelande kommer
Zaps Mottaget
Meddela dig när någon zappar dig
+ %1$s sats
Från %1$s
till %1$s
Meddela:
@@ -379,6 +394,7 @@
Mängden data i byte som mottogs från detta relä, inklusive filter och händelser
Ett fel inträffade vid försök att hämta information från Relay %1$s
Ägare
+ Version
Programvara
Kontakt
Stödda NIPs
@@ -400,12 +416,15 @@
Minsta PoW
Autentisering
Betalning
+ Cashu Token
Inlösen
Skicka till Zap Plånbok
Öppna i Cashu Plånbok
Kopiera Token
Ingen Lightning-adress angiven
Kopierade token till urklipp
+ LIVE
+ OFFLINE
SLUTADE
PLANERAD
Direktsändning är offline
@@ -415,6 +434,7 @@
Reläer
Upptäckt av anteckningar
Marknadsplats
+ Live
Gemenskap
Chattar
Godkända Inlägg
@@ -425,10 +445,12 @@
Inställningar
Alltid
Endast Wi-Fi
+ Obegränsad WiFi
Aldrig
Slutförd
Förenklad
Prestanda
+ System
Ljus
Mörk
Applikationsinställningar
@@ -512,6 +534,7 @@
Saknad lightning-konfiguration
Användaren %1$s har inte ställt in en blixtfakturaadress för att ta emot satoshis
Procent
+ 25
Delar zaps med
Vidarebefordrar zaps till
Blixtpengar hittades inte
@@ -578,9 +601,11 @@
Hallå där, är detta fortfarande tillgängligt?
Sälj en artikel
Titel
+ iPhone 13
Skick
Kategori
Pris (i Sats)
+ 1000
Plats
Stad, Region, Land
Ny
@@ -614,6 +639,8 @@
Servern gav inte en URL efter uppladdning
Kunde inte ladda ner uppladdade medier från servern
Kunde inte förbereda lokal fil att ladda upp: %1$s
+ Uppladdning misslyckades: %1$s
+ Radering misslyckades: %1$s
Redigera utkast
Logga in med QR-kod
Rutt
@@ -633,6 +660,8 @@
Svara
Boosta eller citera
Gilla
+ Zap
+ Ändra Snabba Reaktioner
%1$s Profilbild
Relä %1$s
Expandera relälistan
@@ -687,12 +716,16 @@
Donera nu
tillhandahölls av:
Denna version tillhandahölls av:
+ Version %1$s
Tack!
Maximal gräns
Begränsade skrivningar
Forkad från
+ FORK
+ Git Repository: %1$s
Webbplats:
Klona:
+ OTS: %1$s
Tidsstämpel Bevis
Det finns bevis på att detta inlägg signerades någon gång före %1$s. Beviset stämplades i Bitcoin-blockchainen vid det datumet och den tiden.
Redigera inlägg
@@ -720,7 +753,6 @@
Begär jobb från DVM
Betalningsbegäran skickad, väntar på bekräftelse från din plånbok
Väntar på att DVM ska bekräfta betalningen eller skicka resultaten
-
Felaktig begäran - Servern kan inte eller vill inte bearbeta begäran.
Obehörig - Användaren har inte giltiga autentiseringsuppgifter
Betalning krävs - Servern kräver betalning för att slutföra begäran
@@ -740,7 +772,6 @@
Område ej tillfredsställt - Servern kan inte uppfylla värdet som anges i begärans Range-huvudfält.
Förväntning misslyckades - Servern kan inte uppfylla kraven som anges av Expect-begärans huvudfält
Uppgradering krävs - Servern vägrar att bearbeta begäran med det nuvarande protokollet om inte klienten uppgraderar till ett annat protokoll.
-
Internt serverfel - Servern har stött på ett oväntat fel och kan inte slutföra begäran
Ej implementerad - Servern kan inte uppfylla begäran eller känner inte igen begärningsmetoden
Fel gateway - Servern agerar som en gateway och fick ett ogiltigt svar från värden
@@ -751,9 +782,4 @@
Otillräckligt lagringsutrymme - Servern har inte tillräckligt med lagringsutrymme för att bearbeta begäran framgångsrikt
Loop upptäckt - Servern upptäcker en oändlig loop medan den bearbetar begäran
Nätverksautentisering krävs - Klienten måste autentiseras för att få tillgång till nätverket
-
- Obegränsad WiFi
- Uppladdning misslyckades: %1$s
- Radering misslyckades: %1$s
- Ändra Snabba Reaktioner
diff --git a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt
index 6d9f0fad2..6a352b6e9 100644
--- a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt
+++ b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt
@@ -524,9 +524,17 @@ class Relay(
}
private fun writeToSocket(str: String) {
+ if (socket == null) {
+ listeners.forEach { listener ->
+ listener.onError(
+ this@Relay,
+ "",
+ Error("Failed to send $str. Relay is not connected."),
+ )
+ }
+ }
socket?.let {
checkNotInMainThread()
-
val result = it.send(str)
listeners.forEach { listener ->
listener.onSend(this@Relay, str, result)
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/nip44/Nip44.kt b/quartz/src/main/java/com/vitorpamplona/quartz/crypto/nip44/Nip44.kt
index 793549be3..2ffa2024d 100644
--- a/quartz/src/main/java/com/vitorpamplona/quartz/crypto/nip44/Nip44.kt
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/crypto/nip44/Nip44.kt
@@ -118,8 +118,7 @@ class Nip44(
else -> null
}
} catch (e: Exception) {
- Log.e("CryptoUtils", "Could not identify the version for NIP44 payload $json")
- e.printStackTrace()
+ Log.e("CryptoUtils", "NIP44: Unable to find version and decrypt $json", e)
null
}
@@ -140,8 +139,7 @@ class Nip44(
else -> null
}
} catch (e: Exception) {
- Log.e("CryptoUtils", "Could not identify the version for NIP44 payload $payload")
- e.printStackTrace()
+ Log.e("CryptoUtils", "NIP44: Unable to find version and decrypt $payload", e)
null
}
}