summaryrefslogtreecommitdiffstats
path: root/src/JsonEncode.elm
blob: 8356e6f0fc656a649a67b485cb4e99c7b77a4d40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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) ) ]