From 3fe4be1baf10bfb4dad174324a4ffbae2b532637 Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 25 Oct 2021 10:56:56 +0100 Subject: [PATCH] fix(metadata): fix notifications for metadata sections populated using a `Map` --- CHANGELOG.md | 3 +++ .../java/com/bugsnag/android/MetadataState.kt | 2 +- .../java/com/bugsnag/android/MetadataStateTest.kt | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index daa82cf583..b4f6ca6332 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ * Prevent events being attached to phantom sessions when they are blocked by an `OnSessionCallback` [#1434](/~https://github.com/bugsnag/bugsnag-android/pull/1434) +* Plugins will correctly mirror metadata added using `addMetadata(String, Map)` + []() + ## 5.14.0 (2021-09-29) ### Enhancements diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/MetadataState.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/MetadataState.kt index d95177a5a4..d305b6b6e4 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/MetadataState.kt +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/MetadataState.kt @@ -61,7 +61,7 @@ internal data class MetadataState(val metadata: Metadata = Metadata()) : private fun notifyMetadataAdded(section: String, value: Map) { value.entries.forEach { - updateState { AddMetadata(section, it.key, metadata.getMetadata(it.key)) } + updateState { AddMetadata(section, it.key, metadata.getMetadata(section, it.key)) } } } } diff --git a/bugsnag-android-core/src/test/java/com/bugsnag/android/MetadataStateTest.kt b/bugsnag-android-core/src/test/java/com/bugsnag/android/MetadataStateTest.kt index d796380e64..4d34f41005 100644 --- a/bugsnag-android-core/src/test/java/com/bugsnag/android/MetadataStateTest.kt +++ b/bugsnag-android-core/src/test/java/com/bugsnag/android/MetadataStateTest.kt @@ -87,4 +87,19 @@ internal class MetadataStateTest { assertEquals(setOf("foo"), sections) assertEquals(setOf("key1", "key2", "key3"), keys) } + + @Test + fun observableMessageWithMap() { + val events = mutableListOf() + state.addObserver( + StateObserver { + events.add(it as StateEvent.AddMetadata) + } + ) + + state.addMetadata("fruit", mapOf("apple" to "gala")) + assertEquals("fruit", events[0].section) + assertEquals("apple", events[0].key) + assertEquals("gala", events[0].value) + } }