module ArrayBased.PostCellUpdate exposing (..) import Http import Json.Decode as Decode import Json.Encode as Encode import Json.Decode.Pipeline exposing (required, optional, decode) import ArrayBased.Messages as Messages import ArrayBased.Model exposing (..) postCellUpdate : String -> CellUpdate -> Cmd Messages.Msg postCellUpdate url cellUpdate = let request = Http.post url (Http.jsonBody (encodeCellUpdate cellUpdate)) postReplyDecoder in Http.send Messages.RecievePostNotification request encodeCellUpdate : CellUpdate -> Encode.Value encodeCellUpdate cellUpdate = Encode.object [ ( "rowId", Encode.string cellUpdate.rowId ) , ( "columnId", Encode.string cellUpdate.columnId ) , ( "value", Encode.string cellUpdate.value ) , ( "remoteId", Encode.string cellUpdate.remoteId ) , ( "isBoolUpdate", Encode.bool cellUpdate.isBoolUpdate ) , ( "boolValue", Encode.bool cellUpdate.boolValue ) , ( "isMultiUpdate", Encode.bool cellUpdate.isMultiUpdate ) ] postReplyDecoder : Decode.Decoder PostReply postReplyDecoder = decode PostReply |> optional "updates" (Decode.list updateDecoder) [] |> required "status" Decode.string updateDecoder : Decode.Decoder PostReplyUpdate updateDecoder = decode PostReplyUpdate |> required "rowId" Decode.string |> required "columnId" Decode.int |> required "value" Decode.string