From f2d7b115d93c446292bf0fae98e4a66bce949eb6 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 30 Jan 2026 09:00:52 -0300 Subject: [PATCH] Fixed NullPointerException when filter contain tags --- .../nip01Core/relay/filters/FilterDeserializer.kt | 4 ++-- .../quartz/nip01Core/jackson/JacksonMapperTest.kt | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/quartz/src/jvmAndroid/kotlin/com/vitorpamplona/quartz/nip01Core/relay/filters/FilterDeserializer.kt b/quartz/src/jvmAndroid/kotlin/com/vitorpamplona/quartz/nip01Core/relay/filters/FilterDeserializer.kt index 5bf629536..618491580 100644 --- a/quartz/src/jvmAndroid/kotlin/com/vitorpamplona/quartz/nip01Core/relay/filters/FilterDeserializer.kt +++ b/quartz/src/jvmAndroid/kotlin/com/vitorpamplona/quartz/nip01Core/relay/filters/FilterDeserializer.kt @@ -55,8 +55,8 @@ class ManualFilterDeserializer { ids = jsonObject.get("ids")?.mapNotNull { it.asTextOrNull() }, authors = jsonObject.get("authors")?.mapNotNull { it.asTextOrNull() }, kinds = jsonObject.get("kinds")?.mapNotNull { it.asIntOrNull() }, - tags = tagsIn.associateWith { jsonObject.get(it).mapNotNull { it.asTextOrNull() } }, - tagsAll = tagsAll.associateWith { jsonObject.get(it).mapNotNull { it.asTextOrNull() } }, + tags = tagsIn.associateWith { jsonObject.get("#$it").mapNotNull { it.asTextOrNull() } }, + tagsAll = tagsAll.associateWith { jsonObject.get("&$it").mapNotNull { it.asTextOrNull() } }, since = jsonObject.get("since")?.asLongOrNull(), until = jsonObject.get("until")?.asLongOrNull(), limit = jsonObject.get("limit")?.asIntOrNull(), diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt index c691bd152..84844d0e2 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt @@ -161,4 +161,17 @@ class JacksonMapperTest { assertEquals(null, deserialized.ids) } + + @Test + fun shouldNotThrowExceptionWhenDeserializingFilterTags() { + val json = + Filter( + tags = mapOf("p" to listOf("123")), + tagsAll = mapOf("p" to listOf("123")), + ).toJson() + val deserialized = JacksonMapper.fromJsonTo(json) + + assertEquals(true, deserialized.tags?.keys?.contains("p")) + assertEquals(true, deserialized.tagsAll?.keys?.contains("p")) + } }