Using Json serialization to map firebase response #30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The problem
Firebase is awesome, but its SDK sucks. We need to fetch info from Firestore, but there is no "easy" way to serialize the response. The current approach will force us to map property by property, which can be painful for complex structures (such as, a list of confrontations).
The solution
I can convert the firebase response to a
Map<String, Any?>
so my first try was to use the Kotlin serialization properties, a library to serialize maps into custom data classes, exactly what we need. The problem is this library also sucks because it has a bug and it's not serializing the response properly (I opened an issue for them).So after some hours of thinking I found a solution, using the kotlin-serialization-json for that. What I'm doing is:
It's not an optimized solution, but at least we can avoid repeating unnecessary code.
Unfortunelly, I was not able to find a solution to convert a custom data class into a map (to write things on firebase). The kotlin serialization json can't be used for that