diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 8c3f9ac10..fbed902c2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -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) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt index cc9d4cb01..eefdb80a7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -46,9 +46,6 @@ class User(val pubkeyHex: String) { var privateChatrooms = mapOf() private set - var badgeAwards = setOf() - 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() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt index 961e850a8..9df9931af 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt @@ -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}") } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt index 44e978209..55e2c376b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt @@ -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( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt index 040f1a105..381e4a8dd 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt @@ -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 } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 869cdf662..1a1bae8c6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -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 } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt index 2d4485602..773f216df 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountBackupDialog.kt @@ -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) } } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 6501cff66..3ee249dac 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1,4 +1,4 @@ - + Amethyst Amethyst Debug Наведите на QR код @@ -172,4 +172,39 @@ Сообщить об оскорблениях Сообщить о наготе / порно других + Поиск + Отметить все известные прочитанными + Отметить все новые прочитанными + Отметить всё прочитанным + Резервное копирование + + ## Резервное копирование и советы по безопасности + \n\nВаш аккаунт защищен приватным ключом. Этот ключ – длинная случайная строка с приставкой **nsec1**. Любой, кто владеет вашим приватным ключом, может писать от вашего имени. + \n\n- **Никогда** не вставляйте ваш приватный ключ на сайтах или в приложениях, которым вы не доверяете. + \n- Разработчики Amethyst **никогда** не спросят ваш приватный ключ. + \n- **Сохраните** резервную копию приватного ключа, чтобы иметь возможность восстановить аккаунт. Советуем использовать менеджер паролей. + + Приватный ключ (nsec) скопирован + Скопировать мой приватный ключ + Ошибка входа + Ошибка + "Создан %1$s" + "Картинка значка-награды %1$s" + Вы получили в награду новый значок + Значок-награда выдан + Скопировать текст + ID (npub) автора скопирован + ID записи (note1) скопирован + Выделить текст + Выделить + Поделиться ссылкой + Поделиться + Скопировать ID автора + Скопировать ID записи + Скопировать текст + Удалить + @string/unfollow + @string/follow + Запросить удаление + Amethyst попросит релеи, к которым вы сейчас подключены, удалить эту запись. Однако нет гарантии, что запись будет навсегда удалена этими релеями, либо другими, уже сохранившими её. \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 07f348f19..49a468613 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1,4 +1,4 @@ - + Amethyst Amethyst Debug Наведіть на QR код @@ -17,7 +17,7 @@ Видача себе за іншу особу Незаконні дії Невідомо - Іконка рілею + Іконка релею Невідомий автор Скопіювати текст Скопіювати ключ користувача @@ -72,14 +72,14 @@ Створити Скасувати Не вдалося завантажити фото - Адреса рілея + Адреса релея Дописи Помилки Домашня стрічка Стрічка персональних повідомлень Стрічка чатів Глобальна стрічка - Додати рілей + Додати релей Видиме ім\'я Моє видиме ім\'я Нікнейм @@ -110,7 +110,7 @@ "Підписок" "Скарг" Більше опцій - " Рілеїв" + " Релеїв" Сайт Lightning адреса Копіює Nsec ID (ваш пароль) для резервного копіювання @@ -172,4 +172,39 @@ Повідомити про образи Повідомити про наготу / порно інших + Пошук + Позначити всі відомі прочитаними + Позначити всі нові прочитаними + Позначити все прочитаним + Резервне копіювання + + ## Резервне копіювання та поради з безпеки + \n\nВаш акаунт захищений приватним ключем. Цей ключ – довгий випадковий рядок із приставкою **nsec1**. Той, хто володіє вашим приватним ключем, може писати від вашого імені. + \n\n- **Ніколи** не вставляйте ваш приватний ключ на сайтах або в додатках, яким ви не довіряєте. + \n- Розробники Amethyst **ніколи** не спитають ваш приватний ключ. + \n- **Збережіть** резервну копію приватного ключа, щоб мати можливість відновити акаунт. Радимо використовувати менеджер паролів. + + Приватний ключ (nsec) скопійовано + Скопіювати мій приватний ключ + Помилка входу + Помилка + "Створено %1$s" + "Картинка значка-нагороди %1$s" + Ви отримали в нагороду новий значок + Значок-нагороду видано + Скопіювати текст + ID (npub) автора скопійовано + ID запису (note1) скопійовано + Виділити текст + Виділити + Поділитися посиланням + Поділитися + Скопіювати ID автора + Скопіювати ID запису + Скопіювати текст + Видалити + @string/unfollow + @string/follow + Запросити видалення + Amethyst попросить релеї, до яких ви зараз підключені, видалити цей запис. Однак немає гарантії, що запис буде назавжди видалено цими релеями, або іншими, які вже його зберегли. \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bf1bebabe..a570d3326 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -177,6 +177,7 @@ Mark all Known as read Mark all New as read Mark all as read + Backup Keys ## 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 @@ Select Share Browser Link Share - Mention - Quote + Copy author’s ID + Copy note ID Copy Delete Unfollow