diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index eebabdfba..08282a725 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -25,8 +25,9 @@ If applicable, add a video and/or screenshots to help explain your problem.
**Device (please complete the following information):**
- Phone Brand/Model [e.g. Pixel 7 Pro]:
- - Android Version [e.g. 33]:
- - App Version [e.g. v0.20.3]:
+ - Android Version [e.g. 34]:
+ - App Version [e.g. v0.94.3]:
+ - App Flavour [e.g. Google Play or FDroid]:
- Amber Version (if using it to sign):
**Bounty (in Bitcoin sats) offered for a solution**
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt
index 8db52a3e4..cdba7b693 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt
@@ -235,7 +235,7 @@ fun ProfileContentTemplate(
.width(100.dp)
.height(100.dp)
.clip(shape = CircleShape)
- .border(3.dp, MaterialTheme.colorScheme.background, CircleShape)
+ .border(3.dp, MaterialTheme.colorScheme.onBackground, CircleShape)
.clickable(onClick = onClick),
loadProfilePicture = accountViewModel.settings.showProfilePictures.value,
loadRobohash = accountViewModel.settings.featureSet != FeatureSetType.PERFORMANCE,
@@ -425,7 +425,7 @@ fun WatchFollower(
.observeAsState()
LaunchedEffect(key1 = accountUserFollowersState) {
- onReady(baseAccountUser.followerCount().toString() ?: "--")
+ onReady(baseAccountUser.followerCount().toString())
}
}
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/theme/Theme.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/theme/Theme.kt
index a4f60bb7b..70edb0362 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/theme/Theme.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/theme/Theme.kt
@@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.ui.theme
import android.app.Activity
import android.app.UiModeManager
import android.content.Context
-import android.graphics.Color.red
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.isSystemInDarkTheme
@@ -278,14 +277,14 @@ val darkLargeProfilePictureModifier =
.width(120.dp)
.height(120.dp)
.clip(shape = CircleShape)
- .border(3.dp, DarkColorPalette.background, CircleShape)
+ .border(3.dp, DarkColorPalette.onBackground, CircleShape)
val lightLargeProfilePictureModifier =
Modifier
.width(120.dp)
.height(120.dp)
.clip(shape = CircleShape)
- .border(3.dp, LightColorPalette.background, CircleShape)
+ .border(3.dp, LightColorPalette.onBackground, CircleShape)
val RichTextDefaults = RichTextStyle().resolveDefaults()
diff --git a/amethyst/src/main/res/values-fa-rIR/strings.xml b/amethyst/src/main/res/values-fa-rIR/strings.xml
index 71a721d72..e5780a860 100644
--- a/amethyst/src/main/res/values-fa-rIR/strings.xml
+++ b/amethyst/src/main/res/values-fa-rIR/strings.xml
@@ -81,6 +81,13 @@
!خیلی ممنون
مبلغ به ساتوشی
ارسال ساتوشی
+ شکلک ساز مخفی
+ یک شکلک به همراه پیام مخفی به یادداشت اضافه کنید
+ پیام مخفی به گیرنده
+ پیام پنهان من
+ پیشوند نمایان
+ 😎
+ افزودن به یادداشت
" %1$s : %2$s خطا در تبدیل"
"%1$s پیش نمایش تصویر کارت برای"
کانال جدید
@@ -90,6 +97,7 @@
توصیف
"درباره ما.. "
به چی فکر میکنی؟
+ نوشتن یک پیام...
ارسال
ذخیره
ساختن
@@ -106,6 +114,7 @@
خبرنامه همگانی
جستجو در خبرنامه
افزودن رله
+ نام
نمایش نام
نام من
استریچ باحالیان
@@ -141,6 +150,7 @@
گفتگوها
یادداشت ها
پاسخ ها
+ مال شما
گالری
"دنبال شوندگان"
"گزارش ها"
@@ -195,6 +205,7 @@
با توصیف
و تصویر
نام گفتگو تغییر کرد به
+ نمایه جدید گفتگو:
تصویر
و تصویر به
ترک کردن
@@ -202,6 +213,13 @@
کانال ساخته شد
"اطلاعات کانال تغییر کرد به"
گفتگوی عمومی
+ فراداده گفتگوی عمومی
+ گفتگوهای عمومی در ناستر برای همه نمایان هستند
+ می توانند در آن شرکت کنند. آنها برای انجمن های باز درباره موضوعات بهخصوص عالی هستند.
+ نظارت می تواند توسط حذف پست ها از رله ها انجام گیرد
+ رله ها
+ برای میزبانی این گروه ۱تا ۳ رله وارد کنید.
+ کلاینت های ناستر از این تنظیمات استفاده می کنند تا بدانند پیام ها را از کجا بارگیری کنند و به کجا بفرستند.
یادداشت های دریافت شده
بیرون کردن
خودکار
@@ -508,6 +526,7 @@
ارسال به کیف پول زپ
باز کردن در کیف پول Cashu
کپی کردن توکن
+ در یک اپلیکیشن دیگر باز کن
آدرس لایتنینگ تنظیم نشده است
توکن به کلیپبورد کپی شد
زنده
@@ -587,6 +606,8 @@
موضوع
موضوع گفتگو
"\@کاربر1, @کاربر2, @کاربر3"
+ نمی توان بارگذاری کرد
+ مقصد پیام را وارد کنید
اعضای گروه
توضیحات برای اعضا
تعویض نام به خاطر اهداف جدید.
@@ -863,6 +884,7 @@
خلاصه تغییرات
اصلاحات سریع…
پذیرش پیشنهاد
+ ویديو را در قاب جدا باز کن
بارگيری
روشن کردن متن
متن خاموش
@@ -928,4 +950,5 @@
هیچ اپ تورنتی برای باز کردن و بارگیری فایل نصب نیست.
لیستی را برای فیلتر خبرنامه انتخاب کنید
با قفل کردن دستگاه از حساب کاربری خارج شو
+ پیام خصوصی
diff --git a/amethyst/src/main/res/values-sl-rSI/strings.xml b/amethyst/src/main/res/values-sl-rSI/strings.xml
index 4fa7802ba..358f73fd9 100644
--- a/amethyst/src/main/res/values-sl-rSI/strings.xml
+++ b/amethyst/src/main/res/values-sl-rSI/strings.xml
@@ -77,7 +77,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Profilna pasica
Plačilo uspešno
Napaka pri razčlembi sporočila o napaki
- " Sledim"
+ " Sledi"
" Sledilcev"
Profil
Varnostni filtri
@@ -222,6 +222,13 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Kanal ustvarjen
"Informacije kanala spremenjene v"
Javni pogovor
+ Metapodatki Javnega Klepeta
+ Javni klepeti so vidni vsem na Nostru in vsakdo
+ se lahko pridruži. So odlični za odprte skupnosti o specifičnih temah.
+ Moderiranje je možno z brisanjem objav na njihovih relejih
+ Releji
+ Vnesi 1-3 releje, ki gostijo to skupino.
+ Nostr odjemalci uporabljajo to nastavitev, da vedo, od kod prenesti tvoja sporočila in kam jih poslati.
sprejete objave
Odstrani
Avtomatsko
@@ -529,6 +536,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Pošlji v Zap denarnico
Odpri Cashu denarnico
Kopiraj žeton
+ Odpri z drugo aplikacijo
Lightning naslov ni nastavljen
Žeton kopiran v odložišče
V ŽIVO
@@ -559,6 +567,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Celovit
Poenostavljen
Optimiziran
+ Klasično
+ Moderno
Sistemska
Svetla
Temna
@@ -573,6 +583,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Skrij navigacijsko vrstico ob pomikanju
UI način
Izberi stil objave
+ Slog galerije profila
+ Izberi slog galerije
Naloži sliko
Pošiljatelji nezaželjenih vsebin
Utišano. Klikni za vklop zvoka
@@ -604,6 +616,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Zadeva
Tema pogovora
"\@Uporabnik1, @Uporabnik2, @Uporabnik3"
+ Nalaganje ni uspelo
+ Najprej vnesi cilj sporočila
Člani te skupine
Razlaga članom
Spreminjanje imena za dosego novih ciljev.
@@ -872,6 +886,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Povzetek sprememb
Hitri popravki…
Sprejmi predlog
+ Zaženi video v pojavnem oknu
Prenesi
Vklopi besedilo
Izklopi besedilo
@@ -937,4 +952,5 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Ni nameščenih torent aplikacij za odpiranje in prenos datoteke.
Izberite seznam za filtriranje vira
Odjava ob zaklepu naprave
+ Zasebno sporočilo
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt
index 093121ae5..2b057dc67 100644
--- a/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip19Bech32/bech32/Bech32Util.kt
@@ -168,18 +168,20 @@ object Bech32 {
bech32: String,
noChecksum: Boolean = false,
): Triple, Encoding> {
+ val filteredBech32 = bech32.filter { it.code in 33..126 }
+
var pos = 0
- bech32.forEachIndexed { index, char ->
+ filteredBech32.forEachIndexed { index, char ->
require(char.code in 33..126) { "invalid character $char" }
if (char == '1') {
pos = index
}
}
- val hrp = bech32.take(pos).lowercase() // strings must be lower case
+ val hrp = filteredBech32.take(pos).lowercase() // strings must be lower case
require(hrp.length in 1..83) { "hrp must contain 1 to 83 characters" }
- val data = Array(bech32.length - pos - 1) { map[bech32[pos + 1 + it].code] }
+ val data = Array(filteredBech32.length - pos - 1) { map[filteredBech32[pos + 1 + it].code] }
return if (noChecksum) {
Triple(hrp, data, Encoding.Beck32WithoutChecksum)
diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt
index 1edbd57e0..343072320 100644
--- a/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt
+++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip19Bech32/NIP19ParserTest.kt
@@ -21,6 +21,7 @@
package com.vitorpamplona.quartz.nip19Bech32
import com.vitorpamplona.quartz.nip01Core.tags.addressables.ATag
+import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes
import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress
import com.vitorpamplona.quartz.nip19Bech32.entities.NEvent
import com.vitorpamplona.quartz.nip19Bech32.entities.NProfile
@@ -428,4 +429,15 @@ class NIP19ParserTest {
nevent,
)
}
+
+ @Test
+ fun decodeBech32WithInvisibleCharacter() {
+ val bomChar = '\uFEFF'
+ val withBom = bomChar + "nsec1lfkarc7439n4l3uahr45ej8mrjc39dd879t0ps355550dj8j9uzs3rnw24"
+
+ assertEquals(
+ "nsec1lfkarc7439n4l3uahr45ej8mrjc39dd879t0ps355550dj8j9uzs3rnw24",
+ withBom.bechToBytes().toNsec(),
+ )
+ }
}