mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-11-10 20:36:45 +01:00
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
This commit is contained in:
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -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**
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -81,6 +81,13 @@
|
||||
<string name="thank_you_so_much">!خیلی ممنون</string>
|
||||
<string name="amount_in_sats">مبلغ به ساتوشی</string>
|
||||
<string name="send_sats">ارسال ساتوشی</string>
|
||||
<string name="secret_emoji_maker">شکلک ساز مخفی</string>
|
||||
<string name="secret_emoji_maker_explainer">یک شکلک به همراه پیام مخفی به یادداشت اضافه کنید</string>
|
||||
<string name="secret_note_to_receiver">پیام مخفی به گیرنده</string>
|
||||
<string name="secret_note_to_receiver_placeholder">پیام پنهان من</string>
|
||||
<string name="secret_visible_text">پیشوند نمایان</string>
|
||||
<string name="secret_visible_text_placeholder">😎</string>
|
||||
<string name="secret_add_to_text">افزودن به یادداشت</string>
|
||||
<string name="error_parsing_preview_for">" %1$s : %2$s خطا در تبدیل"</string>
|
||||
<string name="preview_card_image_for">"%1$s پیش نمایش تصویر کارت برای"</string>
|
||||
<string name="new_channel">کانال جدید</string>
|
||||
@@ -90,6 +97,7 @@
|
||||
<string name="description">توصیف</string>
|
||||
<string name="about_us">"درباره ما.. "</string>
|
||||
<string name="what_s_on_your_mind">به چی فکر میکنی؟</string>
|
||||
<string name="write_a_message">نوشتن یک پیام...</string>
|
||||
<string name="post">ارسال</string>
|
||||
<string name="save">ذخیره</string>
|
||||
<string name="create">ساختن</string>
|
||||
@@ -106,6 +114,7 @@
|
||||
<string name="global_feed">خبرنامه همگانی</string>
|
||||
<string name="search_feed">جستجو در خبرنامه</string>
|
||||
<string name="add_a_relay">افزودن رله</string>
|
||||
<string name="profile_name">نام</string>
|
||||
<string name="display_name">نمایش نام</string>
|
||||
<string name="my_display_name">نام من</string>
|
||||
<string name="my_awesome_name">استریچ باحالیان</string>
|
||||
@@ -141,6 +150,7 @@
|
||||
<string name="conversations">گفتگوها</string>
|
||||
<string name="notes">یادداشت ها</string>
|
||||
<string name="replies">پاسخ ها</string>
|
||||
<string name="mutual">مال شما</string>
|
||||
<string name="gallery">گالری</string>
|
||||
<string name="follows">"دنبال شوندگان"</string>
|
||||
<string name="reports">"گزارش ها"</string>
|
||||
@@ -195,6 +205,7 @@
|
||||
<string name="with_description_of">با توصیف</string>
|
||||
<string name="and_picture">و تصویر</string>
|
||||
<string name="changed_chat_name_to">نام گفتگو تغییر کرد به</string>
|
||||
<string name="changed_chat_profile_to">نمایه جدید گفتگو:</string>
|
||||
<string name="description_to">تصویر</string>
|
||||
<string name="and_picture_to">و تصویر به</string>
|
||||
<string name="leave">ترک کردن</string>
|
||||
@@ -202,6 +213,13 @@
|
||||
<string name="channel_created">کانال ساخته شد</string>
|
||||
<string name="channel_information_changed_to">"اطلاعات کانال تغییر کرد به"</string>
|
||||
<string name="public_chat">گفتگوی عمومی</string>
|
||||
<string name="public_chat_title">فراداده گفتگوی عمومی</string>
|
||||
<string name="public_chat_explainer">گفتگوهای عمومی در ناستر برای همه نمایان هستند
|
||||
می توانند در آن شرکت کنند. آنها برای انجمن های باز درباره موضوعات بهخصوص عالی هستند.
|
||||
نظارت می تواند توسط حذف پست ها از رله ها انجام گیرد</string>
|
||||
<string name="public_chat_relays_title">رله ها</string>
|
||||
<string name="public_chat_relays_explainer">برای میزبانی این گروه ۱تا ۳ رله وارد کنید.
|
||||
کلاینت های ناستر از این تنظیمات استفاده می کنند تا بدانند پیام ها را از کجا بارگیری کنند و به کجا بفرستند.</string>
|
||||
<string name="posts_received">یادداشت های دریافت شده</string>
|
||||
<string name="remove">بیرون کردن</string>
|
||||
<string name="translations_auto">خودکار</string>
|
||||
@@ -508,6 +526,7 @@
|
||||
<string name="cashu_redeem_to_zap">ارسال به کیف پول زپ</string>
|
||||
<string name="cashu_redeem_to_cashu">باز کردن در کیف پول Cashu</string>
|
||||
<string name="cashu_copy_token">کپی کردن توکن</string>
|
||||
<string name="quick_actions_open_in_another_app">در یک اپلیکیشن دیگر باز کن</string>
|
||||
<string name="no_lightning_address_set">آدرس لایتنینگ تنظیم نشده است</string>
|
||||
<string name="copied_token_to_clipboard">توکن به کلیپبورد کپی شد</string>
|
||||
<string name="live_stream_live_tag">زنده</string>
|
||||
@@ -587,6 +606,8 @@
|
||||
<string name="messages_new_message_subject">موضوع</string>
|
||||
<string name="messages_new_message_subject_caption">موضوع گفتگو</string>
|
||||
<string name="messages_new_message_to_caption">"\@کاربر1, @کاربر2, @کاربر3"</string>
|
||||
<string name="messages_cant_upload_title">نمی توان بارگذاری کرد</string>
|
||||
<string name="messages_cant_upload_explainer">مقصد پیام را وارد کنید</string>
|
||||
<string name="messages_group_descriptor">اعضای گروه</string>
|
||||
<string name="messages_new_subject_message">توضیحات برای اعضا</string>
|
||||
<string name="messages_new_subject_message_placeholder">تعویض نام به خاطر اهداف جدید.</string>
|
||||
@@ -863,6 +884,7 @@
|
||||
<string name="message_to_author">خلاصه تغییرات</string>
|
||||
<string name="message_to_author_placeholder">اصلاحات سریع…</string>
|
||||
<string name="accept_the_suggestion">پذیرش پیشنهاد</string>
|
||||
<string name="enter_picture_in_picture">ویديو را در قاب جدا باز کن</string>
|
||||
<string name="accessibility_download_for_offline">بارگيری</string>
|
||||
<string name="accessibility_lyrics_on">روشن کردن متن</string>
|
||||
<string name="accessibility_lyrics_off">متن خاموش</string>
|
||||
@@ -928,4 +950,5 @@
|
||||
<string name="torrent_no_apps">هیچ اپ تورنتی برای باز کردن و بارگیری فایل نصب نیست.</string>
|
||||
<string name="select_list_to_filter">لیستی را برای فیلتر خبرنامه انتخاب کنید</string>
|
||||
<string name="temporary_account">با قفل کردن دستگاه از حساب کاربری خارج شو</string>
|
||||
<string name="private_message">پیام خصوصی</string>
|
||||
</resources>
|
||||
|
||||
@@ -77,7 +77,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="profile_banner">Profilna pasica</string>
|
||||
<string name="payment_successful">Plačilo uspešno</string>
|
||||
<string name="error_parsing_error_message">Napaka pri razčlembi sporočila o napaki</string>
|
||||
<string name="following">" Sledim"</string>
|
||||
<string name="following">" Sledi"</string>
|
||||
<string name="followers">" Sledilcev"</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="security_filters">Varnostni filtri</string>
|
||||
@@ -222,6 +222,13 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="channel_created">Kanal ustvarjen</string>
|
||||
<string name="channel_information_changed_to">"Informacije kanala spremenjene v"</string>
|
||||
<string name="public_chat">Javni pogovor</string>
|
||||
<string name="public_chat_title">Metapodatki Javnega Klepeta</string>
|
||||
<string name="public_chat_explainer">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</string>
|
||||
<string name="public_chat_relays_title">Releji</string>
|
||||
<string name="public_chat_relays_explainer">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.</string>
|
||||
<string name="posts_received">sprejete objave</string>
|
||||
<string name="remove">Odstrani</string>
|
||||
<string name="translations_auto">Avtomatsko</string>
|
||||
@@ -529,6 +536,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="cashu_redeem_to_zap">Pošlji v Zap denarnico </string>
|
||||
<string name="cashu_redeem_to_cashu">Odpri Cashu denarnico</string>
|
||||
<string name="cashu_copy_token">Kopiraj žeton</string>
|
||||
<string name="quick_actions_open_in_another_app">Odpri z drugo aplikacijo</string>
|
||||
<string name="no_lightning_address_set">Lightning naslov ni nastavljen</string>
|
||||
<string name="copied_token_to_clipboard">Žeton kopiran v odložišče</string>
|
||||
<string name="live_stream_live_tag">V ŽIVO</string>
|
||||
@@ -559,6 +567,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="ui_feature_set_type_complete">Celovit</string>
|
||||
<string name="ui_feature_set_type_simplified">Poenostavljen</string>
|
||||
<string name="ui_feature_set_type_performance">Optimiziran</string>
|
||||
<string name="gallery_type_classic">Klasično</string>
|
||||
<string name="gallery_type_modern">Moderno</string>
|
||||
<string name="system">Sistemska</string>
|
||||
<string name="light">Svetla</string>
|
||||
<string name="dark">Temna</string>
|
||||
@@ -573,6 +583,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="automatically_hide_nav_bars_description">Skrij navigacijsko vrstico ob pomikanju</string>
|
||||
<string name="ui_style">UI način</string>
|
||||
<string name="ui_style_description">Izberi stil objave</string>
|
||||
<string name="gallery_style">Slog galerije profila</string>
|
||||
<string name="gallery_style_description">Izberi slog galerije</string>
|
||||
<string name="load_image">Naloži sliko</string>
|
||||
<string name="spamming_users">Pošiljatelji nezaželjenih vsebin</string>
|
||||
<string name="muted_button">Utišano. Klikni za vklop zvoka</string>
|
||||
@@ -604,6 +616,8 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="messages_new_message_subject">Zadeva</string>
|
||||
<string name="messages_new_message_subject_caption">Tema pogovora</string>
|
||||
<string name="messages_new_message_to_caption">"\@Uporabnik1, @Uporabnik2, @Uporabnik3"</string>
|
||||
<string name="messages_cant_upload_title">Nalaganje ni uspelo</string>
|
||||
<string name="messages_cant_upload_explainer">Najprej vnesi cilj sporočila</string>
|
||||
<string name="messages_group_descriptor">Člani te skupine</string>
|
||||
<string name="messages_new_subject_message">Razlaga članom</string>
|
||||
<string name="messages_new_subject_message_placeholder">Spreminjanje imena za dosego novih ciljev.</string>
|
||||
@@ -872,6 +886,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="message_to_author">Povzetek sprememb</string>
|
||||
<string name="message_to_author_placeholder">Hitri popravki…</string>
|
||||
<string name="accept_the_suggestion">Sprejmi predlog</string>
|
||||
<string name="enter_picture_in_picture">Zaženi video v pojavnem oknu</string>
|
||||
<string name="accessibility_download_for_offline">Prenesi</string>
|
||||
<string name="accessibility_lyrics_on">Vklopi besedilo</string>
|
||||
<string name="accessibility_lyrics_off">Izklopi besedilo</string>
|
||||
@@ -937,4 +952,5 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov</string>
|
||||
<string name="torrent_no_apps">Ni nameščenih torent aplikacij za odpiranje in prenos datoteke.</string>
|
||||
<string name="select_list_to_filter">Izberite seznam za filtriranje vira</string>
|
||||
<string name="temporary_account">Odjava ob zaklepu naprave</string>
|
||||
<string name="private_message">Zasebno sporočilo</string>
|
||||
</resources>
|
||||
|
||||
@@ -168,18 +168,20 @@ object Bech32 {
|
||||
bech32: String,
|
||||
noChecksum: Boolean = false,
|
||||
): Triple<String, Array<Int5>, 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)
|
||||
|
||||
@@ -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(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user