diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/taggedevents/TaggedEventsContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/taggedevents/TaggedEventsContent.kt index 318e8f8ea2..58ca25f1e2 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/taggedevents/TaggedEventsContent.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/taggedevents/TaggedEventsContent.kt @@ -41,6 +41,7 @@ typealias TaggedEvents = Map<String, TaggedEvent> */ @JsonClass(generateAdapter = true) data class TaggedEventsContent( + @Json(name = "tags") var tags: TaggedEvents = emptyMap() ) { val favouriteEvents @@ -50,36 +51,28 @@ data class TaggedEventsContent( get() = tags[TAG_HIDDEN].orEmpty() fun tagEvent(eventId: String, info: TaggedEventInfo, tag: String) { - val tagMap = HashMap<String, TaggedEventInfo>(tags[tag] ?: emptyMap()) - tagMap[eventId] = info - - val updatedTags = HashMap<String, Map<String, TaggedEventInfo>>(tags) - updatedTags[tag] = tagMap - tags = updatedTags + val taggedEvents = tags[tag].orEmpty().plus(eventId to info) + tags = tags.plus(tag to taggedEvents) } fun untagEvent(eventId: String, tag: String) { - val tagMap = HashMap<String, TaggedEventInfo>(tags[tag] ?: emptyMap()) - tagMap.remove(eventId) - - val updatedTags = HashMap<String, Map<String, TaggedEventInfo>>(tags) - updatedTags[tag] = tagMap - tags = updatedTags + val taggedEvents = tags[tag]?.minus(eventId).orEmpty() + tags = tags.plus(tag to taggedEvents) } companion object { - const val TAGS_KEY = "tags" const val TAG_FAVOURITE = "m.favourite" const val TAG_HIDDEN = "m.hidden" } } data class TaggedEventInfo( - var keywords: List<String>? = null, + @Json(name = "keywords") + val keywords: List<String>? = null, @Json(name = "origin_server_ts") val originServerTs: Long? = null, @Json(name = "tagged_at") - var taggedAt: Long? = null + val taggedAt: Long? = null )