mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-03-26 17:52:29 +01:00
Fixes error when trying to decrypt the PrivateOutboxRelayList event for an account that is not currently active.
This commit is contained in:
parent
989099c791
commit
6c0b22f129
@ -104,7 +104,14 @@ object NostrAccountDataSource : AmethystNostrDataSource("AccountData") {
|
||||
types = COMMON_FEED_TYPES,
|
||||
filter =
|
||||
Filter(
|
||||
kinds = listOf(StatusEvent.KIND, AdvertisedRelayListEvent.KIND, ChatMessageRelayListEvent.KIND, SearchRelayListEvent.KIND, PrivateOutboxRelayListEvent.KIND),
|
||||
kinds =
|
||||
listOf(
|
||||
StatusEvent.KIND,
|
||||
AdvertisedRelayListEvent.KIND,
|
||||
ChatMessageRelayListEvent.KIND,
|
||||
SearchRelayListEvent.KIND,
|
||||
PrivateOutboxRelayListEvent.KIND,
|
||||
),
|
||||
authors = listOf(account.userProfile().pubkeyHex),
|
||||
limit = 10,
|
||||
),
|
||||
@ -122,7 +129,6 @@ object NostrAccountDataSource : AmethystNostrDataSource("AccountData") {
|
||||
ContactListEvent.KIND,
|
||||
AdvertisedRelayListEvent.KIND,
|
||||
ChatMessageRelayListEvent.KIND,
|
||||
PrivateOutboxRelayListEvent.KIND,
|
||||
SearchRelayListEvent.KIND,
|
||||
FileServersEvent.KIND,
|
||||
MuteListEvent.KIND,
|
||||
|
@ -57,7 +57,7 @@ class NIP90ContentDiscoveryResponseEvent(
|
||||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Log.w("GeneralList", "Error parsing the JSON ${e.message}")
|
||||
Log.w("NIP90ContentDiscoveryResponseEvent", "Error parsing the JSON ${e.message}")
|
||||
}
|
||||
|
||||
return events ?: listOf()
|
||||
|
@ -41,27 +41,25 @@ class PrivateOutboxRelayListEvent(
|
||||
|
||||
override fun dTag() = FIXED_D_TAG
|
||||
|
||||
fun relays(): List<String>? {
|
||||
return tags.mapNotNull {
|
||||
if (it.size > 1 && it[0] == "relay") {
|
||||
it[1]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}.plus(
|
||||
privateTagsCache?.mapNotNull {
|
||||
fun relays(): List<String>? =
|
||||
tags
|
||||
.mapNotNull {
|
||||
if (it.size > 1 && it[0] == "relay") {
|
||||
it[1]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} ?: emptyList(),
|
||||
).ifEmpty { null }
|
||||
}
|
||||
}.plus(
|
||||
privateTagsCache?.mapNotNull {
|
||||
if (it.size > 1 && it[0] == "relay") {
|
||||
it[1]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} ?: emptyList(),
|
||||
).ifEmpty { null }
|
||||
|
||||
fun cachedPrivateTags(): Array<Array<String>>? {
|
||||
return privateTagsCache
|
||||
}
|
||||
fun cachedPrivateTags(): Array<Array<String>>? = privateTagsCache
|
||||
|
||||
fun privateTags(
|
||||
signer: NostrSigner,
|
||||
@ -79,11 +77,15 @@ class PrivateOutboxRelayListEvent(
|
||||
|
||||
try {
|
||||
signer.nip44Decrypt(content, pubKey) {
|
||||
privateTagsCache = mapper.readValue<Array<Array<String>>>(it)
|
||||
privateTagsCache?.let { onReady(it) }
|
||||
try {
|
||||
privateTagsCache = mapper.readValue<Array<Array<String>>>(it)
|
||||
privateTagsCache?.let { onReady(it) }
|
||||
} catch (e: Throwable) {
|
||||
Log.w("PrivateOutboxRelayListEvent", "Error parsing the JSON: ${e.message}. Json `$it` from event `${toNostrUri()}`")
|
||||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Log.w("GeneralList", "Error parsing the JSON ${e.message}")
|
||||
Log.w("PrivateOutboxRelayListEvent", "Error decrypting content: ${e.message}. Event: `${toNostrUri()}`")
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,13 +94,9 @@ class PrivateOutboxRelayListEvent(
|
||||
const val FIXED_D_TAG = ""
|
||||
val TAGS = arrayOf(arrayOf("alt", "Relay list to store private content from this author"))
|
||||
|
||||
fun createAddressATag(pubKey: HexKey): ATag {
|
||||
return ATag(KIND, pubKey, FIXED_D_TAG, null)
|
||||
}
|
||||
fun createAddressATag(pubKey: HexKey): ATag = ATag(KIND, pubKey, FIXED_D_TAG, null)
|
||||
|
||||
fun createAddressTag(pubKey: HexKey): String {
|
||||
return ATag.assembleATag(KIND, pubKey, FIXED_D_TAG)
|
||||
}
|
||||
fun createAddressTag(pubKey: HexKey): String = ATag.assembleATag(KIND, pubKey, FIXED_D_TAG)
|
||||
|
||||
fun encryptTags(
|
||||
privateTags: Array<Array<String>>? = null,
|
||||
@ -114,11 +112,11 @@ class PrivateOutboxRelayListEvent(
|
||||
)
|
||||
}
|
||||
|
||||
fun createTagArray(relays: List<String>): Array<Array<String>> {
|
||||
return relays.map {
|
||||
arrayOf("relay", it)
|
||||
}.toTypedArray()
|
||||
}
|
||||
fun createTagArray(relays: List<String>): Array<Array<String>> =
|
||||
relays
|
||||
.map {
|
||||
arrayOf("relay", it)
|
||||
}.toTypedArray()
|
||||
|
||||
fun updateRelayList(
|
||||
earlierVersion: PrivateOutboxRelayListEvent,
|
||||
@ -128,11 +126,13 @@ class PrivateOutboxRelayListEvent(
|
||||
onReady: (PrivateOutboxRelayListEvent) -> Unit,
|
||||
) {
|
||||
val tags =
|
||||
earlierVersion.privateTagsCache?.filter { it[0] != "relay" }?.plus(
|
||||
relays.map {
|
||||
arrayOf("relay", it)
|
||||
},
|
||||
)?.toTypedArray() ?: emptyArray()
|
||||
earlierVersion.privateTagsCache
|
||||
?.filter { it[0] != "relay" }
|
||||
?.plus(
|
||||
relays.map {
|
||||
arrayOf("relay", it)
|
||||
},
|
||||
)?.toTypedArray() ?: emptyArray()
|
||||
|
||||
encryptTags(tags, signer) {
|
||||
signer.sign<PrivateOutboxRelayListEvent>(createdAt, KIND, TAGS, it) {
|
||||
|
@ -52,9 +52,7 @@ class Permission(
|
||||
val type: String,
|
||||
val kind: Int? = null,
|
||||
) {
|
||||
fun toJson(): String {
|
||||
return "{\"type\":\"${type}\",\"kind\":$kind}"
|
||||
}
|
||||
fun toJson(): String = "{\"type\":\"${type}\",\"kind\":$kind}"
|
||||
}
|
||||
|
||||
class Result(
|
||||
@ -89,9 +87,7 @@ class Result(
|
||||
/**
|
||||
* Parses the json with a string of events to an Array of Event objects.
|
||||
*/
|
||||
fun fromJsonArray(json: String): Array<Result> {
|
||||
return mapper.readValue(json)
|
||||
}
|
||||
fun fromJsonArray(json: String): Array<Result> = mapper.readValue(json)
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,9 +268,7 @@ class ExternalSignerLauncher(
|
||||
signerType: SignerType,
|
||||
data: Array<out String>,
|
||||
columnName: String = "signature",
|
||||
): kotlin.Result<String?> {
|
||||
return getDataFromResolver(signerType, data, columnName, contentResolver)
|
||||
}
|
||||
): kotlin.Result<String?> = getDataFromResolver(signerType, data, columnName, contentResolver)
|
||||
|
||||
private fun getDataFromResolver(
|
||||
signerType: SignerType,
|
||||
@ -298,8 +292,7 @@ class ExternalSignerLauncher(
|
||||
"1",
|
||||
null,
|
||||
null,
|
||||
)
|
||||
.use {
|
||||
).use {
|
||||
if (it == null) {
|
||||
return kotlin.Result.success(null)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user