From f3938fb33665515919715cbdbb830af3382c1111 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Fri, 21 Nov 2025 22:18:06 +0000 Subject: [PATCH 1/6] New Crowdin translations by GitHub Action --- amethyst/src/main/res/values-lv-rLV/strings.xml | 1 + amethyst/src/main/res/values-pl-rPL/strings.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/res/values-lv-rLV/strings.xml b/amethyst/src/main/res/values-lv-rLV/strings.xml index 6044600cf7..a3cb39fd4b 100644 --- a/amethyst/src/main/res/values-lv-rLV/strings.xml +++ b/amethyst/src/main/res/values-lv-rLV/strings.xml @@ -16,6 +16,7 @@ Ļaunprogrammatūra Skatījumi rediģēts + Citāts Pievienot " un " " Seko" diff --git a/amethyst/src/main/res/values-pl-rPL/strings.xml b/amethyst/src/main/res/values-pl-rPL/strings.xml index 48d6c77b66..c30d1a8a1d 100644 --- a/amethyst/src/main/res/values-pl-rPL/strings.xml +++ b/amethyst/src/main/res/values-pl-rPL/strings.xml @@ -231,7 +231,7 @@ opis dla i zdjęcie do Wyjdź - Porzuć obserwację + Nie obserwuj Kanał utworzony "Informacje o kanale zmienione na" Czat efemeryczny From 5fb309d00c3fd811e4eb2f5f118a084066542efc Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Sat, 22 Nov 2025 17:16:30 +0000 Subject: [PATCH 2/6] New Crowdin translations by GitHub Action --- amethyst/src/main/res/values-zh-rCN/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/amethyst/src/main/res/values-zh-rCN/strings.xml b/amethyst/src/main/res/values-zh-rCN/strings.xml index b56c6d01c7..0fc84e146f 100644 --- a/amethyst/src/main/res/values-zh-rCN/strings.xml +++ b/amethyst/src/main/res/values-zh-rCN/strings.xml @@ -347,6 +347,7 @@ 发布举报 阻止与举报 仅阻止 + 手动 Zap 拆分 书签 草稿 私人书签 From 4f019c6e491390e179ef0e9de878d41e622997a3 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 24 Nov 2025 10:01:05 -0500 Subject: [PATCH 3/6] Removes ConcurrentModificationException on outbox events --- .../relay/client/pool/PoolEventOutboxState.kt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt index 195c3f9091..6f4088f60f 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt @@ -28,13 +28,13 @@ class PoolEventOutboxState( val event: Event, var relays: Set, ) { - private val tries = mutableMapOf() + private var tries = mapOf() fun updateRelays(newRelays: Set) { relays = newRelays } - fun isDone(url: NormalizedRelayUrl) = tries[url]?.let { it.isDone() } ?: false + fun isDone(url: NormalizedRelayUrl) = tries[url]?.isDone() ?: false fun isDone() = relays.all { isDone(it) } @@ -54,7 +54,7 @@ class PoolEventOutboxState( if (currentTries != null) { currentTries.tries.add(TimeUtils.now()) } else { - tries.put(url, Tries(mutableListOf(TimeUtils.now()))) + tries = tries + (url to Tries(mutableListOf(TimeUtils.now()))) } } @@ -67,12 +67,12 @@ class PoolEventOutboxState( if (currentTries != null) { currentTries.responses.add(Response(success, message)) } else { - tries.put( - url, - Tries( - mutableListOf(TimeUtils.now() - 1), - mutableListOf(Response(success, message)), - ), + tries = tries + ( + url to + Tries( + mutableListOf(TimeUtils.now() - 1), + mutableListOf(Response(success, message)), + ) ) } } @@ -82,7 +82,7 @@ class PoolEventOutboxState( val tries: MutableList = mutableListOf(), val responses: MutableList = mutableListOf(), ) { - fun isDone() = responses.any { it.success == true } || responses.size > 2 || tries.size > 3 + fun isDone() = responses.any { it.success } || responses.size > 2 || tries.size > 3 } class Response( From 1e00c08f7d1ed7bbecbe74f4a40ea0b01b84bf7f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 24 Nov 2025 10:50:58 -0500 Subject: [PATCH 4/6] Fixes ConcurrentExceptions on Event outbox tentative management --- .../relay/client/pool/PoolEventOutboxState.kt | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt index 6f4088f60f..b01a238909 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/relay/client/pool/PoolEventOutboxState.kt @@ -52,9 +52,9 @@ class PoolEventOutboxState( fun newTry(url: NormalizedRelayUrl) { val currentTries = tries[url] if (currentTries != null) { - currentTries.tries.add(TimeUtils.now()) + currentTries.addTriedTime(TimeUtils.now()) } else { - tries = tries + (url to Tries(mutableListOf(TimeUtils.now()))) + tries = tries + (url to Tries(listOf(TimeUtils.now()))) } } @@ -65,13 +65,13 @@ class PoolEventOutboxState( ) { val currentTries = tries[url] if (currentTries != null) { - currentTries.responses.add(Response(success, message)) + currentTries.addResponse(Response(success, message)) } else { tries = tries + ( url to Tries( - mutableListOf(TimeUtils.now() - 1), - mutableListOf(Response(success, message)), + listOf(TimeUtils.now() - 1), + listOf(Response(success, message)), ) ) } @@ -79,10 +79,18 @@ class PoolEventOutboxState( // Tries 3 times class Tries( - val tries: MutableList = mutableListOf(), - val responses: MutableList = mutableListOf(), + var tries: List = listOf(), + var responses: List = listOf(), ) { fun isDone() = responses.any { it.success } || responses.size > 2 || tries.size > 3 + + fun addResponse(r: Response) { + responses += r + } + + fun addTriedTime(tried: Long) { + tries += tried + } } class Response( From 1bfe1e484443f1b1aa8750c08efdaf75b3b469a7 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 24 Nov 2025 11:03:32 -0500 Subject: [PATCH 5/6] Adds TrustProvider loader to the account filter --- .../account/metadata/FilterAccountInfoAndListsFromKey.kt | 1 + .../account/metadata/FilterBasicAccountInfoFromKeys.kt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt index 40aed99a84..00eec6f17a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt @@ -65,6 +65,7 @@ val AccountInfoAndListsFromKeyKinds2 = ProxyRelayListEvent.KIND, HashtagListEvent.KIND, GeohashListEvent.KIND, + TrustedRelayListEvent.KIND, ) val AmethystMetadataKinds = listOf(AppSpecificDataEvent.KIND) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterBasicAccountInfoFromKeys.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterBasicAccountInfoFromKeys.kt index 6348658b42..951db16596 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterBasicAccountInfoFromKeys.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterBasicAccountInfoFromKeys.kt @@ -20,6 +20,7 @@ */ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.metadata +import com.vitorpamplona.quartz.experimental.trustedAssertions.list.TrustProviderListEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter @@ -59,6 +60,7 @@ val BasicAccountInfoKinds2 = ProxyRelayListEvent.KIND, HashtagListEvent.KIND, GeohashListEvent.KIND, + TrustProviderListEvent.KIND, ) fun filterBasicAccountInfoFromKeys( From 0c864b7c7657665d04c81c4b24a2a76143c95dd8 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 24 Nov 2025 11:18:27 -0500 Subject: [PATCH 6/6] fixes wong kind --- .../account/metadata/FilterAccountInfoAndListsFromKey.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt index 00eec6f17a..523c90ae7a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/account/metadata/FilterAccountInfoAndListsFromKey.kt @@ -21,6 +21,7 @@ package com.vitorpamplona.amethyst.service.relayClient.reqCommand.account.metadata import com.vitorpamplona.amethyst.model.nip78AppSpecific.AppSpecificState.Companion.APP_SPECIFIC_DATA_D_TAG +import com.vitorpamplona.quartz.experimental.trustedAssertions.list.TrustProviderListEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter @@ -65,7 +66,7 @@ val AccountInfoAndListsFromKeyKinds2 = ProxyRelayListEvent.KIND, HashtagListEvent.KIND, GeohashListEvent.KIND, - TrustedRelayListEvent.KIND, + TrustProviderListEvent.KIND, ) val AmethystMetadataKinds = listOf(AppSpecificDataEvent.KIND)