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) + } }