Merge remote-tracking branch 'origin/profiles-list-management' into profiles-list-management

This commit is contained in:
KotlinGeekDev
2024-10-20 10:42:58 +01:00
7 changed files with 172 additions and 6 deletions
+2 -2
View File
@@ -16,8 +16,8 @@ android {
applicationId "com.vitorpamplona.amethyst"
minSdk libs.versions.android.minSdk.get().toInteger()
targetSdk libs.versions.android.targetSdk.get().toInteger()
versionCode 411
versionName "0.92.6"
versionCode 412
versionName "0.92.7"
buildConfigField "String", "RELEASE_NOTES_ID", "\"98f2acaf9b3eb70d87607942e576f9a086ac28adf37869da9a29f4815cecac86\""
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -154,8 +154,9 @@ class EventNotificationConsumer(
acc: AccountSettings,
) {
if (
event.createdAt > TimeUtils.fifteenMinutesAgo() &&
// old event being re-broadcasted
event.createdAt > TimeUtils.fifteenMinutesAgo() &&
// don't display if it comes from me.
event.pubKey != signer.pubKey
) { // from the user
Log.d(TAG, "Notifying")
@@ -121,6 +121,8 @@
<string name="save_to_gallery">Guardar en la galería</string>
<string name="image_saved_to_the_gallery">Imagen guardada en la galería</string>
<string name="failed_to_save_the_image">Error al guardar la imagen</string>
<string name="video_saved_to_the_gallery">Video guardado en la galería de videos del teléfono</string>
<string name="failed_to_save_the_video">Error al guardar el video</string>
<string name="upload_image">Cargar imagen</string>
<string name="uploading">Cargando…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">El usuario no tiene una configuración de dirección Lightning para recibir sats</string>
@@ -358,8 +360,11 @@
<string name="delete_media_server">Eliminar servidor multimedia</string>
<string name="upload_server_relays_nip95">Tus relés (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Los archivos están alojados en tus relés. Nuevo NIP: comprueba si son compatibles.</string>
<string name="privacy_options">Opciones de privacidad</string>
<string name="connect_via_tor_short">Configuración de Tor/Orbot</string>
<string name="connect_via_tor">Conéctate a través de tu configuración de Orbot</string>
<string name="connect_via_tor1">Ajustar</string>
<string name="connect_via_tor2">Configuración de Tor</string>
<string name="do_you_really_want_to_disable_tor_title">¿Desconectarse de tu Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Los datos se transferirán de inmediato en la red normal</string>
<string name="yes"></string>
@@ -368,6 +373,7 @@
<string name="follow_list_kind3follows">Todos los seguidos</string>
<string name="follow_list_global">Global</string>
<string name="follow_list_mute_list">Lista de silenciados</string>
<string name="connect_through_your_orbot_setup_short">El puerto predeterminado es 9050</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Conéctate a través de Tor con Orbot
\n\n1. Instala [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android).
\n2. Inicia Orbot.
@@ -377,6 +383,45 @@
\n6. Presiona y activa el botón para usar Orbot como proxy.
</string>
<string name="orbot_socks_port">Puerto Socks de Orbot</string>
<string name="use_internal_tor">Motor de Tor activo</string>
<string name="use_internal_tor_explainer">Usar la versión interna u Orbot</string>
<string name="tor_preset">Preconfiguración de Tor y privacidad</string>
<string name="tor_preset_explainer">Modificar rápidamente todos los ajustes a continuación</string>
<string name="tor_use_onion_address">Url/Relés tipo onion</string>
<string name="tor_use_onion_address_explainer">Usar Tor para cualquier URL .onion</string>
<string name="tor_use_dm_relays">Relés de mensajes directos</string>
<string name="tor_use_dm_relays_explainer">Forzar Tor para enviar y recibir mensajes directos</string>
<string name="tor_use_new_relays">Relés no confiables</string>
<string name="tor_use_new_relays_explainer">Forzar Tor en la bandeja de salida/entrada</string>
<string name="tor_use_trusted_relays">Relés de confianza</string>
<string name="tor_use_trusted_relays_explainer">Forzar Tor en todos los relés de tus listas</string>
<string name="tor_use_profile_pictures">Imágenes de perfil</string>
<string name="tor_use_profile_pictures_explainer">Forzar Tor al cargar imágenes de perfil</string>
<string name="tor_use_url_previews">Vistas previas de URL</string>
<string name="tor_use_url_previews_explainer">Forzar Tor al cargar vistas previas de URL</string>
<string name="tor_use_images">Imágenes</string>
<string name="tor_use_images_explainer">Forzar Tor al cargar imágenes</string>
<string name="tor_use_videos">Videos</string>
<string name="tor_use_videos_explainer">Forzar Tor al cargar videos</string>
<string name="tor_use_money_operations">Operaciones monetarias</string>
<string name="tor_use_money_operations_explainer">Forzar Tor en transferencias de zaps, Lightning y Cashu</string>
<string name="tor_use_nip05_verification">Verificación de dirección de Nostr</string>
<string name="tor_use_nip05_verification_explainer">Forzar Tor al verificar direcciones NIP-05</string>
<string name="tor_use_nip96_uploads">Subidas multimedia</string>
<string name="tor_use_nip96_uploads_explainer">Forzar Tor al subir contenido</string>
<string name="tor_internal">Interno</string>
<string name="tor_external">Orbot</string>
<string name="tor_off">Desactivado</string>
<string name="tor_when_needed">Básico</string>
<string name="tor_default">Predeterminado</string>
<string name="tor_small_payloads">Todo excepto contenido multimedia</string>
<string name="tor_full_privacy">Privacidad total</string>
<string name="tor_custom">Personalizado</string>
<string name="tor_when_needed_explainer">Usar Tor cuando lo requiera el servidor</string>
<string name="tor_default_explainer">Ocultar tu IP de relés aleatorios</string>
<string name="tor_small_payloads_explainer">Ocultar tu IP de todo, excepto imágenes y videos</string>
<string name="tor_full_privacy_explainer">Oculta tu IP en todas las conexiones</string>
<string name="tor_custom_explainer">Crea el tuyo</string>
<string name="invalid_port_number">Número de puerto inválido</string>
<string name="use_orbot">Usar Orbot</string>
<string name="disconnect_from_your_orbot_setup">Desconectar Tor/Orbot</string>
@@ -462,6 +507,7 @@
<string name="community_no_descriptor">Esta comunidad no tiene descripción. Habla con el propietario para agregar una.</string>
<string name="add_sensitive_content_label">Contenido delicado</string>
<string name="add_sensitive_content_description">Agrega una advertencia de contenido sensible antes de mostrarlo</string>
<string name="preferences">Preferencias de la app</string>
<string name="settings">Configuración</string>
<string name="connectivity_type_always">Siempre</string>
<string name="connectivity_type_wifi_only">Solo Wi-Fi</string>
@@ -474,6 +520,7 @@
<string name="light">Claro</string>
<string name="dark">Oscuro</string>
<string name="application_preferences">Preferencias de la aplicación</string>
<string name="wallet_connect">Wallet Connect</string>
<string name="language">Idioma</string>
<string name="theme">Tema</string>
<string name="automatically_load_images_gifs">Vista previa de imagen</string>
@@ -121,6 +121,8 @@
<string name="save_to_gallery">Guardar en la galería</string>
<string name="image_saved_to_the_gallery">Imagen guardada en la galería</string>
<string name="failed_to_save_the_image">Error al guardar la imagen</string>
<string name="video_saved_to_the_gallery">Video guardado en la galería de videos del teléfono</string>
<string name="failed_to_save_the_video">Error al guardar el video</string>
<string name="upload_image">Subir imagen</string>
<string name="uploading">Subiendo…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">El usuario no tiene configurada una dirección de Lightning para recibir sats</string>
@@ -358,8 +360,11 @@
<string name="delete_media_server">Eliminar servidor multimedia</string>
<string name="upload_server_relays_nip95">Tus relés (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Los archivos están alojados en tus relés. Nuevo NIP: comprueba si son compatibles.</string>
<string name="privacy_options">Opciones de privacidad</string>
<string name="connect_via_tor_short">Configuración de Tor/Orbot</string>
<string name="connect_via_tor">Conéctate a través de tu configuración de Orbot</string>
<string name="connect_via_tor1">Ajustar</string>
<string name="connect_via_tor2">Configuración de Tor</string>
<string name="do_you_really_want_to_disable_tor_title">¿Desconectarse de tu Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Los datos se transferirán de inmediato en la red normal</string>
<string name="yes"></string>
@@ -368,6 +373,7 @@
<string name="follow_list_kind3follows">Todos los seguidos</string>
<string name="follow_list_global">Global</string>
<string name="follow_list_mute_list">Lista de silenciados</string>
<string name="connect_through_your_orbot_setup_short">El puerto predeterminado es 9050</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Conéctate a través de Tor con Orbot
\n\n1. Instala [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android).
\n2. Inicia Orbot.
@@ -377,6 +383,45 @@
\n6. Presiona y activa el botón para usar Orbot como proxy.
</string>
<string name="orbot_socks_port">Puerto Socks de Orbot</string>
<string name="use_internal_tor">Motor de Tor activo</string>
<string name="use_internal_tor_explainer">Usar la versión interna u Orbot</string>
<string name="tor_preset">Preconfiguración de Tor y privacidad</string>
<string name="tor_preset_explainer">Modificar rápidamente todos los ajustes a continuación</string>
<string name="tor_use_onion_address">Url/Relés tipo onion</string>
<string name="tor_use_onion_address_explainer">Usar Tor para cualquier URL .onion</string>
<string name="tor_use_dm_relays">Relés de mensajes directos</string>
<string name="tor_use_dm_relays_explainer">Forzar Tor para enviar y recibir mensajes directos</string>
<string name="tor_use_new_relays">Relés no confiables</string>
<string name="tor_use_new_relays_explainer">Forzar Tor en la bandeja de salida/entrada</string>
<string name="tor_use_trusted_relays">Relés de confianza</string>
<string name="tor_use_trusted_relays_explainer">Forzar Tor en todos los relés de tus listas</string>
<string name="tor_use_profile_pictures">Imágenes de perfil</string>
<string name="tor_use_profile_pictures_explainer">Forzar Tor al cargar imágenes de perfil</string>
<string name="tor_use_url_previews">Vistas previas de URL</string>
<string name="tor_use_url_previews_explainer">Forzar Tor al cargar vistas previas de URL</string>
<string name="tor_use_images">Imágenes</string>
<string name="tor_use_images_explainer">Forzar Tor al cargar imágenes</string>
<string name="tor_use_videos">Videos</string>
<string name="tor_use_videos_explainer">Forzar Tor al cargar videos</string>
<string name="tor_use_money_operations">Operaciones monetarias</string>
<string name="tor_use_money_operations_explainer">Forzar Tor en transferencias de zaps, Lightning y Cashu</string>
<string name="tor_use_nip05_verification">Verificación de dirección de Nostr</string>
<string name="tor_use_nip05_verification_explainer">Forzar Tor al verificar direcciones NIP-05</string>
<string name="tor_use_nip96_uploads">Subidas multimedia</string>
<string name="tor_use_nip96_uploads_explainer">Forzar Tor al subir contenido</string>
<string name="tor_internal">Interno</string>
<string name="tor_external">Orbot</string>
<string name="tor_off">Desactivado</string>
<string name="tor_when_needed">Básico</string>
<string name="tor_default">Predeterminado</string>
<string name="tor_small_payloads">Todo excepto contenido multimedia</string>
<string name="tor_full_privacy">Privacidad total</string>
<string name="tor_custom">Personalizado</string>
<string name="tor_when_needed_explainer">Usar Tor cuando lo requiera el servidor</string>
<string name="tor_default_explainer">Ocultar tu IP de relés aleatorios</string>
<string name="tor_small_payloads_explainer">Ocultar tu IP de todo, excepto imágenes y videos</string>
<string name="tor_full_privacy_explainer">Ocultar su IP en todas las conexiones</string>
<string name="tor_custom_explainer">Crea el tuyo</string>
<string name="invalid_port_number">Número de puerto inválido</string>
<string name="use_orbot">Usar Orbot</string>
<string name="disconnect_from_your_orbot_setup">Desconectar Tor/Orbot</string>
@@ -462,6 +507,7 @@
<string name="community_no_descriptor">Esta comunidad no tiene descripción. Habla con el propietario para agregar una.</string>
<string name="add_sensitive_content_label">Contenido delicado</string>
<string name="add_sensitive_content_description">Agrega una advertencia de contenido sensible antes de mostrarlo</string>
<string name="preferences">Preferencias de la app</string>
<string name="settings">Configuración</string>
<string name="connectivity_type_always">Siempre</string>
<string name="connectivity_type_wifi_only">Solo Wi-Fi</string>
@@ -474,6 +520,7 @@
<string name="light">Claro</string>
<string name="dark">Oscuro</string>
<string name="application_preferences">Preferencias de la aplicación</string>
<string name="wallet_connect">Wallet Connect</string>
<string name="language">Idioma</string>
<string name="theme">Tema</string>
<string name="automatically_load_images_gifs">Vista previa de imagen</string>
@@ -121,6 +121,8 @@
<string name="save_to_gallery">Guardar en la galería</string>
<string name="image_saved_to_the_gallery">Imagen guardada en la galería</string>
<string name="failed_to_save_the_image">Error al guardar la imagen</string>
<string name="video_saved_to_the_gallery">Video guardado en la galería de videos del teléfono</string>
<string name="failed_to_save_the_video">Error al guardar el video</string>
<string name="upload_image">Subir imagen</string>
<string name="uploading">Subiendo…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">El usuario no tiene configurada una dirección de Lightning para recibir sats</string>
@@ -358,8 +360,11 @@
<string name="delete_media_server">Eliminar servidor multimedia</string>
<string name="upload_server_relays_nip95">Tus relés (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Los archivos están alojados en tus relés. Nuevo NIP: comprueba si son compatibles.</string>
<string name="privacy_options">Opciones de privacidad</string>
<string name="connect_via_tor_short">Configuración de Tor/Orbot</string>
<string name="connect_via_tor">Conéctate a través de tu configuración de Orbot</string>
<string name="connect_via_tor1">Ajustar</string>
<string name="connect_via_tor2">Configuración de Tor</string>
<string name="do_you_really_want_to_disable_tor_title">¿Desconectarse de tu Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Los datos se transferirán de inmediato en la red normal</string>
<string name="yes"></string>
@@ -368,6 +373,7 @@
<string name="follow_list_kind3follows">Todos los seguidos</string>
<string name="follow_list_global">Global</string>
<string name="follow_list_mute_list">Lista de silenciados</string>
<string name="connect_through_your_orbot_setup_short">El puerto predeterminado es 9050</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Conéctate a través de Tor con Orbot
\n\n1. Instala [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android).
\n2. Inicia Orbot.
@@ -377,6 +383,45 @@
\n6. Presiona y activa el botón para usar Orbot como proxy.
</string>
<string name="orbot_socks_port">Puerto Socks de Orbot</string>
<string name="use_internal_tor">Motor de Tor activo</string>
<string name="use_internal_tor_explainer">Usar la versión interna u Orbot</string>
<string name="tor_preset">Preconfiguración de Tor y privacidad</string>
<string name="tor_preset_explainer">Modificar rápidamente todos los ajustes a continuación</string>
<string name="tor_use_onion_address">Url/Relés tipo onion</string>
<string name="tor_use_onion_address_explainer">Usar Tor para cualquier URL .onion</string>
<string name="tor_use_dm_relays">Relés de mensajes directos</string>
<string name="tor_use_dm_relays_explainer">Forzar Tor para enviar y recibir mensajes directos</string>
<string name="tor_use_new_relays">Relés no confiables</string>
<string name="tor_use_new_relays_explainer">Forzar Tor en la bandeja de salida/entrada</string>
<string name="tor_use_trusted_relays">Relés de confianza</string>
<string name="tor_use_trusted_relays_explainer">Forzar Tor en todos los relés de tus listas</string>
<string name="tor_use_profile_pictures">Imágenes de perfil</string>
<string name="tor_use_profile_pictures_explainer">Forzar Tor al cargar imágenes de perfil</string>
<string name="tor_use_url_previews">Vistas previas de URL</string>
<string name="tor_use_url_previews_explainer">Forzar Tor al cargar vistas previas de URL</string>
<string name="tor_use_images">Imágenes</string>
<string name="tor_use_images_explainer">Forzar Tor al cargar imágenes</string>
<string name="tor_use_videos">Videos</string>
<string name="tor_use_videos_explainer">Forzar Tor al cargar videos</string>
<string name="tor_use_money_operations">Operaciones monetarias</string>
<string name="tor_use_money_operations_explainer">Forzar Tor en transferencias de zaps, Lightning y Cashu</string>
<string name="tor_use_nip05_verification">Verificación de dirección de Nostr</string>
<string name="tor_use_nip05_verification_explainer">Forzar Tor al verificar direcciones NIP-05</string>
<string name="tor_use_nip96_uploads">Subidas multimedia</string>
<string name="tor_use_nip96_uploads_explainer">Forzar Tor al subir contenido</string>
<string name="tor_internal">Interno</string>
<string name="tor_external">Orbot</string>
<string name="tor_off">Desactivado</string>
<string name="tor_when_needed">Básico</string>
<string name="tor_default">Predeterminado</string>
<string name="tor_small_payloads">Todo excepto contenido multimedia</string>
<string name="tor_full_privacy">Privacidad total</string>
<string name="tor_custom">Personalizado</string>
<string name="tor_when_needed_explainer">Usar Tor cuando lo requiera el servidor</string>
<string name="tor_default_explainer">Ocultar tu IP de relés aleatorios</string>
<string name="tor_small_payloads_explainer">Ocultar tu IP de todo, excepto imágenes y videos</string>
<string name="tor_full_privacy_explainer">Oculta tu IP en todas las conexiones</string>
<string name="tor_custom_explainer">Crea el tuyo</string>
<string name="invalid_port_number">Número de puerto inválido</string>
<string name="use_orbot">Usar Orbot</string>
<string name="disconnect_from_your_orbot_setup">Desconectar Tor/Orbot</string>
@@ -462,6 +507,7 @@
<string name="community_no_descriptor">Esta comunidad no tiene descripción. Habla con el propietario para agregar una.</string>
<string name="add_sensitive_content_label">Contenido delicado</string>
<string name="add_sensitive_content_description">Agrega una advertencia de contenido sensible antes de mostrarlo</string>
<string name="preferences">Preferencias de la app</string>
<string name="settings">Configuración</string>
<string name="connectivity_type_always">Siempre</string>
<string name="connectivity_type_wifi_only">Solo Wi-Fi</string>
@@ -474,6 +520,7 @@
<string name="light">Claro</string>
<string name="dark">Oscuro</string>
<string name="application_preferences">Preferencias de la aplicación</string>
<string name="wallet_connect">Wallet Connect</string>
<string name="language">Idioma</string>
<string name="theme">Tema</string>
<string name="automatically_load_images_gifs">Vista previa de imagen</string>
@@ -93,4 +93,21 @@ class Nip04Test {
assertTrue(Nip04.isNIP04("zJxfaJ32rN5Dg1ODjOlEew==?iv=EV5bUjcc4OX2Km/zPp4ndQ=="))
assertTrue(Nip04.isNIP04("6f8dMstm+udOu7yipSn33orTmwQpWbtfuY95NH+eTU1kArysWJIDkYgI2D25EAGIDJsNd45jOJ2NbVOhFiL3ZP/NWsTwXokk34iyHyA/lkjzugQ1bHXoMD1fP/Ay4hB4al1NHb8HXHKZaxPrErwdRDb8qa/I6dXb/1xxyVvNQBHHvmsM5yIFaPwnCN1DZqXf2KbTA/Ekz7Hy+7R+Sy3TXLQDFpWYqykppkXc7Fs0qSuPRyxz5+anuN0dxZa9GTwTEnBrZPbthKkNRrvZMdTGJ6WumOh9aUq8OJJWy9aOgsXvs7qjN1UqcCqQqYaVnEOhCaqWNDsVtsFrVDj+SaLIBvCiomwF4C4nIgngJ5I69tx0UNI0q+ZnvOGQZ7m1PpW2NYP7Yw43HJNdeUEQAmdCPnh/PJwzLTnIxHmQU7n7SPlMdV0SFa6H8y2HHvex697GAkyE5t8c2uO24OnqIwF1tR3blIqXzTSRl0GA6QvrSj2p4UtnWjvF7xT7RiIEyTtgU/AsihTrXyXzWWZaIBJogpgw6erlZqWjCH7sZy/WoGYEiblobOAqMYxax6vRbeuGtoYksr/myX+x9rfLrYuoDRTw4woXOLmMrrj+Mf0TbAgc3SjdkqdsPU1553rlSqIEZXuFgoWmxvVQDtekgTYyS97G81TDSK9nTJT5ilku8NVq2LgtBXGwsNIw/xekcOUzJke3kpnFPutNaexR1VF3ohIuqRKYRGcd8ADJP2lfwMcaGRiplAmFoaVS1YUhQwYFNq9rMLf7YauRGV4BJg/t9srdGxf5RoKCvRo+XM/nLxxysTR9MVaEP/3lDqjwChMxs+eWfLHE5vRWV8hUEqdrWNZV29gsx5nQpzJ4PARGZVu310pQzc6JAlc2XAhhFk6RamkYJnmCSMnb/RblzIATBi2kNrCVAlaXIon188inB62rEpZGPkRIP7PUfu27S/elLQHBHeGDsxOXsBRo1gl3te+raoBHsxo6zvRnYbwdAQa5taDE63eh+fT6kFI+xYmXNAQkU8Dp0MVhEh4JQI06Ni/AKrvYpC95TXXIphZcF+/Pv/vaGkhG2X9S3uhugwWK?iv=2vWkOQQi0WynNJz/aZ4k2g=="))
}
@Test
fun isNIP04EncodeWithBug() {
assertTrue(
Nip04.isNIP04(
"QOAYBWa88ConWs2C4kSvNqAcowCtg0ZRtAl7FyLSv9VMaJH4oCiDx0h8VLBnV97HdE4lv" +
"TW7AYC1eEw8/t1dbe0qRc3XrOt7MrPAO8yqpy1/3lFB1+10kip0+KdgT8Quvv02wTP8Dqi" +
"xpr2fliAIG2ONvDn+O5V0q9aVUN9HitgL/myTyR0T42edmxWeZoMBEOKvJyO80FekSsgVL" +
"ASafA/T5z4xs8oG88pSe9wSbSsw0xNjJeh3xLRCLuEuA9KI8hQ1Ys9nEax2UlaB/IL3o77" +
"OwBL+rrdUbNHTxYifgygRhg3BaXMsXRFNJbqYeMaRaNbvHkLVAQV2jLY4P/cKHBjEcTC/f" +
"lrCc2NCYF34rOQUY5EJVnFzM8qYVw6xNupBHTS7WFx1r60cPjG19P/+yoiTZ6bPdHTU0X2" +
"t64ovF2YWUq6/iKAclMaZDhWfrKqf82e62oIff55WQw2bw8A/jtBQVCf66EtEJ2OSFxNaZ" +
"rO+A4oLkHDCnAV+6fYzwo89gPOvORcVvSvg55yGiBFUZx9EHS6kdH1SU80/Mbxe2oI=" +
"?iv=gxz9pUFJFZHuV+D+hgKEOw==-null",
),
)
}
}
@@ -153,14 +153,21 @@ class Nip04(
}
fun isNIP04(encoded: String): Boolean {
val l = encoded.length
// cleaning up some bug from some client.
val cleanedUp = encoded.removeSuffix("-null")
val l = cleanedUp.length
if (l < 28) return false
return encoded[l - 28] == '?' && encoded[l - 27] == 'i' && encoded[l - 26] == 'v' && encoded[l - 25] == '='
return cleanedUp[l - 28] == '?' &&
cleanedUp[l - 27] == 'i' &&
cleanedUp[l - 26] == 'v' &&
cleanedUp[l - 25] == '='
}
fun decodeFromNIP04(payload: String): EncryptedInfo? =
try {
val parts = payload.split("?iv=")
// cleaning up some bug from some client.
val parts = payload.removeSuffix("-null").split("?iv=")
EncryptedInfo(
ciphertext = Base64.getDecoder().decode(parts[0]),
nonce = Base64.getDecoder().decode(parts[1]),