summaryrefslogtreecommitdiffstats
path: root/src/JsonEncode.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/JsonEncode.elm')
-rw-r--r--src/JsonEncode.elm38
1 files changed, 38 insertions, 0 deletions
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) ) ]