ClojureDart
ClojureDart copied to clipboard
Getting member of HashMap using keyword returns null on Flutter Web
Description
Getting member of HashMap using keyword returns null on Flutter Web but runs ok on mobile. This problem I got when getting data from an API using GraphQL.
https://clojurians.slack.com/archives/C03A6GE8D32/p1656243161601779
Reproducable Code
(defn- keywordize-blunt
"Make keys of map turn to keyword"
[entry]
(cond
(dart/is? entry Map)
(loop [result {}
entries (seq entry)]
(let [[k v] (first entries)]
(if k
(recur
(assoc result
(keyword k)
(keywordize-blunt v))
(rest entries))
result)))
(dart/is? entry List)
(map (fn [e] (keywordize-blunt e)) entry)
:else entry))
(let [r {"__typename" "Query"
"organizationLoyaltyMessageRandomMessage"
{"__typename" "OrganizationLoyaltyMessage"
"pictureUrl" nil
"message" "\"Kamu tidak perlu menjadi luar biasa untuk memulai, tapi kamu harus memulai untuk menjadi luar biasa.\" – Zig Ziglar"}}
rk (keywordize-blunt r)]
(dart:core/print (get r "organizationLoyaltyMessageRandomMessage"))
(dart:core/print rk)
(dart:core/print (:organizationLoyaltyMessageRandomMessage rk)))
log
{"pictureUrl" nil, "__typename" "OrganizationLoyaltyMessage", "message" "\"Kamu tidak perlu menjadi luar biasa untuk memulai, tapi kamu harus memulai untuk menjadi luar biasa.\" – Zig Ziglar"}
{:__typename "Query", :organizationLoyaltyMessageRandomMessage {:pictureUrl nil, :__typename "OrganizationLoyaltyMessage", :message "\"Kamu tidak perlu menjadi luar biasa untuk memulai, tapi
kamu harus memulai untuk menjadi luar biasa.\" – Zig Ziglar"}}
null