From 7f0624f112348ded59c39fb6cfe78434c6569519 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Mon, 17 Dec 2018 19:39:37 -0800 Subject: [PATCH] Add http for sending typing indicators. --- src/Main.elm | 1 + src/Scylla/Http.elm | 13 ++++++++++++- src/Scylla/Model.elm | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Main.elm b/src/Main.elm index 93962f7..5647854 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -77,6 +77,7 @@ update msg model = case msg of SendRoomText r -> updateSendRoomText model r SendRoomTextResponse r -> (model, Cmd.none) ReceiveCompletedReadMarker r -> (model, Cmd.none) + ReceiveCompletedTypingIndicator r -> (model, Cmd.none) ReceiveStoreData d -> updateStoreData model d updateStoreData : Model -> Json.Encode.Value -> (Model, Cmd Msg) diff --git a/src/Scylla/Http.elm b/src/Scylla/Http.elm index 5c73203..472cce8 100644 --- a/src/Scylla/Http.elm +++ b/src/Scylla/Http.elm @@ -5,7 +5,7 @@ import Scylla.Route exposing (RoomId) import Scylla.Sync exposing (syncResponseDecoder) import Scylla.Login exposing (loginResponseDecoder, Username, Password) import Scylla.UserData exposing (userDataDecoder, UserData) -import Json.Encode exposing (object, string, int) +import Json.Encode exposing (object, string, int, bool) import Http exposing (request, emptyBody, jsonBody, expectJson, expectWhatever) fullClientUrl : ApiUrl -> ApiUrl @@ -99,3 +99,14 @@ setReadMarkers apiUrl token roomId fullyRead readReceipt = , timeout = Nothing , tracker = Nothing } + +sendTypingIndicator : ApiUrl -> ApiToken -> RoomId -> Username -> Bool -> Int -> Cmd Msg +sendTypingIndicator apiUrl token room user isTyping timeout = request + { method = "PUT" + , headers = authenticatedHeaders token + , url = (fullClientUrl apiUrl) ++ "/rooms/" ++ room ++ "/typing/" ++ user + , body = jsonBody <| object [ ("timeout", int timeout), ("typing", bool isTyping) ] + , expect = expectWhatever ReceiveCompletedTypingIndicator + , timeout = Nothing + , tracker = Nothing + } diff --git a/src/Scylla/Model.elm b/src/Scylla/Model.elm index 791d956..1129930 100644 --- a/src/Scylla/Model.elm +++ b/src/Scylla/Model.elm @@ -47,6 +47,7 @@ type Msg = | ReceiveUserData Username (Result Http.Error UserData) | ReceiveCompletedReadMarker (Result Http.Error ()) | ReceiveStoreData Json.Decode.Value + | ReceiveCompletedTypingIndicator (Result Http.Error ()) -- HTTP, typing indicator request completed displayName : Model -> Username -> String displayName m s = Maybe.withDefault (senderName s) <| Maybe.andThen .displayName <| Dict.get s m.userData