-module(shimmer@types@message). -compile(no_auto_import). -export([from_map/1]). -export_type([message/0]). -type message() :: {message, binary(), binary(), shimmer@types@user:user(), gleam@option:option(binary()), binary()}. -spec from_map(gleam@map:map_(gleam@dynamic:dynamic(), gleam@dynamic:dynamic())) -> {ok, message()} | {error, shimmer@internal@error:shimmer_error()}. from_map(Map) -> case begin _pipe = Map, shimmer@internal@map_helpers:get_field_safe( _pipe, shimmer@internal@map_helpers:dyn_key(<<"id"/utf8>>), fun shimmer@snowflake:from_dynamic/1 ) end of {error, _try} -> {error, _try}; {ok, Id} -> case begin _pipe@1 = Map, shimmer@internal@map_helpers:get_field_safe( _pipe@1, shimmer@internal@map_helpers:dyn_key(<<"channel_id"/utf8>>), fun shimmer@snowflake:from_dynamic/1 ) end of {error, _try@1} -> {error, _try@1}; {ok, Channel_id} -> case begin _pipe@2 = Map, shimmer@internal@map_helpers:get_map_field_safe( _pipe@2, shimmer@internal@map_helpers:dyn_key( <<"author"/utf8>> ) ) end of {error, _try@2} -> {error, _try@2}; {ok, Author_map} -> case begin _pipe@3 = Author_map, shimmer@types@user:from_map( _pipe@3, fun shimmer@internal@map_helpers:dyn_key/1 ) end of {error, _try@3} -> {error, _try@3}; {ok, Author} -> case begin _pipe@4 = Map, shimmer@internal@map_helpers:get_field_safe( _pipe@4, shimmer@internal@map_helpers:dyn_key( <<"content"/utf8>> ), gleam@dynamic:optional( fun gleam@dynamic:string/1 ) ) end of {error, _try@4} -> {error, _try@4}; {ok, Content} -> case begin _pipe@5 = Map, shimmer@internal@map_helpers:get_field_safe( _pipe@5, shimmer@internal@map_helpers:dyn_key( <<"timestamp"/utf8>> ), fun gleam@dynamic:string/1 ) end of {error, _try@5} -> {error, _try@5}; {ok, Timestamp} -> {ok, {message, Id, Channel_id, Author, Content, Timestamp}} end end end end end end.