diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 411356350..2289f235a 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -90,6 +90,8 @@
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
O mně
@@ -143,7 +145,14 @@
podmínkami použití
Je vyžadováno přijetí podmínek
Klíč je povinný
+ Jméno je povinné
Přihlásit se
+ Registrovat se
+ Vytvořit účet
+ Jak bychom vám měli říkat?
+ Nemáte Nostr účet?
+ Máte již Nostr účet?
+ Vytvořit nový účet
Vygenerovat nový klíč
Načítání zdroje
Načítání účtu
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index c1c7434de..4631cd18b 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -90,6 +90,8 @@
Relay hinzufügen
Anzeigename
Mein Anzeigename
+ Ostrich McAwesome
+ Willkommen Ostrich!
Benutzername
Mein Benutzername
Über mich
@@ -147,7 +149,14 @@ erie gespeichert
anz der Bedingungen ist erforderlich
Schlüssel ist erforderlich
+ Ein Name wird benötigt
Anmeldung
+ Anmelden
+ Konto erstellen
+ Wie sollen wir Sie nennen?
+ Sie haben kein Nostr-Konto?
+ Haben Sie schon ein Nostr-Konto?
+ Neues Konto anlegen
Neuen Schlüssel generieren
Feed wird geladen
Konto wird geladen
diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app/src/main/res/values-es-rMX/strings.xml
index 860260a9f..0cc233fe2 100644
--- a/app/src/main/res/values-es-rMX/strings.xml
+++ b/app/src/main/res/values-es-rMX/strings.xml
@@ -90,6 +90,8 @@
Agregar un relé
Nombre para mostrar
Mi nombre para mostrar
+ Avestruz Maravillosa
+ ¡Te damos la bienvenida, Avestruz!
Nombre de usuario
Mi nombre de usuario
Quién soy
@@ -143,7 +145,14 @@
condiciones de uso
Es obligatorio aceptar las condiciones
Se requiere la clave
+ Se requiere un nombre
Iniciar sesión
+ Registrarse
+ Crear cuenta
+ ¿Cómo debemos llamarte?
+ ¿No tienes una cuenta de Nostr?
+ ¿Ya tienes una cuenta de Nostr?
+ Crear una cuenta nueva
Generar una clave nueva
Cargando feed
Cargando cuenta
diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml
index 8a09d7483..cea4db84d 100644
--- a/app/src/main/res/values-es-rUS/strings.xml
+++ b/app/src/main/res/values-es-rUS/strings.xml
@@ -90,6 +90,8 @@
Agregar un relé
Nombre para mostrar
Mi nombre para mostrar
+ Avestruz Maravillosa
+ ¡Te damos la bienvenida, Avestruz!
Nombre de usuario
Mi nombre de usuario
Quién soy
@@ -143,7 +145,14 @@
condiciones de uso
Es obligatorio aceptar las condiciones
Se requiere la clave
+ Se requiere un nombre
Iniciar sesión
+ Registrarse
+ Crear cuenta
+ ¿Cómo debemos llamarte?
+ ¿No tienes una cuenta de Nostr?
+ ¿Ya tienes una cuenta de Nostr?
+ Crear una cuenta nueva
Generar una clave nueva
Cargando feed
Cargando cuenta
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 138ebf8fa..62cc6b369 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -143,7 +143,14 @@
conditions d\'utilisation
L\'acceptation des conditions est requise
La clé est requise
+ Un nom est requis
Connexion
+ Inscription
+ Créer un Compte
+ Comment devrions-nous vous appeler ?
+ Vous n\'avez pas de compte Nostr ?
+ Vous avez déjà un compte Nostr ?
+ Créer un nouveau compte
Générer une nouvelle clé
Chargement du flux
Chargement du compte
@@ -571,4 +578,11 @@
Nourriture
Divers
Autres
+ Échec du téléversement du fichier
+ Impossible d\'ouvrir le fichier compressé
+ Erreur lors de la compression du média : %1$s
+ Erreur de téléversement : %1$s
+ Le serveur n\'a pas fourni d\'URL après le téléversement
+ Impossible de télécharger le média depuis le serveur
+ Impossible de préparer le fichier local à téléverser: %1$s
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 1358ba3cb..f1d550af2 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -90,6 +90,8 @@
Csomópont hozzáadása
Megjelenítendő Név
Az én megjelenített névem
+ Király McStrucc
+ Üdvözlünk Strucc!
Felhasználónév
Felhasználónevem
Rólam
@@ -143,7 +145,14 @@
használati feltételeket
A feltételek elfogadása szükséges
Kulcs szükséges
+ Név megadása kötelező
Bejelentkezés
+ Regisztráció
+ Fiók létrehozása
+ Hogyan szólíthatunk?
+ Nincs Nostr fiókod?
+ Van már Nostr-fiókod?
+ Új fiók létrehozása
Új kulcs létrehozása
Lista betöltése
Fiók betöltése
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 72d3df0c4..ca944e22b 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -90,6 +90,8 @@
Adicionar um Relay
Nome de Exibição
Meu nome de exibição
+ McAwesome Ostrich
+ Bem-vindo, Ostrich!
Usuário
Meu usuário
Sobre mim
@@ -143,7 +145,14 @@
termos de uso
É necessário aceitar os termos de uso
Chave é obrigatória
+ Um nome é necessário
Entrar
+ Enviar
+ Criar Conta
+ Como deveríamos chamar você?
+ Não tem uma conta Nostr?
+ Já tem uma conta Nostr?
+ Criar uma nova conta
Gerar uma nova chave
Carregando feed
Carregando conta
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index ea9f5332e..246a9ab38 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -90,6 +90,8 @@
Lägg till Relä
Visningsnamn
Mitt visningsnamn
+ Struts McAwesome
+ Välkommen struts!
Användarnamn
Mitt användarnamn
Om mig
@@ -143,7 +145,14 @@
villkor
Godkännande av villkor krävs
Nyckel krävs
+ Namn är obligatoriskt
Inloggning
+ Registrera dig
+ Skapa ett konto
+ Hur ska vi kalla dig?
+ Har du inget Nostr konto?
+ Har du redan ett Nostr konto?
+ Skapa ett nytt konto
Skapa en ny nyckel
Ladda flöde
Laddar kontot
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt b/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt
index a037817cd..7d5449ddb 100644
--- a/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/signers/ExternalSignerLauncher.kt
@@ -252,33 +252,38 @@ class ExternalSignerLauncher(
arrayOf(event.toJson(), event.pubKey()),
columnName,
)
- if (result == null) {
- openSignerApp(
- event.toJson(),
- SignerType.SIGN_EVENT,
- "",
- event.id(),
- onReady,
- )
- } else {
- onReady(result)
- }
+ result.fold(
+ onFailure = { },
+ onSuccess = {
+ if (it == null) {
+ openSignerApp(
+ event.toJson(),
+ SignerType.SIGN_EVENT,
+ "",
+ event.id(),
+ onReady,
+ )
+ } else {
+ onReady(it)
+ }
+ },
+ )
}
- fun getDataFromResolver(
+ private fun getDataFromResolver(
signerType: SignerType,
data: Array,
columnName: String = "signature",
- ): String? {
+ ): kotlin.Result {
return getDataFromResolver(signerType, data, columnName, contentResolver)
}
- fun getDataFromResolver(
+ private fun getDataFromResolver(
signerType: SignerType,
data: Array,
columnName: String = "signature",
contentResolver: (() -> ContentResolver)? = null,
- ): String? {
+ ): kotlin.Result {
val localData =
if (signerType !== SignerType.GET_PUBLIC_KEY) {
data.toList().plus(npub).toTypedArray()
@@ -292,29 +297,33 @@ class ExternalSignerLauncher(
?.query(
Uri.parse("content://$signerPackageName.$signerType"),
localData,
- null,
+ "1",
null,
null,
)
.use {
if (it == null) {
- return null
+ return kotlin.Result.success(null)
}
if (it.moveToFirst()) {
+ if (it.getColumnIndex("rejected") > -1) {
+ Log.d("getDataFromResolver", "Permission denied")
+ return kotlin.Result.failure(Exception("Permission denied"))
+ }
val index = it.getColumnIndex(columnName)
if (index < 0) {
Log.d("getDataFromResolver", "column '$columnName' not found")
- return null
+ return kotlin.Result.success(null)
}
- return it.getString(index)
+ return kotlin.Result.success(it.getString(index))
}
}
} catch (e: Exception) {
Log.e("ExternalSignerLauncher", "Failed to query the Signer app in the background")
- return null
+ return kotlin.Result.success(null)
}
- return null
+ return kotlin.Result.success(null)
}
fun decrypt(
@@ -325,17 +334,22 @@ class ExternalSignerLauncher(
) {
val id = (encryptedContent + pubKey + onReady.toString()).hashCode().toString()
val result = getDataFromResolver(signerType, arrayOf(encryptedContent, pubKey))
- if (result == null) {
- openSignerApp(
- encryptedContent,
- signerType,
- pubKey,
- id,
- onReady,
- )
- } else {
- onReady(result)
- }
+ result.fold(
+ onFailure = { },
+ onSuccess = {
+ if (it == null) {
+ openSignerApp(
+ encryptedContent,
+ signerType,
+ pubKey,
+ id,
+ onReady,
+ )
+ } else {
+ onReady(it)
+ }
+ },
+ )
}
fun encrypt(
@@ -346,17 +360,22 @@ class ExternalSignerLauncher(
) {
val id = (decryptedContent + pubKey + onReady.toString()).hashCode().toString()
val result = getDataFromResolver(signerType, arrayOf(decryptedContent, pubKey))
- if (result == null) {
- openSignerApp(
- decryptedContent,
- signerType,
- pubKey,
- id,
- onReady,
- )
- } else {
- onReady(result)
- }
+ result.fold(
+ onFailure = { },
+ onSuccess = {
+ if (it == null) {
+ openSignerApp(
+ decryptedContent,
+ signerType,
+ pubKey,
+ id,
+ onReady,
+ )
+ } else {
+ onReady(it)
+ }
+ },
+ )
}
fun decryptZapEvent(
@@ -365,16 +384,21 @@ class ExternalSignerLauncher(
) {
val result =
getDataFromResolver(SignerType.DECRYPT_ZAP_EVENT, arrayOf(event.toJson(), event.pubKey))
- if (result == null) {
- openSignerApp(
- event.toJson(),
- SignerType.DECRYPT_ZAP_EVENT,
- event.pubKey,
- event.id,
- onReady,
- )
- } else {
- onReady(result)
- }
+ result.fold(
+ onFailure = { },
+ onSuccess = {
+ if (it == null) {
+ openSignerApp(
+ event.toJson(),
+ SignerType.DECRYPT_ZAP_EVENT,
+ event.pubKey,
+ event.id,
+ onReady,
+ )
+ } else {
+ onReady(it)
+ }
+ },
+ )
}
}