diff --git a/README.md b/README.md
index bab0a73aa..27e371412 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,7 @@ Join the social network you control.
[](https://jitpack.io/#vitorpamplona/amethyst)
[](https://github.com/vitorpamplona/amethyst/actions/workflows/build.yml)
[](/LICENSE)
+[](https://deepwiki.com/vitorpamplona/amethyst)
## Download and Install
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSyncedSettings.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSyncedSettings.kt
index c6a6bb951..8ee4e293f 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSyncedSettings.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSyncedSettings.kt
@@ -113,6 +113,10 @@ class AccountSyncedSettings(
security.warnAboutPostsWithReports = syncedSettingsInternal.security.warnAboutPostsWithReports
}
}
+
+ fun dontTranslateFromFilteredBySpokenLanguages(): Set {
+ return languages.dontTranslateFrom - getLanguagesSpokenByUser()
+ }
}
@Stable
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt
index 00f35edb7..d3e3e3b8b 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt
@@ -201,10 +201,11 @@ object MediaSaverToDisk {
contentSource: BufferedSource,
contentResolver: ContentResolver,
) {
+ val cleanMimeType = contentType.substringBefore(";").trim()
val contentValues =
ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, displayName)
- put(MediaStore.MediaColumns.MIME_TYPE, contentType)
+ put(MediaStore.MediaColumns.MIME_TYPE, cleanMimeType)
put(
MediaStore.MediaColumns.RELATIVE_PATH,
Environment.DIRECTORY_PICTURES + File.separatorChar + PICTURES_SUBDIRECTORY,
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt
index 37cf32550..53d3312a7 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt
@@ -84,6 +84,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.search.SearchScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.settings.NIP47SetupScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.settings.SecurityFiltersScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.settings.SettingsScreen
+import com.vitorpamplona.amethyst.ui.screen.loggedIn.settings.UserSettingsScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.threadview.ThreadScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.VideoScreen
import com.vitorpamplona.amethyst.ui.screen.loggedOff.AddAccountDialog
@@ -124,6 +125,7 @@ fun AppNavigation(
composableFromEnd { BookmarkListScreen(accountViewModel, nav) }
composableFromEnd { DraftListScreen(accountViewModel, nav) }
composableFromEnd { SettingsScreen(sharedPreferencesViewModel, accountViewModel, nav) }
+ composableFromEnd { UserSettingsScreen(accountViewModel, nav) }
composableFromBottomArgs { NIP47SetupScreen(accountViewModel, nav, it.nip47) }
composableFromEndArgs { AllRelayListScreen(it.toAdd, accountViewModel, nav) }
@@ -256,9 +258,6 @@ private fun NavigateIfIntentRequested(
}
nav.newStack(Route.NewPost(message = message, attachment = media.toString()))
-
- media = null
- message = null
} else {
var newAccount by remember { mutableStateOf(null) }
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 d7eb4f753..4a87c1970 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
@@ -51,6 +51,7 @@ import androidx.compose.material.icons.outlined.CloudUpload
import androidx.compose.material.icons.outlined.Drafts
import androidx.compose.material.icons.outlined.GroupAdd
import androidx.compose.material.icons.outlined.Key
+import androidx.compose.material.icons.outlined.Person
import androidx.compose.material.icons.outlined.Security
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.HorizontalDivider
@@ -66,7 +67,6 @@ import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -74,7 +74,6 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.layout.ContentScale
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
@@ -427,8 +426,6 @@ fun ListContent(
var backupDialogOpen by remember { mutableStateOf(false) }
- val context = LocalContext.current
-
Column(modifier) {
NavigationRow(
title = R.string.profile,
@@ -508,6 +505,14 @@ fun ListContent(
route = Route.Settings,
)
+ NavigationRow(
+ title = R.string.user_preferences,
+ icons = listOf(Icons.Outlined.Person, Icons.Outlined.Settings),
+ tint = MaterialTheme.colorScheme.onBackground,
+ nav = nav,
+ route = Route.UserSettings,
+ )
+
Spacer(modifier = Modifier.weight(1f))
IconRow(
@@ -584,11 +589,28 @@ fun NavigationRow(
tint: Color,
nav: INav,
route: Route,
+) {
+ NavigationRow(
+ title = title,
+ icons = listOf(icon),
+ tint = tint,
+ nav = nav,
+ route = route,
+ )
+}
+
+@Composable
+fun NavigationRow(
+ title: Int,
+ icons: List,
+ tint: Color,
+ nav: INav,
+ route: Route,
) {
IconRow(
- title,
- icon,
- tint,
+ title = title,
+ icons = icons,
+ tint = tint,
onClick = {
nav.closeDrawer()
nav.nav(route)
@@ -636,6 +658,21 @@ fun IconRow(
icon: ImageVector,
tint: Color,
onClick: () -> Unit,
+) {
+ IconRow(
+ title = title,
+ icons = listOf(icon),
+ tint = tint,
+ onClick = onClick,
+ )
+}
+
+@Composable
+fun IconRow(
+ title: Int,
+ icons: List,
+ tint: Color,
+ onClick: () -> Unit,
) {
Row(
modifier =
@@ -650,12 +687,15 @@ fun IconRow(
modifier = IconRowModifier,
verticalAlignment = Alignment.CenterVertically,
) {
- Icon(
- imageVector = icon,
- contentDescription = stringRes(title),
- modifier = Size22Modifier,
- tint = tint,
- )
+ icons.forEach { icon ->
+ Icon(
+ imageVector = icon,
+ contentDescription = stringRes(title),
+ modifier = Size22Modifier.padding(end = 4.dp),
+ tint = tint,
+ )
+ }
+
Text(
modifier = IconRowTextModifier,
text = stringRes(title),
@@ -709,8 +749,6 @@ fun BottomContent(
accountViewModel: AccountViewModel,
nav: INav,
) {
- val coroutineScope = rememberCoroutineScope()
-
// store the dialog open or close state
var dialogOpen by remember { mutableStateOf(false) }
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt
index 06d222e80..6f904d675 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt
@@ -49,6 +49,8 @@ sealed class Route {
@Serializable object Settings : Route()
+ @Serializable object UserSettings : Route()
+
@Serializable object EditProfile : Route()
@Serializable data class EditRelays(
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt
index b823834fe..0810a02ea 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt
@@ -882,6 +882,10 @@ class AccountViewModel(
fun dontTranslateFrom() = account.settings.syncedSettings.languages.dontTranslateFrom
+ fun dontTranslateFromFilteredBySpokenLanguages() = account.settings.syncedSettings.dontTranslateFromFilteredBySpokenLanguages()
+
+ fun toggleDontTranslateFrom(languageCode: String) = account.toggleDontTranslateFrom(languageCode)
+
fun translateTo() = account.settings.syncedSettings.languages.translateTo
fun defaultZapType() = account.settings.syncedSettings.zaps.defaultZapType.value
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/PrecacheNewNotesProcessor.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/PrecacheNewNotesProcessor.kt
index b3a15cb0e..1418caa61 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/PrecacheNewNotesProcessor.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/PrecacheNewNotesProcessor.kt
@@ -24,7 +24,6 @@ import android.util.Log
import com.vitorpamplona.amethyst.Amethyst
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.LocalCache
-import com.vitorpamplona.amethyst.model.LocalCache.indexDraftAsRealEvent
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.quartz.experimental.edits.PrivateOutboxRelayListEvent
import com.vitorpamplona.quartz.nip01Core.core.Event
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt
index 896e468a1..b037e6d3b 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt
@@ -142,21 +142,21 @@ fun DiscoverScreen(
LongTextNoteEvent.KIND,
),
TabItem(
- R.string.discover_content,
+ R.string.discover_content_v2,
discoveryContentNIP89FeedContentState,
"DiscoverDiscoverContent",
ScrollStateKeys.DISCOVER_CONTENT,
AppDefinitionEvent.KIND,
),
TabItem(
- R.string.discover_live,
+ R.string.discover_live_v2,
discoveryLiveFeedContentState,
"DiscoverLive",
ScrollStateKeys.DISCOVER_LIVE,
LiveActivitiesEvent.KIND,
),
TabItem(
- R.string.discover_community,
+ R.string.discover_community_v2,
discoveryCommunityFeedContentState,
"DiscoverCommunity",
ScrollStateKeys.DISCOVER_COMMUNITY,
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/GeoHashPostScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/GeoHashPostScreen.kt
index 14bd8d82b..9d56277f2 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/GeoHashPostScreen.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/geohash/GeoHashPostScreen.kt
@@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.geohash
import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.input.TextFieldValue
import androidx.lifecycle.viewmodel.compose.viewModel
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/HashtagPostScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/HashtagPostScreen.kt
index 0a828d70c..fd0934ac3 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/HashtagPostScreen.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/hashtag/HashtagPostScreen.kt
@@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.hashtag
import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.input.TextFieldValue
import androidx.lifecycle.viewmodel.compose.viewModel
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt
index ad1c969fa..d32bf9456 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt
@@ -60,7 +60,7 @@ fun DeleteFromGalleryDialog(
) {
QuickActionAlertDialogOneButton(
title = stringRes(R.string.quick_action_request_deletion_gallery_title),
- textContent = stringRes(R.string.quick_action_request_deletion_gallery_alert_body),
+ textContent = stringRes(R.string.quick_action_request_deletion_gallery_alert_body_v2),
buttonIcon = Icons.Default.Delete,
buttonText = stringRes(R.string.quick_action_delete_dialog_btn),
onClickDoOnce = {
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt
index 131d971bd..5eb38c0aa 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt
@@ -119,12 +119,13 @@ fun getLanguageIndex(
sharedPreferencesViewModel: SharedPreferencesViewModel,
): Int {
val language = sharedPreferencesViewModel.sharedPrefs.language
- var languageIndex = -1
- if (language != null) {
- languageIndex = languageEntries.values.toTypedArray().indexOf(language)
- } else {
- languageIndex = languageEntries.values.toTypedArray().indexOf(Locale.current.toLanguageTag())
- }
+ var languageIndex: Int
+ languageIndex =
+ if (language != null) {
+ languageEntries.values.toTypedArray().indexOf(language)
+ } else {
+ languageEntries.values.toTypedArray().indexOf(Locale.current.toLanguageTag())
+ }
if (languageIndex == -1) {
languageIndex = languageEntries.values.toTypedArray().indexOf(Locale.current.language)
}
@@ -365,7 +366,7 @@ fun SettingsRow(
text = stringRes(description),
style = MaterialTheme.typography.bodySmall,
color = Color.Gray,
- maxLines = 2,
+ maxLines = 3,
overflow = TextOverflow.Ellipsis,
)
}
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt
new file mode 100644
index 000000000..9f57b1af5
--- /dev/null
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2025 Vitor Pamplona
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.vitorpamplona.amethyst.ui.screen.loggedIn.settings
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.verticalScroll
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Close
+import androidx.compose.material3.DropdownMenuItem
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.ExposedDropdownMenuBox
+import androidx.compose.material3.ExposedDropdownMenuDefaults
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MenuAnchorType
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import androidx.lifecycle.viewModelScope
+import com.vitorpamplona.amethyst.R
+import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
+import com.vitorpamplona.amethyst.ui.navigation.EmptyNav
+import com.vitorpamplona.amethyst.ui.navigation.INav
+import com.vitorpamplona.amethyst.ui.navigation.TopBarWithBackButton
+import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
+import com.vitorpamplona.amethyst.ui.screen.loggedIn.mockAccountViewModel
+import com.vitorpamplona.amethyst.ui.stringRes
+import com.vitorpamplona.amethyst.ui.theme.Size10dp
+import com.vitorpamplona.amethyst.ui.theme.Size20dp
+import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import java.util.Locale as JavaLocale
+
+@Preview(device = "spec:width=2160px,height=2340px,dpi=440")
+@Composable
+fun UserSettingsScreenPreview() {
+ val accountViewModel = mockAccountViewModel()
+ val nav = EmptyNav
+ ThemeComparisonRow {
+ UserSettingsScreen(accountViewModel, nav)
+ }
+}
+
+@Composable
+fun UserSettingsScreen(
+ accountViewModel: AccountViewModel,
+ nav: INav,
+) {
+ DisappearingScaffold(
+ isInvertedLayout = false,
+ topBar = {
+ TopBarWithBackButton(stringRes(id = R.string.user_preferences), nav::popBack)
+ },
+ accountViewModel = accountViewModel,
+ ) {
+ Column(Modifier.padding(it)) {
+ Column(
+ Modifier
+ .fillMaxSize()
+ .padding(top = Size10dp, start = Size20dp, end = Size20dp)
+ .verticalScroll(rememberScrollState()),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ DontTranslateFromSetting(accountViewModel)
+ }
+ }
+ }
+}
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun DontTranslateFromSetting(accountViewModel: AccountViewModel) {
+ var expanded by remember { mutableStateOf(false) }
+ val selectedLanguages = accountViewModel.dontTranslateFromFilteredBySpokenLanguages().toMutableSet()
+
+ Column {
+ SettingsRow(
+ name = R.string.dont_translate_from,
+ description = R.string.dont_translate_from_description,
+ ) {
+ ExposedDropdownMenuBox(
+ expanded = expanded,
+ onExpandedChange = { expanded = !expanded },
+ ) {
+ OutlinedTextField(
+ value = stringRes(R.string.quick_action_select),
+ onValueChange = {},
+ readOnly = true,
+ trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
+ modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryEditable),
+ )
+
+ ExposedDropdownMenu(
+ expanded = expanded,
+ onDismissRequest = { expanded = false },
+ ) {
+ selectedLanguages.forEach { languageCode ->
+ DropdownMenuItem(
+ text = { Text(text = JavaLocale.forLanguageTag(languageCode).displayName) },
+ onClick = {
+ accountViewModel.viewModelScope.launch(Dispatchers.IO) {
+ accountViewModel.toggleDontTranslateFrom(
+ languageCode,
+ )
+ }
+ selectedLanguages.remove(languageCode)
+ expanded = false
+ },
+ trailingIcon = {
+ Icon(
+ imageVector = Icons.Default.Close,
+ contentDescription = "Remove $languageCode",
+ tint = Color.Red,
+ modifier = Modifier.size(16.dp),
+ )
+ },
+ )
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/amethyst/src/main/res/values-ar-rSA/strings.xml b/amethyst/src/main/res/values-ar-rSA/strings.xml
index 6bbdc431d..20539cee1 100644
--- a/amethyst/src/main/res/values-ar-rSA/strings.xml
+++ b/amethyst/src/main/res/values-ar-rSA/strings.xml
@@ -274,7 +274,6 @@
الغاء المتابعة
متابعة
إزالته من المعرض
- إزالة هذه الوسيطة من المعرض.
طلب حذفها
سيطلب Amethyst حذف ملاحظتك من المرحلات المتصل بها حاليا، لا يوجد ضمان لحذفها من هذه المرحلات أو من المرحلات الأخرى التي ربما حفظت فيها.
حظر
@@ -476,7 +475,6 @@
تسجيل الخروج سوف يحذف معلوماتك من على الجهاز. تأكد من نسخ مفتاحك الخاص لتجنب فقدان الحساب. هل تريد ألاستمرار؟
العلامات المُتابعة
مرحلات
- مجتمع
االدردشات
المنشورات الموافق عليها
هذه المجموعة ليس لديها وصف أو قواعد.
diff --git a/amethyst/src/main/res/values-bn-rBD/strings.xml b/amethyst/src/main/res/values-bn-rBD/strings.xml
index 96b1f533e..267350401 100644
--- a/amethyst/src/main/res/values-bn-rBD/strings.xml
+++ b/amethyst/src/main/res/values-bn-rBD/strings.xml
@@ -417,8 +417,6 @@
লগ আউট করলে আপনার সমস্ত স্থানীয় তথ্য মুছে যাবে। অ্যাকাউন্ট সুরক্ষিত রাখতে আপনার ব্যক্তিগত চাবিটি নিরাপদে সংরক্ষিত আছে কিনা নিশ্চিত হোন। সামনে আগাতে চান?
অনুসৃত ট্যাগগুলি
রিলেগুলি
- লাইভ
- কম্যুনিটি
বার্তালাপগুলি
অনুমোদিত পোস্টগুলি
এই দলটির কোনো বিবরণ কিংবা নীতিমালা নেই। এগুলো যুক্ত করতে দলনেতার সাথে কথা বলুন
diff --git a/amethyst/src/main/res/values-cs-rCZ/strings.xml b/amethyst/src/main/res/values-cs-rCZ/strings.xml
index 80fa7a75d..d7f16e7f3 100644
--- a/amethyst/src/main/res/values-cs-rCZ/strings.xml
+++ b/amethyst/src/main/res/values-cs-rCZ/strings.xml
@@ -3,9 +3,9 @@
Nasměrujte na QR kód
Zobrazit QR kód
Profilový obrázek
- Profilový obrázek
+ Váš profilový obrázek
Skenovat QR kód
- Zobrazit přesto
+ Přesto zobrazit
Tento příspěvek byl skryt, protože zmiňuje vaše skryté uživatele nebo slova
Příspěvek byl označen jako nevhodný uživatelem
Příspěvek nenalezen
@@ -298,7 +298,7 @@
Přestat sledovat
Sledovat
Odstranit z galerie
- Odstraňte tato média z vaší galerie, můžete je přidat později
+ Odstranit toto médium z vaší galerie.
Požadavek na smazání
Amethyst požádá o smazání vaší poznámky ze spojek, ke kterým jste v současnosti připojeni. Není zaručeno, že vaše poznámka bude trvale smazána z těchto spojek nebo z dalších spojek, kde může být uložena.
Blokovat
@@ -559,10 +559,10 @@
Rele
Balíčky Sledování
Přečtené
- Algoritmy kanálu
+ Algoritmy kanálu
Trh
- Živě
- Komunita
+ Živé vysílání
+ Komunity
Chaty
Schválené příspěvky
Tato skupina nemá popis ani pravidla. Promluvte si s majitelem, aby je přidal/a.
@@ -614,6 +614,8 @@
Přidá Geohash vaší polohy do příspěvku. Veřejnost bude vědět, že se nacházíte do 5 km od aktuální polohy
Lokace-Exkluzívní příspěvek
Uvidí to pouze následovníci umístění. Tvoji obecní následovníci to neuvidí.
+ Hashtag-exkluzivní příspěvek
+ Uvidí to pouze následovníci hashtagu. Tvůj všeobecní následovníci to neuvidí.
Načítání umístění
Žádná lokace oprávnění
Přidat varování o citlivém obsahu před zobrazením vašeho obsahu. Toto je ideální pro obsah NSFW (nebezpečné pro práci) nebo obsah, který někteří lidé mohou považovat za urážlivý nebo znepokojující
@@ -816,6 +818,7 @@
Nové Shorts: obrázky nebo videa
Nová poznámka komunity
Nový produkt
+ Nový geoexkluzivní příspěvek
Otevřít všechny reakce pro tento příspěvek
Zavřít všechny reakce na tento příspěvek
Odpověď
@@ -968,4 +971,5 @@
Relé chatu
Relé, ke kterému se všichni uživatelé tohoto chatu připojují
Sdílet obrázek…
+ Vyhledávání hashtag: #%1$s
diff --git a/amethyst/src/main/res/values-cs/strings.xml b/amethyst/src/main/res/values-cs/strings.xml
index 02c89a154..fc85f6d27 100644
--- a/amethyst/src/main/res/values-cs/strings.xml
+++ b/amethyst/src/main/res/values-cs/strings.xml
@@ -286,7 +286,6 @@
Přestat sledovat
Sledovat
Odstranit z galerie
- Odstraňte tato média z vaší galerie, můžete je přidat později
Požadavek na smazání
Amethyst požádá o smazání vaší poznámky ze spojek, ke kterým jste v současnosti připojeni. Není zaručeno, že vaše poznámka bude trvale smazána z těchto spojek nebo z dalších spojek, kde může být uložena.
Blokovat
@@ -535,10 +534,7 @@
Odhlášení vymaže všechny vaše místní informace. Ujistěte se, že máte zálohované své privátní klíče, abyste se vyhnuli ztrátě účtu. Chcete pokračovat?
Sledované značky
Rele
- Objevování poznámek
Trh
- Živě
- Komunita
Chaty
Schválené příspěvky
Tato skupina nemá popis ani pravidla. Promluvte si s majitelem, aby je přidal/a.
diff --git a/amethyst/src/main/res/values-de-rDE/strings.xml b/amethyst/src/main/res/values-de-rDE/strings.xml
index 3249a1b03..6d5baf2b4 100644
--- a/amethyst/src/main/res/values-de-rDE/strings.xml
+++ b/amethyst/src/main/res/values-de-rDE/strings.xml
@@ -302,7 +302,7 @@ anz der Bedingungen ist erforderlich
Entfolgen
Folgen
Aus Galerie löschen
- Entferne diese Medien von deiner Galerie, du kannst sie später hinzufügen
+ Entferne dieses Medium von deiner Galerie.
Löschung anfordern
Amethyst wird beantragen, dass Ihre Notiz von den Relays gelöscht wird, mit denen Sie derzeit verbunden sind. Es gibt keine Garantie dafür, dass Ihre Notiz dauerhaft von diesen Relays oder anderen Relays, in denen sie gespeichert sein kann, gelöscht wird.
Blockieren
@@ -564,10 +564,10 @@ anz der Bedingungen ist erforderlich
Relais
Folge Paketen
Lesungen
- Notizen Entdeckung
+ Feedalgorithmen
Marktplatz
- Live
- Gemeinschaft
+ Live-Streams
+ Gemeinschaften
Plaudern
Genehmigte Beiträge
Diese Gruppe hat keine Beschreibung oder Regeln. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.
@@ -619,6 +619,8 @@ anz der Bedingungen ist erforderlich
Fügt dem Beitrag einen Geohash Ihres Standorts hinzu. Die Öffentlichkeit wird wissen, dass Sie sich innerhalb von 5 km (3 mi) vom aktuellen Standort befinden
Standort-exklusiver Beitrag
Nur Anhänger des Ortes werden es sehen. Deine allgemeinen Anhänger werden es nicht sehen.
+ Hashtag-exklusive Beitrag
+ Nur die Anhänger des Hashtags werden ihn sehen. Deine allgemeinen Follower werden ihn nicht sehen.
Standort wird geladen
Keine Standortberechtigungen
Fügt eine Warnung für sensiblen Inhalt hinzu, bevor Ihr Inhalt angezeigt wird. Dies ist ideal für NSFW-Inhalte (nicht sicher für die Arbeit) oder Inhalte, die manche Menschen als anstößig oder verstörend empfinden könnten
@@ -821,6 +823,7 @@ anz der Bedingungen ist erforderlich
Neue Kurzfilme: Bilder oder Videos
Neue Community-Notiz
Neues Produkt
+ Neuer Geo-Exklusiver Beitrag
Alle Reaktionen auf diesen Beitrag öffnen
Alle Reaktionen auf diesen Beitrag schließen
Antworten
@@ -973,4 +976,5 @@ anz der Bedingungen ist erforderlich
Chat-Relais
Das Relais, mit dem sich alle Benutzer dieses Chats verbinden
Bild teilen…
+ Suche Hashtag: #%1$s
diff --git a/amethyst/src/main/res/values-de/strings.xml b/amethyst/src/main/res/values-de/strings.xml
index 2c0c4ed3b..cabd2af74 100644
--- a/amethyst/src/main/res/values-de/strings.xml
+++ b/amethyst/src/main/res/values-de/strings.xml
@@ -290,7 +290,6 @@ anz der Bedingungen ist erforderlich
Entfolgen
Folgen
Aus Galerie löschen
- Entferne diese Medien von deiner Galerie, du kannst sie später hinzufügen
Löschung anfordern
Amethyst wird beantragen, dass Ihre Notiz von den Relays gelöscht wird, mit denen Sie derzeit verbunden sind. Es gibt keine Garantie dafür, dass Ihre Notiz dauerhaft von diesen Relays oder anderen Relays, in denen sie gespeichert sein kann, gelöscht wird.
Blockieren
@@ -540,10 +539,7 @@ anz der Bedingungen ist erforderlich
Das Abmelden löscht alle Ihre lokalen Informationen. Stellen Sie sicher, dass Sie Ihre privaten Schlüssel gesichert haben, um einen Kontoverlust zu vermeiden. Möchten Sie fortfahren?
Gefolgte Tags
Relais
- Notizen Entdeckung
Marktplatz
- Live
- Gemeinschaft
Plaudern
Genehmigte Beiträge
Diese Gruppe hat keine Beschreibung oder Regeln. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.
diff --git a/amethyst/src/main/res/values-el-rGR/strings.xml b/amethyst/src/main/res/values-el-rGR/strings.xml
index 73b2a3e0c..9b6fa49fc 100644
--- a/amethyst/src/main/res/values-el-rGR/strings.xml
+++ b/amethyst/src/main/res/values-el-rGR/strings.xml
@@ -380,8 +380,6 @@
Η Αποσύνδεση διαγράφει όλες τις τοπικές πληροφορίες σας. Βεβαιωθείτε ότι έχετε Αντίγραφο Ασφαλείας από το \"Μυστικό Κλειδί\" σας για να αποφύγετε απώλεια του λογαριασμού σας. Θέλετε να συνεχίσετε?
Ετικέτες που Ακολουθώ
Διαμοιραστές
- Ζωντανά
- Κοινότητα
Συνομιλίες
Εγκεκριμένες Δημοσιεύσεις
Αυτή η ομάδα δεν έχει περιγραφή ή κανόνες. Μιλήστε με τον ιδιοκτήτη για να προσθέσετε μία
diff --git a/amethyst/src/main/res/values-eo-rUY/strings.xml b/amethyst/src/main/res/values-eo-rUY/strings.xml
index e2050b9bf..3fce4d205 100644
--- a/amethyst/src/main/res/values-eo-rUY/strings.xml
+++ b/amethyst/src/main/res/values-eo-rUY/strings.xml
@@ -379,8 +379,6 @@
Elsaluti forigas ĉiujn viajn lokajn datumojn. Certigi ke vi sekurkopis vian privatan ŝlosilon por eviti perdi vian konton. Ĉu vi volas daŭrigi?
Sekvitaj Etikedoj
Plusendiloj
- Vive
- Komunumo
Babilejoj
Aprobitaj Afiŝoj
Ĉi tiu grupo ne havas priskribon aŭ regulojn. Parolu kun la posedanto por aldoni
diff --git a/amethyst/src/main/res/values-eo/strings.xml b/amethyst/src/main/res/values-eo/strings.xml
index 398deb462..eed86b997 100644
--- a/amethyst/src/main/res/values-eo/strings.xml
+++ b/amethyst/src/main/res/values-eo/strings.xml
@@ -379,8 +379,6 @@
Elsaluti forigas ĉiujn viajn lokajn datumojn. Certigi ke vi sekurkopis vian privatan ŝlosilon por eviti perdi vian konton. Ĉu vi volas daŭrigi?
Sekvitaj Etikedoj
Plusendiloj
- Vive
- Komunumo
Babilejoj
Aprobitaj Afiŝoj
Ĉi tiu grupo ne havas priskribon aŭ regulojn. Parolu kun la posedanto por aldoni
diff --git a/amethyst/src/main/res/values-es-rES/strings.xml b/amethyst/src/main/res/values-es-rES/strings.xml
index 583235fd7..c0f9ae00b 100644
--- a/amethyst/src/main/res/values-es-rES/strings.xml
+++ b/amethyst/src/main/res/values-es-rES/strings.xml
@@ -290,7 +290,6 @@
Dejar de seguir
Seguir
Eliminar de la galería
- Elimina este contenido multimedia de la galería, aunque puedes volver a agregarlo luego.
Solicitar eliminación
Amethyst solicitará que se elimine su nota de los relays a los que está conectado actualmente. No hay garantía de que su nota se elimine permanentemente de esos relays, o de otros relays donde pueda almacenarse.
Bloquear
@@ -540,10 +539,7 @@
Al cerrar la sesión se borra toda tu información local. Asegúrate de tener una copia de seguridad de tus claves privadas para que no pierdas la cuenta. ¿Quieres continuar?
Etiquetas seguidas
Relés
- Descubrimiento de notas
Mercado
- En vivo
- Comunidad
Chats
Publicaciones aprobadas
Este grupo no tiene descripción ni reglas. Habla con el propietario para agregar una.
diff --git a/amethyst/src/main/res/values-es-rMX/strings.xml b/amethyst/src/main/res/values-es-rMX/strings.xml
index badffaeeb..8498d3866 100644
--- a/amethyst/src/main/res/values-es-rMX/strings.xml
+++ b/amethyst/src/main/res/values-es-rMX/strings.xml
@@ -290,7 +290,6 @@
Dejar de seguir
Seguir
Eliminar de la galería
- Elimina este contenido multimedia de la galería, aunque puedes volver a agregarlo luego.
Solicitar eliminación
Amethyst solicitará que se elimine la nota de los relés con los que tienes conexión actualmente. No hay garantía de que la nota se elimine permanentemente de esos relés o de otros donde pueda estar guardada.
Bloquear
@@ -540,10 +539,7 @@
Al cerrar la sesión se borra toda tu información local. Asegúrate de tener una copia de seguridad de tus claves privadas para que no pierdas la cuenta. ¿Quieres continuar?
Etiquetas seguidas
Relés
- Descubrimiento de notas
Mercado
- En vivo
- Comunidad
Chats
Publicaciones aprobadas
Este grupo no tiene descripción ni reglas. Habla con el propietario para agregar una.
diff --git a/amethyst/src/main/res/values-es-rUS/strings.xml b/amethyst/src/main/res/values-es-rUS/strings.xml
index 4e111d4cb..e28620633 100644
--- a/amethyst/src/main/res/values-es-rUS/strings.xml
+++ b/amethyst/src/main/res/values-es-rUS/strings.xml
@@ -290,7 +290,6 @@
Dejar de seguir
Seguir
Eliminar de la galería
- Elimina este contenido multimedia de la galería, aunque puedes volver a agregarlo luego.
Solicitar eliminación
Amethyst solicitará que se elimine la nota de los relés con los que tienes conexión actualmente. No hay garantía de que la nota se elimine permanentemente de esos relés o de otros donde pueda estar guardada.
Bloquear
@@ -540,10 +539,7 @@
Al cerrar la sesión se borra toda tu información local. Asegúrate de tener una copia de seguridad de tus claves privadas para que no pierdas la cuenta. ¿Quieres continuar?
Etiquetas seguidas
Relés
- Descubrimiento de notas
Mercado
- En vivo
- Comunidad
Chats
Publicaciones aprobadas
Este grupo no tiene descripción ni reglas. Habla con el propietario para agregar una.
diff --git a/amethyst/src/main/res/values-fa-rIR/strings.xml b/amethyst/src/main/res/values-fa-rIR/strings.xml
index 0f4165d8c..7ee325eb6 100644
--- a/amethyst/src/main/res/values-fa-rIR/strings.xml
+++ b/amethyst/src/main/res/values-fa-rIR/strings.xml
@@ -288,7 +288,6 @@
دنبال نکردن
دنبال کردن
حذف از گالری
- حذف این رسانه از گالری، بعدا می توانید آن را بخوانید
درخواست حذف
آماتیست درخواست می کند که یادداشت شما از رله هایی که درحال حاضر به آن متصل هستید حذف شود. هیچ تضمینی نیست که یادداشت شما برای همیشه از آن رله ها یا از رله های دیگری که ممکن است در آنها ذخیره شده باشد حذف خواهد شد..
بلاک
@@ -538,10 +537,7 @@
خروج همه اطلاعات محلی شما را پاک می کند. مطمئن شوید که کلید خصوصی خود را بکاپ گرفته و ذخیره کرده اید تا حساب کاربری تان را از دست ندهید. می خواهید ادامه دهید؟
برچسب های دنبال شده
رله ها
- اکتشاف یادداشت
بازار
- زنده
- انجمن
گپ
یادداشت های تایید شده
این گروه هیچ توصیف و قوانینی ندارد. با مالک گروه برای افزودن آن صحبت کنید.
diff --git a/amethyst/src/main/res/values-fa/strings.xml b/amethyst/src/main/res/values-fa/strings.xml
index db3004cc9..0c2e5174b 100644
--- a/amethyst/src/main/res/values-fa/strings.xml
+++ b/amethyst/src/main/res/values-fa/strings.xml
@@ -270,7 +270,6 @@
دنبال نکردن
دنبال کردن
حذف از گالری
- حذف این رسانه از گالری، بعدا می توانید آن را بخوانید
درخواست حذف
آماتیست درخواست می کند که یادداشت شما از رله هایی که درحال حاضر به آن متصل هستید حذف شود. هیچ تضمینی نیست که یادداشت شما برای همیشه از آن رله ها یا از رله های دیگری که ممکن است در آنها ذخیره شده باشد حذف خواهد شد..
بلاک
@@ -519,10 +518,7 @@
خروج همه اطلاعات محلی شما را پاک می کند. مطمئن شوید که کلید خصوصی خود را بکاپ گرفته و ذخیره کرده اید تا حساب کاربری تان را از دست ندهید. می خواهید ادامه دهید؟
برچسب های دنبال شده
رله ها
- اکتشاف یادداشت
بازار
- زنده
- انجمن
گپ
یادداشت های تایید شده
این گروه هیچ توصیف و قوانینی ندارد. با مالک گروه برای افزودن آن صحبت کنید.
diff --git a/amethyst/src/main/res/values-fi-rFI/strings.xml b/amethyst/src/main/res/values-fi-rFI/strings.xml
index 5e3cde15c..72ed45827 100644
--- a/amethyst/src/main/res/values-fi-rFI/strings.xml
+++ b/amethyst/src/main/res/values-fi-rFI/strings.xml
@@ -391,7 +391,6 @@
Seuratut tagit
Releet
Markkinapaikka
- Yhteisö
Keskustelut
Hyväksytyt viestit
Tällä ryhmällä ei ole kuvausta tai sääntöjä. Keskustele omistajan kanssa sen lisäämiseksi
diff --git a/amethyst/src/main/res/values-fr-rFR/strings.xml b/amethyst/src/main/res/values-fr-rFR/strings.xml
index 56dcb375f..9487c1c91 100644
--- a/amethyst/src/main/res/values-fr-rFR/strings.xml
+++ b/amethyst/src/main/res/values-fr-rFR/strings.xml
@@ -290,7 +290,6 @@
Ne plus suivre
Suivre
Supprimer de la galerie
- Retirer ce média de votre galerie, vous pourrez le réajouter plus tard
Demande de Suppression
Amethyst demandera que votre note soit supprimée des relais auxquels vous êtes actuellement connecté. Il n\'y a aucune garantie que votre note sera définitivement supprimée de ces relais, ou d\'autres relais où elle peut être stockée.
Bloquer
@@ -540,10 +539,7 @@
Se déconnecter supprime toutes vos informations locales. Assurez-vous d\'avoir vos clés privées sauvegardées pour éviter de perdre votre compte. Voulez-vous continuer ?
Tags suivis
Relais
- Découverte de notes
Place de Marché
- Direct
- Communauté
Salons
Messages approuvés
Ce groupe n\'a pas de description ou de règles. Parlez au propriétaire pour en ajouter une
diff --git a/amethyst/src/main/res/values-fr/strings.xml b/amethyst/src/main/res/values-fr/strings.xml
index b86bc0499..bb35fd681 100644
--- a/amethyst/src/main/res/values-fr/strings.xml
+++ b/amethyst/src/main/res/values-fr/strings.xml
@@ -282,7 +282,6 @@
Ne plus suivre
Suivre
Supprimer de la galerie
- Retirer ce média de votre galerie, vous pourrez le réajouter plus tard
Demande de Suppression
Amethyst demandera que votre note soit supprimée des relais auxquels vous êtes actuellement connecté. Il n\'y a aucune garantie que votre note sera définitivement supprimée de ces relais, ou d\'autres relais où elle peut être stockée.
Bloquer
@@ -531,10 +530,7 @@
Se déconnecter supprime toutes vos informations locales. Assurez-vous d\'avoir vos clés privées sauvegardées pour éviter de perdre votre compte. Voulez-vous continuer ?
Tags suivis
Relais
- Découverte de notes
Place de Marché
- Direct
- Communauté
Salons
Messages approuvés
Ce groupe n\'a pas de description ou de règles. Parlez au propriétaire pour en ajouter une
diff --git a/amethyst/src/main/res/values-hi-rIN/strings.xml b/amethyst/src/main/res/values-hi-rIN/strings.xml
index ce10c57e4..06e0fa87e 100644
--- a/amethyst/src/main/res/values-hi-rIN/strings.xml
+++ b/amethyst/src/main/res/values-hi-rIN/strings.xml
@@ -300,7 +300,7 @@
अनुचरण ना करें
अनुचरण करें
चित्रालय से मिटाएँ
- इस अभिलेख को चित्रालय से हटाएँ। तत्पश्चात कभी भी आप इसे पुनः जोड सकते हैं
+ इस अभिलेख को आपके चित्रालय से हटाएँ।
हटाने की याचना
अमेथिस्ट अनुरोध करेगा कि आपका टीका मिटा दिया जाए उन पुनःप्रसारकों से जिनके साथ आप अब जुडे हुए हैं। कोई आश्वासन नहीं कि आपका टीका सर्वदा के लिए मिटा दिया जाएगा उन पुनःप्रसारकों से, अथवा अन्य पुनःप्रसारकों में से जहाँ यह रखा गया हो।
बाधित करें
@@ -561,10 +561,10 @@
पुनःप्रसारक
अनुचरण पोटलियाँ
पठितव्य
- लेख आविष्करण
+ सूचनावली विधियाँ
पण्यक्षेत्र
- तत्क्षणप्रसार
- समुदाय
+ तत्क्षणप्रसार
+ समुदाय
चर्चाएँ
अनुमति प्राप्त पत्र
इस झुण्ड का कोई विवरण नहीं नियम नहीं। इसके अधिपति से बात करें इनहें जोडने के लिए
@@ -616,6 +616,8 @@
आपका भूगोलिक स्थान विभेदक जोडता है पत्र में। जनता जान जाएगी कि आप वर्तमान स्थान से ५ कि॰मे॰ (३ मी॰) की दूरी के अन्दर हैं
स्थल विशेष पत्र
स्थल के अनुचर ही देखेंगे। आपके सामान्य अनुचर नहीं देखेंगे।
+ विषयसूचक विशेष पत्र
+ केवल विषयसूचक के अनुचर इसे देखेंगे। आपके सामान्य अनुचर नहीं देखेंगे।
स्थान प्राप्त किया जा रहा है
स्थान प्राप्त करने की अनुमति नहीं
आपके विषयवस्तु दिखाने से पूर्व संवेदनशील विषयवस्तु चेतावनी जोडता है। यह आदर्श है किसी कार्यालय अनुचित विषयवस्तु के लिए अथवा जो कुछ लोगों के लिए आपत्तिजनक अथवा व्याकुल करनेवाला लग सकता है
@@ -818,6 +820,7 @@
नये छोटे : चित्र अथवा चलचित्र
नया सामुदायिक टीका
नया उत्पाद
+ नया स्थान विशेष पत्र
इस पत्र प्रकाशन के सभी प्रतिक्रियाओं को खोलें
इस पत्र प्रकाशन के सभी प्रतिक्रियाओं को अवरोधित करें
उत्तर
@@ -970,4 +973,5 @@
चर्चा पुनःप्रसारक
वह पुनःप्रसारक जिससे इस चर्चा के सभी उपयोगकर्ता जुडते हैं
चित्र बाँटें…
+ विषयसूचक खोज : #%1$s
diff --git a/amethyst/src/main/res/values-hu-rHU/strings.xml b/amethyst/src/main/res/values-hu-rHU/strings.xml
index b7e533e7a..7b1a5d09a 100644
--- a/amethyst/src/main/res/values-hu-rHU/strings.xml
+++ b/amethyst/src/main/res/values-hu-rHU/strings.xml
@@ -300,7 +300,7 @@
Követés megszüntetése
Követés
Törlés a galériából
- Távolítsa el ezt a médiát a galériából, később újra hozzáadhatja
+ Távolítsa el ezt a médiát a galériából.
Törlés kérése
Az Amethyst kérni fogja, hogy a bejegyzését töröljék azokról az átjátszókról, amelyekhez jelenleg csatlakozik. Nem garantálható, hogy a bejegyzése véglegesen törlődik ezekről az átjátszókról, vagy más átjátszókról, ahol esetleg tárolva van.
Letiltás
@@ -496,9 +496,18 @@
Az érzékeny tartalmat mindig rejtse el
Az érzékeny tartalmat mindig jelenítse meg
A tartalomra vonatkozó figyelmeztetéseket mindig jelenítse meg
+ Elrejtés
+ Megjelenítés
+ Figyelmeztetés
Ajánlott alkalmazások:
Az idegenektől érkező kéretlen tartalmak szűrése
Figyelmeztessen amikor a bejegyzések jelentve vannak azok által akiket követek
+ Kéretlen tartalomszűrő
+ Elrejti az ismeretlen felhasználók hozzászólásait, amelyek pontosan ugyanazok voltak 5 vagy több alkalommal
+ Figyelmeztetés a jelentésekre
+ Figyelmeztető üzenet jelenik meg, ha a bejegyzéseket az Ön által követett felhasználók 5 vagy annál többször jelentették
+ Érzékeny tartalom megjelenítése
+ Figyelmeztető üzenet jelenik meg, ha a bejegyzés szerzője érzékenynek jelölte a hozzászólást
Új reakció-szimbólum
A felhasználó számára nincsenek előre kiválasztott reakciótípusok. Hosszan nyomja meg a szív gombot a módosításhoz
Zap-gyűjtés
@@ -552,10 +561,10 @@
Átjátszók
Követett csomagok
Olvasmányok
- Bejegyzések felfedezése
+ Hírforrás-algoritmus
Piac
- Élő
- Közösség
+ Élő közvetítések
+ Közösségek
Csevegések
Elfogadott bejegyzések
Ennek a csoportnak nincs leírása vagy szabályai. Kérje meg a tulajdonosát, hogy adjon hozzá egyet
@@ -607,6 +616,8 @@
Hozzáadja a helyének geohash-sét a bejegyzéséhez. A nyilvánosság tudni fogja, hogy a jelenlegi helytől 5 km-en (3 mi) belül tertózkodik
Helyszín-alapú bejegyzés
Csak a helyszín követői láthatják. Az általános követők nem fogják látni.
+ Hashtag-exkluzív bejegyzés
+ Csak a hashtag követői fogják látni, de az Ön általános követői viszont nem.
Helyszín betöltése…
A helyszín-meghatározás nincs engedélyezve
Hozzáadja az érzékeny tartalomra vonatkozó figyelmeztetést a tartalom megjelenítése előtt. Ez ideális bármilyen NSFW tartalom vagy olyan tartalom esetén, amelyet egyesek sértőnek vagy zavarónak találhatnak
@@ -809,6 +820,7 @@
Új rövidek: képek vagy videók
Új közösségi bejegyzés
Új termék
+ Új hely-exkluzív bejegyzés
A bejegyzésre adott összes reakció kibontása
A bejegyzésre adott összes reakció összecsukása
Válasz
@@ -960,4 +972,6 @@
Privát üzenet
Csevegési átjátszó
Az átjátszó, amelyhez a csevegés összes felhasználója csatlakozik
+ Kép megosztása…
+ Hashtag keresése: #%1$s
diff --git a/amethyst/src/main/res/values-hu/strings.xml b/amethyst/src/main/res/values-hu/strings.xml
index 30bfdcb4c..039cf9427 100644
--- a/amethyst/src/main/res/values-hu/strings.xml
+++ b/amethyst/src/main/res/values-hu/strings.xml
@@ -288,7 +288,6 @@
Követés megszüntetése
Követés
Törlés a galériából
- Távolítsa el ezt a médiát a galériából, később újra hozzáadhatja
Törlés kérése
Az Amethyst kérni fogja, hogy a bejegyzését töröljék azokról az átjátszókról, amelyekhez jelenleg csatlakozik. Nem garantálható, hogy a bejegyzése véglegesen törlődik ezekről az átjátszókról, vagy más átjátszókról, ahol esetleg tárolva van.
Letiltás
@@ -537,10 +536,7 @@
A kijelentkezéssel törlődik az összes helyben tárolt adat. Győződjön meg arról, hogy a privát kulcsokról biztonsági mentést készített, hogy elkerülje fiókja elvesztését. Szeretné folytatni?
Követett címke
Átjátszók
- Bejegyzések felfedezése
Piac
- Élő
- Közösség
Csevegések
Elfogadott bejegyzések
Ennek a csoportnak nincs leírása vagy szabályai. Kérje meg a tulajdonosát, hogy adjon hozzá egyet
diff --git a/amethyst/src/main/res/values-in-rID/strings.xml b/amethyst/src/main/res/values-in-rID/strings.xml
index 20b6d61bd..422033638 100644
--- a/amethyst/src/main/res/values-in-rID/strings.xml
+++ b/amethyst/src/main/res/values-in-rID/strings.xml
@@ -377,8 +377,6 @@
Keluar akan menghapus semua informasi yang disimpan secara lokal.
Pastikan kunci pribadi Anda telah simpan untuk menghindari kehilangan akun Anda. Apakah Anda ingin melanjutkan?
Tags yang Diikuti
- Langsung
- Komunitas
Obrolan
Post yang disetujui
Grup ini tidak memiliki deskripsi atau peraturan.
diff --git a/amethyst/src/main/res/values-in/strings.xml b/amethyst/src/main/res/values-in/strings.xml
index 188b8672a..00447eb60 100644
--- a/amethyst/src/main/res/values-in/strings.xml
+++ b/amethyst/src/main/res/values-in/strings.xml
@@ -375,8 +375,6 @@
Keluar akan menghapus semua informasi lokal Anda. Pastikan kunci pribadi Anda dicadangkan untuk menghindari kehilangan akun Anda. Apakah Anda ingin melanjutkan?
Tags yg diikuti
Relai
- Siaran Langsung
- Komunitas
Percakapan
Kiriman yg disetujui
Grup ini tidak memiliki deskripsi atau aturan. Bicaralah dengan pemiliknya untuk menambahkannya
diff --git a/amethyst/src/main/res/values-it-rIT/strings.xml b/amethyst/src/main/res/values-it-rIT/strings.xml
index 60391c7f7..b79e7df3c 100644
--- a/amethyst/src/main/res/values-it-rIT/strings.xml
+++ b/amethyst/src/main/res/values-it-rIT/strings.xml
@@ -361,8 +361,6 @@
La disconnessione elimina tutte le tue informazioni locali. Assicurati di avere le tue chiavi private salvate per evitare di perdere il tuo account. Vuoi continuare?
Tag Seguiti
Relè
- In diretta
- Comunità
Chat
Post approvati
Questo gruppo non ha una descrizione o regole. Parla con il proprietario per aggiungerne una
diff --git a/amethyst/src/main/res/values-ja-rJP/strings.xml b/amethyst/src/main/res/values-ja-rJP/strings.xml
index ed0a8fe01..21a5107d2 100644
--- a/amethyst/src/main/res/values-ja-rJP/strings.xml
+++ b/amethyst/src/main/res/values-ja-rJP/strings.xml
@@ -370,8 +370,6 @@
ログアウトするとローカル情報はすべて削除されます。アカウントを紛失しないよう、秘密鍵のバックアップがあることを確認してください。続行しますか?
フォロー済みタグ
リレー
- ライブ
- コミュニティ
チャット
承認済みの投稿
このグループには説明またはルールがありません。追加するには管理者に相談してください
diff --git a/amethyst/src/main/res/values-ja/strings.xml b/amethyst/src/main/res/values-ja/strings.xml
index ed0a8fe01..21a5107d2 100644
--- a/amethyst/src/main/res/values-ja/strings.xml
+++ b/amethyst/src/main/res/values-ja/strings.xml
@@ -370,8 +370,6 @@
ログアウトするとローカル情報はすべて削除されます。アカウントを紛失しないよう、秘密鍵のバックアップがあることを確認してください。続行しますか?
フォロー済みタグ
リレー
- ライブ
- コミュニティ
チャット
承認済みの投稿
このグループには説明またはルールがありません。追加するには管理者に相談してください
diff --git a/amethyst/src/main/res/values-lv-rLV/strings.xml b/amethyst/src/main/res/values-lv-rLV/strings.xml
new file mode 100644
index 000000000..107dafa9f
--- /dev/null
+++ b/amethyst/src/main/res/values-lv-rLV/strings.xml
@@ -0,0 +1,118 @@
+
+
+ Profila attēls
+ Jūsu profila attēls
+ 👀
+ Kanāla attēls
+ Grupas attēls
+ Nezināms
+ Kopēt tekstu
+ Bloķēt / Sūdzēties
+
+ Skatījumi
+ rediģēts
+ Pievienot
+ " un "
+ " Seko"
+ " Sekotāji"
+ "%1$s seko"
+ "%1$s sekotāji"
+ Profils
+ Maksāt
+ 😎
+ Jauns kanāls
+ Kanāla nosaukums
+ Attēla URL
+ Apraksts
+ Saglabāt
+ Izveidot
+ Atcelt
+ Baiti
+ Kļūdas
+ Par mani
+ LN adrese
+ Augšupielādēt attēlu
+ Augšupielādē…
+ Bloķētie lietotāji
+ Piezīmes
+ Atbildes
+ Galerija
+ Sekot
+ Atbloķēt
+ Atbloķēt lietotāju
+ Lietotnes logo
+ Rādīt paroli
+ Slēpt paroli
+ Izveidot kontu
+ Izveidot jaunu kontu
+ Ģenerēt jaunu atslēgu
+ Atsvaidzināt
+ aprakstu uz
+ un attēlu uz
+ Kanāls izveidots
+ Noņemt
+ Automātiski
+ uz
+ Vienmēr tulkot %1$s
+ Nostr adrese
+ nekad
+ tagad
+ Kļūda
+ Pievienot jaunu kontu
+ Konti
+ Atlasīt kontu
+ Pievienot jaunu kontu
+ Kopēt tekstu
+ Dzēst
+ Sekot
+ @string/block_only
+ Dzēst
+ @string/block_only
+ Dzēst
+
+ Iemesls
+ Bloķēt un sūdzēties
+ Bloķēt
+ Grāmatzīmes
+ Aizvērt pēc
+ dienām
+ Pievienot attēlu
+ Pievienot video
+ Pievienot dokumentu
+ Augšupielādē
+ Lejupielādē
+ Kļūda
+ Tor iestatījumi
+ Jā
+ Nē
+ Noklusējuma ports ir 9050
+ Nederīgs porta numurs
+ Versija
+ Valstis
+ Valodas
+ Birkas
+ Valoda
+ Motīvs
+ Nevar augšupielādēt
+ Noteikumi
+ Labi
+ Meklēt
+ Profila attēls
+ Kategorija
+ Apģērbs
+ Elektronika
+ Grāmatas
+ Mājdzīvnieki
+ Sports
+ Māksla
+ Ēdiens
+ Augšupielādes kļūda: %1$s
+ Neizdevās augšupielādēt: %1$s
+ Meklēt
+ Paziņojumi
+ Paldies!
+ @string/torrent_download
+ Torrenta datne
+ Lejupielādēt
+ Nav uzstādītas torrent lietotnes, kas atvērtu un lejupielādētu datni.
+
diff --git a/amethyst/src/main/res/values-nl-rNL/strings.xml b/amethyst/src/main/res/values-nl-rNL/strings.xml
index af7f64e94..24b0d6576 100644
--- a/amethyst/src/main/res/values-nl-rNL/strings.xml
+++ b/amethyst/src/main/res/values-nl-rNL/strings.xml
@@ -290,7 +290,6 @@
Ontvolgen
Volgen
Verwijderen uit galerij
- Verwijder deze media uit je galerij, je kunt het terug zien in je feed.
Verzoek om te verwijderen
Amethyst zal vragen om uw note te verwijderen van de relays waarmee u momenteel verbonden bent. Er is geen garantie dat uw note permanent wordt verwijderd van deze relays, of van andere relays waar het kan worden opgeslagen.
Blokkeren
@@ -540,10 +539,7 @@
Uitloggen verwijdert al je lokale informatie. Zorg ervoor dat je een back-up hebt van je geheime sleutels om te voorkomen dat je je account kwijtraakt. Wilt u doorgaan?
Gevolgde tags
Relays
- Note ontdekking
Marktplaats
- Live
- Community
Chats
Goedgekeurde berichten
Deze groep heeft geen beschrijving of regels. Praat met de eigenaar om er een toe te voegen
diff --git a/amethyst/src/main/res/values-nl/strings.xml b/amethyst/src/main/res/values-nl/strings.xml
index 7e7b67332..e68d33635 100644
--- a/amethyst/src/main/res/values-nl/strings.xml
+++ b/amethyst/src/main/res/values-nl/strings.xml
@@ -281,7 +281,6 @@
Ontvolgen
Volgen
Verwijderen uit galerij
- Verwijder deze media uit je galerij, je kunt het terug zien in je feed.
Verzoek om te verwijderen
Amethyst zal vragen om uw note te verwijderen van de relays waarmee u momenteel verbonden bent. Er is geen garantie dat uw note permanent wordt verwijderd van deze relays, of van andere relays waar het kan worden opgeslagen.
Blokkeren
@@ -530,10 +529,7 @@
Uitloggen verwijdert al je lokale informatie. Zorg ervoor dat je een back-up hebt van je geheime sleutels om te voorkomen dat je je account kwijtraakt. Wilt u doorgaan?
Gevolgde tags
Relays
- Note ontdekking
Marktplaats
- Live
- Community
Chats
Goedgekeurde berichten
Deze groep heeft geen beschrijving of regels. Praat met de eigenaar om er een toe te voegen
diff --git a/amethyst/src/main/res/values-pl-rPL/strings.xml b/amethyst/src/main/res/values-pl-rPL/strings.xml
index b49bdfadc..25aafefe8 100644
--- a/amethyst/src/main/res/values-pl-rPL/strings.xml
+++ b/amethyst/src/main/res/values-pl-rPL/strings.xml
@@ -297,7 +297,7 @@
Porzuć
Śledź
Usuń z Galerii
- Usuń te media z galerii, możesz dodać je ponownie później
+ Usuń ten plik z Galerii.
Poproś o usunięcie
Amethyst poprosi o usunięcie Twojego wpisu z aktualnie podłączonych transmiterów. Nie ma gwarancji, że Twój wpis zostanie trwale usunięty z tych lub z innych transmiterów, gdzie może być przechowywany.
Zablokuj
@@ -556,10 +556,12 @@
Wylogowanie usuwa wszystkie informacje lokalne. Upewnij się, że masz kopię zapasową kluczy prywatnych, aby uniknąć utraty konta. Czy chcesz kontynuować?
Obserwowane tagi
Transmitery
- Kategorie Wpisów
+ Obserwowani
+ Wyświetlenia
+ Algorytmy kanału
Market
- Na żywo
- Społeczności
+ Transmisja na żywo
+ Społeczności
Czaty
Zatwierdzone posty
Ta grupa nie ma opisu ani reguł. Porozmawiaj z właścicielem, aby je dodać
@@ -611,6 +613,8 @@
Dodaje Geohash twojej lokalizacji do wpisu. Użytkownicy będą wiedzieli, że jesteś mniej niż 5 km od bieżącej lokalizacji
Post ekskluzywny dla lokalizacji
Tylko obserwatorzy z twojej lokalizacji zobaczą to. Twoi ogólni obserwatorzy tego nie zobaczą.
+ Wpis hashtagowy
+ Tylko obserwujący ten hashtag zobaczą go. Twoi ogólni obserwujący go nie zobaczą.
Pobieranie lokalizacji
Brak dostępu do lokalizacji
Dodaje ostrzeżenie o wrażliwych treściach przed wyświetleniem treści. Jest to idealne dla dowolnych treści NSFW lub treści, które niektóre osoby mogą uznać za obraźliwe lub przeszkadzające
@@ -813,6 +817,7 @@
Nowe Króciaki: zdjęcia lub filmiki
Nowy wpis w społeczności
Nowy produkt
+ Nowy GEO-ekskluzywny Wpis
Otwórz wszystkie odzewy na ten post
Zamknij wszystkie odzewy na ten post
Odpowiedz
@@ -962,6 +967,8 @@
Wybierz listę, aby filtrować kanał
Wyloguj się przy blokowaniu urządzenia
Wiadomość prywatna
+ Transmiter Czatu
Transmiter, z którym łączą się wszyscy użytkownicy tego czatu
Udostępnij zdjęcie…
+ Szukaj tagu: #%1$s
diff --git a/amethyst/src/main/res/values-pt-rBR/strings.xml b/amethyst/src/main/res/values-pt-rBR/strings.xml
index 89cb77845..96208a6d2 100644
--- a/amethyst/src/main/res/values-pt-rBR/strings.xml
+++ b/amethyst/src/main/res/values-pt-rBR/strings.xml
@@ -298,7 +298,7 @@
Remover seguidor
Seguir
Excluir da Galeria
- Remover essa mídia de sua galeria, você pode adicionar mais tarde
+ Remover essa mídia de sua galeria.
Pedir para excluir
Amethyst solicitará que sua nota seja excluída dos relays aos quais você está conectado no momento. Não há garantia de que sua nota será excluída permanentemente desses relays ou de outros relays onde possa estar armazenada.
Bloquear
@@ -559,10 +559,10 @@
Relés
Pacotes Seguir
Leituras
- Descoberta de Notas
+ Algoritmos de feed
Mercado
- Ao vivo
- Comunidade
+ Transmissões Ao Vivo
+ Comunidades
Conversas
Postagens Aprovadas
Este grupo não tem uma descrição ou regras. Fale com o proprietário para adicionar
@@ -614,6 +614,8 @@
Adicione um geohash da sua localização à postagem. O público saberá que você está a 5 km (3 milhas) do local atual
Postagem exclusiva de localização
Somente seguidores da localização verão isso. Seus seguidores gerais não verão isso.
+ Postagem exclusiva de Hashtag
+ Somente seguidores da hashtag verão isso. Seus seguidores gerais não verão isso.
Carregando localização
Sem permissões para localização
Adiciona aviso de conteúdo sensível antes de mostrar seu conteúdo. Isso é ideal para qualquer conteúdo NSFW ou conteúdo que algumas pessoas possam considerar ofensivo ou perturbador
@@ -816,6 +818,7 @@
Novos Vídeos Curtos: imagens ou vídeos
Nova Nota da Comunidade
Produto Novo
+ Nova Postagem Geo-Exclusiva
Abrir todas as reações a esta postagem
Fechar todas as reações a esta postagem
Responder
@@ -968,4 +971,5 @@
Relé de chat
O relé a qual todos os usuários deste chat se conectam
Compartilhar imagem…
+ Pesquisar hashtag: #%1$s
diff --git a/amethyst/src/main/res/values-ru-rRU/strings.xml b/amethyst/src/main/res/values-ru-rRU/strings.xml
index bfa9fda6d..2c8f56515 100644
--- a/amethyst/src/main/res/values-ru-rRU/strings.xml
+++ b/amethyst/src/main/res/values-ru-rRU/strings.xml
@@ -353,8 +353,6 @@
Трансляция выключена
Трансляция закончена
Рынок
- Стримы
- Сообщества
Чаты
У этой группы нет описания или правил. Поговорите с владельцем, чтобы добавить их
У этого сообщества нет описания. Поговорите с владельцем, чтобы добавить
diff --git a/amethyst/src/main/res/values-ru/strings.xml b/amethyst/src/main/res/values-ru/strings.xml
index bfa9fda6d..2c8f56515 100644
--- a/amethyst/src/main/res/values-ru/strings.xml
+++ b/amethyst/src/main/res/values-ru/strings.xml
@@ -353,8 +353,6 @@
Трансляция выключена
Трансляция закончена
Рынок
- Стримы
- Сообщества
Чаты
У этой группы нет описания или правил. Поговорите с владельцем, чтобы добавить их
У этого сообщества нет описания. Поговорите с владельцем, чтобы добавить
diff --git a/amethyst/src/main/res/values-sl-rSI/strings.xml b/amethyst/src/main/res/values-sl-rSI/strings.xml
index 39d027de1..115c30c60 100644
--- a/amethyst/src/main/res/values-sl-rSI/strings.xml
+++ b/amethyst/src/main/res/values-sl-rSI/strings.xml
@@ -308,7 +308,6 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Prenehaj slediti
Sledi
Izbris iz galerije
- Odstrani ta medij iz tvoje galerije, lahko ga dodaš nazaj kasneje.
Prošnja za izbris
Amethyst bo poslal prošnjo za izbris zapiska vsem relejem na katere ste povezani. Nobenega jamstva ni, da bo vaš zapisek trajno izbrisan iz teh relejev ali iz drugih relejev, kjer je morda shranjen.
Blokiraj
@@ -569,10 +568,7 @@ Prijavi se s privatnim ključem, za prikaz skritih besed in stavkov
Releji
Sledi tropu
Branje
- Odkrivanje zapiskov
Tržnica
- V živo
- Skupnosti
Pogovori
Odobrene objave
Ta skupina nima opisa ali pravil. Obrnite se na lastnika, da jih doda
diff --git a/amethyst/src/main/res/values-sv-rSE/strings.xml b/amethyst/src/main/res/values-sv-rSE/strings.xml
index 4a4c85806..058c36104 100644
--- a/amethyst/src/main/res/values-sv-rSE/strings.xml
+++ b/amethyst/src/main/res/values-sv-rSE/strings.xml
@@ -298,7 +298,7 @@
Sluta följa
Följ
Ta bort från galleriet
- Ta bort detta media från ditt galleri, kan du lägga till det senare
+ Ta bort detta media från ditt galleri.
Begär radering
Amethyst kommer att begära att din anteckning tas bort från de reläer du för närvarande är ansluten till. Det finns ingen garanti för att din anteckning kommer att raderas permanent från dessa reläer eller från andra reläer där den kan lagras.
Blockera
@@ -558,10 +558,10 @@
Reläer
Följpaket
Läsningar
- Upptäckt av anteckningar
+ Feed algoritmer
Marknadsplats
- Live
- Gemenskap
+ Live-streams
+ Grupper
Chattar
Godkända Inlägg
Denna grupp har ingen beskrivning eller regler. Prata med ägaren för att lägga till en.
@@ -613,6 +613,8 @@
Lägger till en Geohash av din plats i inlägget. Allmänheten kommer att veta att du befinner dig inom 5 km från nuvarande plats
Plats-exklusivt inlägg
Endast anhängare av platsen kommer att se den. Dina allmänna anhängare kommer inte att se den.
+ Hashtag-exklusivt inlägg
+ Endast anhängare av hashtaggen kommer att se den. Dina generella följare kommer inte att se den.
Laddar position
Inga platsbehörigheter
Lägger till en varning för känsligt innehåll innan ditt innehåll visas. Detta är idealiskt för NSFW-innehåll (inte säkert för arbete) eller innehåll som vissa personer kan uppleva som stötande eller störande
@@ -815,6 +817,7 @@
Nya kort: bilder eller videor
Nytt Community-meddelande
Ny produkt
+ Nytt Geo-Exklusivt inlägg
Öppna alla reaktioner på detta inlägg
Stäng alla reaktioner på detta inlägg
Svara
@@ -967,4 +970,5 @@
Chatt Relä
Reläet som alla användare av den här chatten ansluter till
Dela bild…
+ Sök hashtag: #%1$s
diff --git a/amethyst/src/main/res/values-sw-rKE/strings.xml b/amethyst/src/main/res/values-sw-rKE/strings.xml
index 079c33fdf..eaae02bd9 100644
--- a/amethyst/src/main/res/values-sw-rKE/strings.xml
+++ b/amethyst/src/main/res/values-sw-rKE/strings.xml
@@ -371,8 +371,6 @@
Kutoka kunaondoa taarifa zako za eneo la kuhifadhia data. Hakikisha una nakala za funguo zako binafsi ili kuepuka kupoteza akaunti yako. Je, unataka kuendelea?
Mada Zinazofuatwa
Usanidi wa Relays
- Moja kwa Moja
- Jumuiya
Mazungumzo
Machapisho Yaliyoidhinishwa
Kikundi hiki hakitumii maelezo au kanuni. Ongea na mmiliki ili aongeze.
diff --git a/amethyst/src/main/res/values-ta-rIN/strings.xml b/amethyst/src/main/res/values-ta-rIN/strings.xml
index 761ea3819..5471010d5 100644
--- a/amethyst/src/main/res/values-ta-rIN/strings.xml
+++ b/amethyst/src/main/res/values-ta-rIN/strings.xml
@@ -365,8 +365,6 @@
வெளியேறுவதல் உங்கள் அனைத்து விவரங்களையும் நீக்கிவிடும். வெளியேறும் முன் உங்கள் கணக்கைத் தொலையாமல் இருக்க ரகசியசாவியை பத்திரமாக பிரதி செய்து சேமிக்கப்பட்டுள்ளதா என்று சரிபார்க்கவும். வெளியேற வேண்டுமா?
பின்பற்றப்படும் சிட்டைகள்
ரிலேகள்
- நேரலை
- சமூகம்
அரட்டை
அங்கீகரிக்கப்பட்ட குறிப்பு
இந்த அரட்டைக் குழுவின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும்
diff --git a/amethyst/src/main/res/values-ta/strings.xml b/amethyst/src/main/res/values-ta/strings.xml
index 761ea3819..5471010d5 100644
--- a/amethyst/src/main/res/values-ta/strings.xml
+++ b/amethyst/src/main/res/values-ta/strings.xml
@@ -365,8 +365,6 @@
வெளியேறுவதல் உங்கள் அனைத்து விவரங்களையும் நீக்கிவிடும். வெளியேறும் முன் உங்கள் கணக்கைத் தொலையாமல் இருக்க ரகசியசாவியை பத்திரமாக பிரதி செய்து சேமிக்கப்பட்டுள்ளதா என்று சரிபார்க்கவும். வெளியேற வேண்டுமா?
பின்பற்றப்படும் சிட்டைகள்
ரிலேகள்
- நேரலை
- சமூகம்
அரட்டை
அங்கீகரிக்கப்பட்ட குறிப்பு
இந்த அரட்டைக் குழுவின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும்
diff --git a/amethyst/src/main/res/values-th-rTH/strings.xml b/amethyst/src/main/res/values-th-rTH/strings.xml
index 90f6d80cf..e03e05281 100644
--- a/amethyst/src/main/res/values-th-rTH/strings.xml
+++ b/amethyst/src/main/res/values-th-rTH/strings.xml
@@ -258,7 +258,6 @@
เลิกติดตาม
ติดตาม
ลบออกจากคลังภาพ
- เอาออกจากคลังภาพ คุณสามารถเพิ่มใหม่ได้ภายหลัง
ส่งคำขอให้ลบ
Amethyst จะขอให้ลบโน้ตของคุณออกจากรีเลย์ที่คุณเชื่อมต่ออยู่ ไม่มีการรับประกันว่าโน้ตของคุณจะถูกลบออกอย่างถาวรจากรีเลย์เหล่านั้น หรือ จากรีเลย์อื่น ๆ ที่อาจเก็บไว้
บล๊อก
@@ -455,10 +454,7 @@
การออกจากระบบจะลบข้อมูลทั้งหมดของคุณ ตรวจสอบให้แน่ใจว่าได้สํารองข้อมูล private key ไว้เพื่อหลีกเลี่ยงการสูญเสียบัญชีของคุณ คุณต้องการดําเนินการต่อหรือไม่?
ติดตามแท็ก
รีเลย์
- ค้นหาโน๊ตใหม่ ๆ
ตลาด
- ถ่ายทอดสด
- ชุมชน
ช่องสนทนา
อนุมัติโพสต์
ชุมชนนี้ไม่มีคำอธิบายหรือกฏ พูดคุยกับเจ้าของเพื่อเพิ่มเติมสิ่งนี้
diff --git a/amethyst/src/main/res/values-th/strings.xml b/amethyst/src/main/res/values-th/strings.xml
index 90f6d80cf..e03e05281 100644
--- a/amethyst/src/main/res/values-th/strings.xml
+++ b/amethyst/src/main/res/values-th/strings.xml
@@ -258,7 +258,6 @@
เลิกติดตาม
ติดตาม
ลบออกจากคลังภาพ
- เอาออกจากคลังภาพ คุณสามารถเพิ่มใหม่ได้ภายหลัง
ส่งคำขอให้ลบ
Amethyst จะขอให้ลบโน้ตของคุณออกจากรีเลย์ที่คุณเชื่อมต่ออยู่ ไม่มีการรับประกันว่าโน้ตของคุณจะถูกลบออกอย่างถาวรจากรีเลย์เหล่านั้น หรือ จากรีเลย์อื่น ๆ ที่อาจเก็บไว้
บล๊อก
@@ -455,10 +454,7 @@
การออกจากระบบจะลบข้อมูลทั้งหมดของคุณ ตรวจสอบให้แน่ใจว่าได้สํารองข้อมูล private key ไว้เพื่อหลีกเลี่ยงการสูญเสียบัญชีของคุณ คุณต้องการดําเนินการต่อหรือไม่?
ติดตามแท็ก
รีเลย์
- ค้นหาโน๊ตใหม่ ๆ
ตลาด
- ถ่ายทอดสด
- ชุมชน
ช่องสนทนา
อนุมัติโพสต์
ชุมชนนี้ไม่มีคำอธิบายหรือกฏ พูดคุยกับเจ้าของเพื่อเพิ่มเติมสิ่งนี้
diff --git a/amethyst/src/main/res/values-uk-rUA/strings.xml b/amethyst/src/main/res/values-uk-rUA/strings.xml
index b8943d743..3c028d448 100644
--- a/amethyst/src/main/res/values-uk-rUA/strings.xml
+++ b/amethyst/src/main/res/values-uk-rUA/strings.xml
@@ -381,8 +381,6 @@
Вихід з облікового запису видаляє всю вашу локальну інформацію. Переконайтеся, що ваші особисті ключі були збережені, щоб уникнути втрати вашого облікового запису. Ви хочете продовжити?
Відстежувані теги
Торгівельний майданчик
- Наживо
- Спільнота
Чати
Затверджені публікації
Ця група не має опису або правил. Зверніться до автора, щоб додати один
diff --git a/amethyst/src/main/res/values-uk/strings.xml b/amethyst/src/main/res/values-uk/strings.xml
index b8943d743..3c028d448 100644
--- a/amethyst/src/main/res/values-uk/strings.xml
+++ b/amethyst/src/main/res/values-uk/strings.xml
@@ -381,8 +381,6 @@
Вихід з облікового запису видаляє всю вашу локальну інформацію. Переконайтеся, що ваші особисті ключі були збережені, щоб уникнути втрати вашого облікового запису. Ви хочете продовжити?
Відстежувані теги
Торгівельний майданчик
- Наживо
- Спільнота
Чати
Затверджені публікації
Ця група не має опису або правил. Зверніться до автора, щоб додати один
diff --git a/amethyst/src/main/res/values-zh-rCN/strings.xml b/amethyst/src/main/res/values-zh-rCN/strings.xml
index 33dc34e17..00c9c31e1 100644
--- a/amethyst/src/main/res/values-zh-rCN/strings.xml
+++ b/amethyst/src/main/res/values-zh-rCN/strings.xml
@@ -300,7 +300,7 @@
取关
关注
从相册中删除
- 从相册中删除此媒体,但仍然可供浏览
+ 从媒体库中删除此媒体。
请求删贴
Amethyst 将请求你的记录从当前连接的中继器中删除。不能保证你发布的笔记将被永久从那些中继器或其他存储笔记的中继器中删除。
阻止
@@ -561,10 +561,10 @@
中继器
关注包
次浏览
- 笔记发现
+ Feed算法
市场
- 直播
- 社区
+ 直播
+ 社区
聊天
批准的帖子
此群组没有描述或规则。联系群主来添加
@@ -616,6 +616,8 @@
将你所在位置的地理位置添加到帖子。公众会知道你在当前位置的5公里之内(3英里)
位置限定帖子
只有处于同一地理位置的关注者才能看到贴文。其他追随者无法看到。
+ 话题标签专属帖子
+ 只有话题标签的关注者才会看到它。您的一般关注者不会看到它。
加载位置中
没有位置信息权限
在显示你的内容之前添加敏感的内容警告。针对任何 NSFW 内容或一些人可能觉得有冒犯性或令人不安的内容。
@@ -818,6 +820,7 @@
新短篇媒体:图像或视频
新社区笔记
新产品
+ 新建地理位置专属帖子
展开对此帖子的所有回应
收起对此帖子的所有回应
回复
@@ -970,4 +973,5 @@
聊天中继
此聊天所有用户都连接到的中继
分享图片…
+ 搜索话题标签:#%1$s
diff --git a/amethyst/src/main/res/values-zh-rTW/strings.xml b/amethyst/src/main/res/values-zh-rTW/strings.xml
index e2025b372..dc1067744 100644
--- a/amethyst/src/main/res/values-zh-rTW/strings.xml
+++ b/amethyst/src/main/res/values-zh-rTW/strings.xml
@@ -256,7 +256,6 @@
取關
關注
從相冊中刪除
- 從相冊中刪除此媒體,但仍然可供瀏覽
請求刪貼
Amethyst 將請求您的記錄從當前連接的中繼器中刪除。不能保證您發佈的筆記將被永久從那些中繼器或其他存儲筆記的中繼器中刪除。
屏蔽
@@ -446,10 +445,7 @@
登出將刪除你的本地信息。請確保備份你的私鑰以避免失去你的帳戶。你想要繼續嗎?
以關注的標籤
中繼器
- 筆記發現
市場
- 直播
- 社群
聊天
批准的帖子
此群組沒有描述或規則。聯繫群主來添加
diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml
index 144044dec..2d9b6cdb2 100644
--- a/amethyst/src/main/res/values/strings.xml
+++ b/amethyst/src/main/res/values/strings.xml
@@ -326,7 +326,7 @@
Unfollow
Follow
Delete from Gallery
- Remove this media from your Gallery.
+ Remove this media from your Gallery.
Request Deletion
Amethyst will request that your note be deleted from the relays you are currently connected to. There is no guarantee that your note will be permanently deleted from those relays, or from other relays where it may be stored.
Block
@@ -661,10 +661,10 @@
Follow Packs
Reads
- Feed Algorithms
+ Feed Algorithms
Marketplace
- Live Streams
- Communities
+ Live Streams
+ Communities
Chats
Approved Posts
@@ -675,6 +675,7 @@
Adds sensitive content warning before showing this content
App Preferences
+ User Preferences
Settings
Always
@@ -1178,4 +1179,7 @@
Share image…
Search hashtag: #%1$s
+
+ Don\'t Translate From
+ Languages shown here will not be translated. Select a language to remove it and have it translated again.
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 258945d5e..ac89c22fb 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,11 +1,11 @@
[versions]
accompanistAdaptive = "0.37.3"
activityCompose = "1.10.1"
-agp = "8.10.1"
+agp = "8.11.0"
android-compileSdk = "35"
android-minSdk = "26"
android-targetSdk = "35"
-androidKotlinGeohash = "1.0"
+androidKotlinGeohash = "b481c6a64e"
androidxJunit = "1.2.1"
appcompat = "1.7.0"
audiowaveform = "1.1.1"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 17098b30b..da1d086f4 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Wed Jan 04 09:23:50 EST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplate.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplate.kt
index 8617b1e61..6b7a0b978 100644
--- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplate.kt
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplate.kt
@@ -20,19 +20,28 @@
*/
package com.vitorpamplona.quartz.nip01Core.signers
+import com.fasterxml.jackson.annotation.JsonProperty
import com.vitorpamplona.quartz.nip01Core.core.Event
import com.vitorpamplona.quartz.nip01Core.core.TagArray
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
import com.vitorpamplona.quartz.nip01Core.core.builder
import com.vitorpamplona.quartz.nip01Core.core.tagArray
+import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper
import com.vitorpamplona.quartz.utils.TimeUtils
class EventTemplate(
+ @JsonProperty("created_at")
val createdAt: Long,
val kind: Int,
val tags: TagArray,
val content: String,
-)
+) {
+ fun toJson(): String = EventMapper.mapper.writeValueAsString(this)
+
+ companion object {
+ fun fromJson(json: String): EventTemplate = EventTemplateManualDeserializer.fromJson(EventMapper.mapper.readTree(json))
+ }
+}
inline fun eventTemplate(
kind: Int,
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateDeserializer.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateDeserializer.kt
new file mode 100644
index 000000000..94e69cf39
--- /dev/null
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateDeserializer.kt
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2025 Vitor Pamplona
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.vitorpamplona.quartz.nip01Core.signers
+
+import com.fasterxml.jackson.core.JsonParser
+import com.fasterxml.jackson.databind.DeserializationContext
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer
+import com.vitorpamplona.quartz.nip01Core.core.Event
+
+class EventTemplateDeserializer : StdDeserializer>(EventTemplate::class.java) {
+ override fun deserialize(
+ jp: JsonParser,
+ ctxt: DeserializationContext,
+ ): EventTemplate = EventTemplateManualDeserializer.fromJson(jp.codec.readTree(jp))
+}
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateManualDeserializer.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateManualDeserializer.kt
new file mode 100644
index 000000000..abdded6bd
--- /dev/null
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/signers/EventTemplateManualDeserializer.kt
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2025 Vitor Pamplona
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.vitorpamplona.quartz.nip01Core.signers
+
+import com.fasterxml.jackson.databind.JsonNode
+import com.vitorpamplona.quartz.nip01Core.core.Event
+import com.vitorpamplona.quartz.nip01Core.jackson.toTypedArray
+
+class EventTemplateManualDeserializer {
+ companion object {
+ fun fromJson(jsonObject: JsonNode): EventTemplate =
+ EventTemplate(
+ createdAt = jsonObject.get("created_at").asLong(),
+ kind = jsonObject.get("kind").asInt(),
+ tags =
+ jsonObject.get("tags").toTypedArray {
+ it.toTypedArray { s -> if (s.isNull) "" else s.asText().intern() }
+ },
+ content = jsonObject.get("content").asText(),
+ )
+ }
+}
diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestSign.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestSign.kt
index 8c755f1d3..4629e489b 100644
--- a/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestSign.kt
+++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestSign.kt
@@ -21,11 +21,12 @@
package com.vitorpamplona.quartz.nip46RemoteSigner
import com.vitorpamplona.quartz.nip01Core.core.Event
+import com.vitorpamplona.quartz.nip01Core.signers.EventTemplate
import java.util.UUID
class BunkerRequestSign(
id: String = UUID.randomUUID().toString(),
- val event: Event,
+ val event: EventTemplate,
) : BunkerRequest(id, METHOD_NAME, arrayOf(event.toJson())) {
companion object {
val METHOD_NAME = "sign_event"
@@ -33,6 +34,6 @@ class BunkerRequestSign(
fun parse(
id: String,
params: Array,
- ): BunkerRequestSign = BunkerRequestSign(id, Event.fromJson(params[0]))
+ ): BunkerRequestSign = BunkerRequestSign(id, EventTemplate.fromJson(params[0]))
}
}
diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/jackson/EventDeserializerTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/jackson/EventDeserializerTest.kt
new file mode 100644
index 000000000..cb22c26ba
--- /dev/null
+++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip01Core/jackson/EventDeserializerTest.kt
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2025 Vitor Pamplona
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.vitorpamplona.quartz.nip01Core.jackson
+
+import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair
+import com.vitorpamplona.quartz.nip01Core.signers.EventTemplate
+import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal
+import com.vitorpamplona.quartz.nip01Core.verify
+import org.junit.Test
+
+class EventDeserializerTest {
+ @Test
+ fun testEventTemplateToJson() {
+ val templateJson = """{"created_at":1234,"kind":1,"tags":[],"content":"This is an unsigned event."}"""
+ val template = EventTemplate.fromJson(templateJson)
+
+ val json = template.toJson()
+
+ assert(json == templateJson)
+ }
+
+ @Test
+ fun testEventTemplate() {
+ val templateJson = """{"kind":"1","content":"This is an unsigned event.","created_at":1234,"tags":[]}"""
+ val template = EventTemplate.fromJson(templateJson)
+
+ assert(template.kind == 1)
+ assert(template.content == "This is an unsigned event.")
+ assert(template.tags.isEmpty())
+ }
+
+ @Test
+ fun testSignedEvent() {
+ val keyPair = KeyPair()
+ val signer = NostrSignerInternal(keyPair)
+
+ val templateJson = """{"kind":"1","content":"This is an unsigned event.","created_at":1234,"tags":[]}"""
+ val template = EventTemplate.fromJson(templateJson)
+
+ val signedEvent = signer.signerSync.sign(template)!!
+
+ assert(signedEvent.id.isNotEmpty())
+ assert(signedEvent.sig.isNotEmpty())
+ assert(signedEvent.pubKey.isNotEmpty())
+ assert(signedEvent.verify())
+ }
+}
diff --git a/quartz/src/test/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestTest.kt b/quartz/src/test/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestTest.kt
new file mode 100644
index 000000000..3d94e0c4b
--- /dev/null
+++ b/quartz/src/test/java/com/vitorpamplona/quartz/nip46RemoteSigner/BunkerRequestTest.kt
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2025 Vitor Pamplona
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+ * Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.vitorpamplona.quartz.nip46RemoteSigner
+
+import com.vitorpamplona.quartz.nip01Core.jackson.EventMapper
+import org.junit.Test
+
+class BunkerRequestTest {
+ @Test
+ fun testBunkerRequestDeSerialization() {
+ val requestJson = """{"id":"123","method":"sign_event","params":["{\"created_at\":1234,\"kind\":1,\"tags\":[],\"content\":\"This is an unsigned event.\"}"]}"""
+ val bunkerRequest = EventMapper.mapper.readValue(requestJson, BunkerRequest::class.java)
+
+ assert(bunkerRequest is BunkerRequestSign)
+ assert((bunkerRequest as BunkerRequestSign).event.kind == 1)
+ }
+}