Merge remote-tracking branch 'origin/HEAD' into less_memory_test_branch

This commit is contained in:
Vitor Pamplona
2023-03-09 09:01:27 -05:00
10 changed files with 99 additions and 46 deletions

View File

@@ -280,11 +280,6 @@ object LocalCache {
note.loadEvent(event, author, awardDefinition)
// Counts the replies
awardees.forEach {
it.addBadgeAward(note)
}
// Replies of an Badge Definition are Award Events
awardDefinition.forEach {
it.addReply(note)

View File

@@ -46,9 +46,6 @@ class User(val pubkeyHex: String) {
var privateChatrooms = mapOf<User, Chatroom>()
private set
var badgeAwards = setOf<Note>()
private set
var acceptedBadges: AddressableNote? = null
fun pubkey() = Hex.decode(pubkeyHex)
@@ -142,18 +139,6 @@ class User(val pubkeyHex: String) {
}
}
fun addBadgeAward(note: Note) {
if (note !in badgeAwards) {
badgeAwards = badgeAwards + note
liveSet?.badges?.invalidateData()
}
}
fun removeBadgeAward(deleteNote: Note) {
badgeAwards = badgeAwards - deleteNote
liveSet?.badges?.invalidateData()
}
fun updateAcceptedBadges(note: AddressableNote) {
acceptedBadges = note
liveSet?.badges?.invalidateData()

View File

@@ -45,7 +45,7 @@ abstract class NostrDataSource(val debugName: String) {
fun printCounter() {
eventCounter.forEach {
println("AAA Count ${it.key}: ${it.value.counter}")
Log.d("STATE DUMP", "Received Events ${it.key}: ${it.value.counter}")
}
}

View File

@@ -124,7 +124,7 @@ fun MainTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewModel)
.joinToString { it.filter.toJson() }
}"
}.forEach {
Log.d("CURRENT FILTERS", it)
Log.d("STATE DUMP", it)
}
NostrAccountDataSource.printCounter()
@@ -143,14 +143,14 @@ fun MainTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewModel)
NostrUserProfileDataSource.printCounter()
println("Connected Relays: " + RelayPool.connectedRelays())
Log.d("STATE DUMP", "Connected Relays: " + RelayPool.connectedRelays())
val imageLoader = Coil.imageLoader(context)
println("Image Disk Cache ${(imageLoader.diskCache?.size ?: 0) / (1024 * 1024)}/${(imageLoader.diskCache?.maxSize ?: 0) / (1024 * 1024)} MB")
println("Image Memory Cache ${(imageLoader.memoryCache?.size ?: 0) / (1024 * 1024)}/${(imageLoader.memoryCache?.maxSize ?: 0) / (1024 * 1024)} MB")
Log.d("STATE DUMP", "Image Disk Cache ${(imageLoader.diskCache?.size ?: 0) / (1024 * 1024)}/${(imageLoader.diskCache?.maxSize ?: 0) / (1024 * 1024)} MB")
Log.d("STATE DUMP", "Image Memory Cache ${(imageLoader.memoryCache?.size ?: 0) / (1024 * 1024)}/${(imageLoader.memoryCache?.maxSize ?: 0) / (1024 * 1024)} MB")
println("Notes: " + LocalCache.notes.filter { it.value.event != null }.size + "/" + LocalCache.notes.size)
println("Users: " + LocalCache.users.filter { it.value.info?.latestMetadata != null }.size + "/" + LocalCache.users.size)
Log.d("STATE DUMP", "Notes: " + LocalCache.notes.filter { it.value.event != null }.size + "/" + LocalCache.notes.size)
Log.d("STATE DUMP", "Users: " + LocalCache.users.filter { it.value.info?.latestMetadata != null }.size + "/" + LocalCache.users.size)
}
) {
Icon(

View File

@@ -250,7 +250,7 @@ fun ListContent(
Divider(thickness = 0.25.dp)
IconRow(
title = "Backup Keys",
title = stringResource(R.string.backup_keys),
icon = R.drawable.ic_key,
tint = MaterialTheme.colors.onBackground,
onClick = { backupDialogOpen = true }

View File

@@ -45,6 +45,7 @@ import com.vitorpamplona.amethyst.service.model.ChannelCreateEvent
import com.vitorpamplona.amethyst.service.model.ChannelMessageEvent
import com.vitorpamplona.amethyst.service.model.ChannelMetadataEvent
import com.vitorpamplona.amethyst.service.model.LongTextNoteEvent
import com.vitorpamplona.amethyst.service.model.PrivateDmEvent
import com.vitorpamplona.amethyst.service.model.ReactionEvent
import com.vitorpamplona.amethyst.service.model.ReportEvent
import com.vitorpamplona.amethyst.service.model.RepostEvent
@@ -141,16 +142,18 @@ fun NoteCompose(
modifier = modifier
.combinedClickable(
onClick = {
if (noteEvent !is ChannelMessageEvent) {
navController.navigate("Note/${note.idHex}") {
if (noteEvent is ChannelMessageEvent) {
baseChannel?.let {
navController.navigate("Channel/${it.idHex}")
}
} else if (noteEvent is PrivateDmEvent) {
navController.navigate("Room/${note.author?.pubkeyHex}") {
launchSingleTop = true
}
} else {
note
.channel()
?.let {
navController.navigate("Channel/${it.idHex}")
}
navController.navigate("Note/${note.idHex}") {
launchSingleTop = true
}
}
},
onLongClick = { popupExpanded = true }

View File

@@ -38,7 +38,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext
@@ -132,12 +131,12 @@ private fun NSecCopyButton(
contentPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
) {
Icon(
tint = Color.White,
tint = MaterialTheme.colors.onPrimary,
imageVector = Icons.Default.Key,
contentDescription = stringResource(R.string.copies_the_nsec_id_your_password_to_the_clipboard_for_backup),
modifier = Modifier.padding(end = 5.dp)
)
Text("Copy Secret Key", color = MaterialTheme.colors.onBackground)
Text(stringResource(id = R.string.copy_my_secret_key), color = MaterialTheme.colors.onPrimary)
}
}

View File

@@ -1,4 +1,4 @@
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name_release" translatable="false">Amethyst</string>
<string name="app_name_debug" translatable="false">Amethyst Debug</string>
<string name="point_to_the_qr_code">Наведите на QR код</string>
@@ -172,4 +172,39 @@
<string name="report_hateful_speech">Сообщить об оскорблениях</string>
<string name="report_nudity_porn">Сообщить о наготе / порно</string>
<string name="others">других</string>
<string name="search_feed">Поиск</string>
<string name="mark_all_known_as_read">Отметить все известные прочитанными</string>
<string name="mark_all_new_as_read">Отметить все новые прочитанными</string>
<string name="mark_all_as_read">Отметить всё прочитанным</string>
<string name="backup_keys">Резервное копирование</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Резервное копирование и советы по безопасности
\n\nВаш аккаунт защищен приватным ключом. Этот ключ длинная случайная строка с приставкой **nsec1**. Любой, кто владеет вашим приватным ключом, может писать от вашего имени.
\n\n- **Никогда** не вставляйте ваш приватный ключ на сайтах или в приложениях, которым вы не доверяете.
\n- Разработчики Amethyst **никогда** не спросят ваш приватный ключ.
\n- **Сохраните** резервную копию приватного ключа, чтобы иметь возможность восстановить аккаунт. Советуем использовать менеджер паролей.
</string>
<string name="secret_key_copied_to_clipboard">Приватный ключ (nsec) скопирован</string>
<string name="copy_my_secret_key">Скопировать мой приватный ключ</string>
<string name="biometric_authentication_failed">Ошибка входа</string>
<string name="biometric_error">Ошибка</string>
<string name="badge_created_by">"Создан %1$s"</string>
<string name="badge_award_image_for">"Картинка значка-награды %1$s"</string>
<string name="new_badge_award_notif">Вы получили в награду новый значок</string>
<string name="award_granted_to">Значок-награда выдан</string>
<string name="copied_note_text_to_clipboard">Скопировать текст</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">ID (npub) автора скопирован</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">ID записи (note1) скопирован</string>
<string name="select_text_dialog_top">Выделить текст</string>
<string name="quick_action_select">Выделить</string>
<string name="quick_action_share_browser_link">Поделиться ссылкой</string>
<string name="quick_action_share">Поделиться</string>
<string name="quick_action_copy_user_id">Скопировать ID автора</string>
<string name="quick_action_copy_note_id">Скопировать ID записи</string>
<string name="quick_action_copy_text">Скопировать текст</string>
<string name="quick_action_delete">Удалить</string>
<string name="quick_action_unfollow">@string/unfollow</string>
<string name="quick_action_follow">@string/follow</string>
<string name="quick_action_request_deletion_alert_title">Запросить удаление</string>
<string name="quick_action_request_deletion_alert_body">Amethyst попросит релеи, к которым вы сейчас подключены, удалить эту запись. Однако нет гарантии, что запись будет навсегда удалена этими релеями, либо другими, уже сохранившими её.</string>
</resources>

View File

@@ -1,4 +1,4 @@
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name_release" translatable="false">Amethyst</string>
<string name="app_name_debug" translatable="false">Amethyst Debug</string>
<string name="point_to_the_qr_code">Наведіть на QR код</string>
@@ -17,7 +17,7 @@
<string name="impersonation">Видача себе за іншу особу</string>
<string name="illegal_behavior">Незаконні дії</string>
<string name="unknown">Невідомо</string>
<string name="relay_icon">Іконка рілею</string>
<string name="relay_icon">Іконка релею</string>
<string name="unknown_author">Невідомий автор</string>
<string name="copy_text">Скопіювати текст</string>
<string name="copy_user_pubkey">Скопіювати ключ користувача</string>
@@ -72,14 +72,14 @@
<string name="create">Створити</string>
<string name="cancel">Скасувати</string>
<string name="failed_to_upload_the_image">Не вдалося завантажити фото</string>
<string name="relay_address">Адреса рілея</string>
<string name="relay_address">Адреса релея</string>
<string name="posts">Дописи</string>
<string name="errors">Помилки</string>
<string name="home_feed">Домашня стрічка</string>
<string name="private_message_feed">Стрічка персональних повідомлень</string>
<string name="public_chat_feed">Стрічка чатів</string>
<string name="global_feed">Глобальна стрічка</string>
<string name="add_a_relay">Додати рілей</string>
<string name="add_a_relay">Додати релей</string>
<string name="display_name">Видиме ім\'я</string>
<string name="my_display_name">Моє видиме ім\'я</string>
<string name="username">Нікнейм</string>
@@ -110,7 +110,7 @@
<string name="follows">"Підписок"</string>
<string name="reports">"Скарг"</string>
<string name="more_options">Більше опцій</string>
<string name="relays">" Рілеїв"</string>
<string name="relays">" Релеїв"</string>
<string name="website">Сайт</string>
<string name="lightning_address">Lightning адреса</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Копіює Nsec ID (ваш пароль) для резервного копіювання</string>
@@ -172,4 +172,39 @@
<string name="report_hateful_speech">Повідомити про образи</string>
<string name="report_nudity_porn">Повідомити про наготу / порно</string>
<string name="others">інших</string>
<string name="search_feed">Пошук</string>
<string name="mark_all_known_as_read">Позначити всі відомі прочитаними</string>
<string name="mark_all_new_as_read">Позначити всі нові прочитаними</string>
<string name="mark_all_as_read">Позначити все прочитаним</string>
<string name="backup_keys">Резервне копіювання</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Резервне копіювання та поради з безпеки
\n\nВаш акаунт захищений приватним ключем. Цей ключ довгий випадковий рядок із приставкою **nsec1**. Той, хто володіє вашим приватним ключем, може писати від вашого імені.
\n\n- **Ніколи** не вставляйте ваш приватний ключ на сайтах або в додатках, яким ви не довіряєте.
\n- Розробники Amethyst **ніколи** не спитають ваш приватний ключ.
\n- **Збережіть** резервну копію приватного ключа, щоб мати можливість відновити акаунт. Радимо використовувати менеджер паролів.
</string>
<string name="secret_key_copied_to_clipboard">Приватний ключ (nsec) скопійовано</string>
<string name="copy_my_secret_key">Скопіювати мій приватний ключ</string>
<string name="biometric_authentication_failed">Помилка входу</string>
<string name="biometric_error">Помилка</string>
<string name="badge_created_by">"Створено %1$s"</string>
<string name="badge_award_image_for">"Картинка значка-нагороди %1$s"</string>
<string name="new_badge_award_notif">Ви отримали в нагороду новий значок</string>
<string name="award_granted_to">Значок-нагороду видано</string>
<string name="copied_note_text_to_clipboard">Скопіювати текст</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">ID (npub) автора скопійовано</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">ID запису (note1) скопійовано</string>
<string name="select_text_dialog_top">Виділити текст</string>
<string name="quick_action_select">Виділити</string>
<string name="quick_action_share_browser_link">Поділитися посиланням</string>
<string name="quick_action_share">Поділитися</string>
<string name="quick_action_copy_user_id">Скопіювати ID автора</string>
<string name="quick_action_copy_note_id">Скопіювати ID запису</string>
<string name="quick_action_copy_text">Скопіювати текст</string>
<string name="quick_action_delete">Видалити</string>
<string name="quick_action_unfollow">@string/unfollow</string>
<string name="quick_action_follow">@string/follow</string>
<string name="quick_action_request_deletion_alert_title">Запросити видалення</string>
<string name="quick_action_request_deletion_alert_body">Amethyst попросить релеї, до яких ви зараз підключені, видалити цей запис. Однак немає гарантії, що запис буде назавжди видалено цими релеями, або іншими, які вже його зберегли.</string>
</resources>

View File

@@ -177,6 +177,7 @@
<string name="mark_all_known_as_read">Mark all Known as read</string>
<string name="mark_all_new_as_read">Mark all New as read</string>
<string name="mark_all_as_read">Mark all as read</string>
<string name="backup_keys">Backup Keys</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Key Backup and Safety Tips
\n\nYour account is secured by a secret key. The key is long random string starting with **nsec1**. Anyone who has access to your secret key can publish content using your identity.
@@ -199,8 +200,8 @@
<string name="quick_action_select">Select</string>
<string name="quick_action_share_browser_link">Share Browser Link</string>
<string name="quick_action_share">Share</string>
<string name="quick_action_copy_user_id">Mention</string>
<string name="quick_action_copy_note_id">Quote</string>
<string name="quick_action_copy_user_id">Copy authors ID</string>
<string name="quick_action_copy_note_id">Copy note ID</string>
<string name="quick_action_copy_text">Copy</string>
<string name="quick_action_delete">Delete</string>
<string name="quick_action_unfollow">Unfollow</string>