From f07cf83e6b3e25e5957e4c813b50203f970d4f54 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 5 Nov 2021 09:29:02 +0200 Subject: Refactor JSON code --- src/JsonEncode.elm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/JsonEncode.elm (limited to 'src/JsonEncode.elm') diff --git a/src/JsonEncode.elm b/src/JsonEncode.elm new file mode 100644 index 0000000..8356e6f --- /dev/null +++ b/src/JsonEncode.elm @@ -0,0 +1,38 @@ +module JsonEncode exposing (..) + +import Json.Encode exposing (..) +import Json.Encode.Extra exposing (..) +import Time +import Types exposing (Model, Post) + + +composePostEncoder : Model -> Value +composePostEncoder model = + let + imageUrl : Maybe String + imageUrl = + if model.composeImageInputValue /= "" then + Just model.composeImageInputValue + + else + Nothing + in + object + [ ( "content", string model.composeTextInputValue ) + , ( "createdAt", Json.Encode.int <| Time.posixToMillis model.now // 1000 ) + , ( "likes", Json.Encode.int 0 ) + , ( "userPictureUrl", Json.Encode.string model.userData.pictureUrl ) + , ( "imageUrl", maybe Json.Encode.string imageUrl ) + , ( "author" + , Json.Encode.object + [ ( "id", Json.Encode.string model.userData.email ) + , ( "name", Json.Encode.string model.userData.name ) + ] + ) + ] + + +likePostEncoder : Post -> Value +likePostEncoder post = + Json.Encode.object + [ ( "likes", Json.Encode.int (post.likes + 1) ) ] -- cgit v1.3