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) ) ]
|