Skip to content

Commit 6210ab6

Browse files
committed
support decoding maps to lists as rtdb can return either depending on if key are numerical and sequential or not
1 parent 278cfbb commit 6210ab6

File tree

3 files changed

+3
-3
lines changed

3 files changed

+3
-3
lines changed

firebase-common/src/androidMain/kotlin/dev/gitlive/firebase/_decoders.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ actual fun FirebaseDecoder.structureDecoder(descriptor: SerialDescriptor): Compo
2020
}
2121
}
2222
}
23-
StructureKind.LIST -> (value as List<*>).let {
23+
StructureKind.LIST -> ((value as? Map<*, *>)?.values?.toList() ?: value as List<*>).let {
2424
FirebaseCompositeDecoder(it.size) { _, index -> it[index] }
2525
}
2626
StructureKind.MAP -> (value as Map<*, *>).entries.toList().let {

firebase-common/src/iosMain/kotlin/dev/gitlive/firebase/_decoders.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ actual fun FirebaseDecoder.structureDecoder(descriptor: SerialDescriptor): Compo
2020
}
2121
}
2222
}
23-
StructureKind.LIST -> (value as List<*>).let {
23+
StructureKind.LIST -> ((value as? Map<*, *>)?.values?.toList() ?: value as List<*>).let {
2424
FirebaseCompositeDecoder(it.size) { _, index -> it[index] }
2525
}
2626
StructureKind.MAP -> (value as Map<*, *>).entries.toList().let {

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/_decoders.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ actual fun FirebaseDecoder.structureDecoder(descriptor: SerialDescriptor): Compo
2222
}
2323
}
2424
}
25-
StructureKind.LIST -> (value as Array<*>).let {
25+
StructureKind.LIST -> (js("Object").values(value) as Array<*>).let {
2626
FirebaseCompositeDecoder(it.size) { _, index -> it[index] }
2727
}
2828
StructureKind.MAP -> (js("Object").entries(value) as Array<Array<Any>>).let {

0 commit comments

Comments
 (0)