diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php | 4 | ||||
-rw-r--r-- | main/app/sprinkles/core/templates/pages/partials/chat.js.twig | 56 |
2 files changed, 35 insertions, 25 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php index ab306b6..f3793e2 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php +++ b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php @@ -86,6 +86,7 @@ class ChatProcessor implements MessageComponentInterface } } } + break; case "TypingState": if (isset($this->subscriptions[$conn->resourceId])) { $target = $this->subscriptions[$conn->resourceId]; @@ -96,7 +97,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessageType = "TypingState"; $MessageObject->GroupName = $channel; $MessageObject->Username = $this->connectedUsersNames[$conn->resourceId]; - $MessageObject->State = htmlspecialchars($data->State); + $MessageObject->State = $data->State; if ($id === $conn->resourceId) { $MessageObject->WasHimself = true; } else { @@ -107,6 +108,7 @@ class ChatProcessor implements MessageComponentInterface } } } + break; } } diff --git a/main/app/sprinkles/core/templates/pages/partials/chat.js.twig b/main/app/sprinkles/core/templates/pages/partials/chat.js.twig index ed30475..8837183 100644 --- a/main/app/sprinkles/core/templates/pages/partials/chat.js.twig +++ b/main/app/sprinkles/core/templates/pages/partials/chat.js.twig @@ -95,16 +95,19 @@ function InitializeChatServer() { var TranslatedDisconnectMessage = "{{ translate("CHAT_MESSAGES.USER_DISCONNECT", {user: "ConvertTranslatedMessageWithUsername"}) }}".replace("ConvertTranslatedMessageWithUsername", MessageObject.Username); ChatMessages.append("<div class='ServerChatMessage'>" + TranslatedDisconnectMessage + ".</div><br><br>"); } else if (MessageObject.ServerMessageType === "TypingState") { + console.log("received typing"); if (MessageObject.State === true) { if (MessageObject.WasHimself === true) { - console.log("[SERVER REPORT] YOU STARTED TYPING"); + // YOU STARTED TYPING } else if (MessageObject.WasHimself === false) { - console.log("[SERVER REPORT] " + MessageObject.Username + " STARTED TYPING"); + // OTHER STARTED TYPING + console.log("[SERVER REPORT] " + MessageObject.Username + " STOPPED TYPING"); } } else if (MessageObject.State === false) { if (MessageObject.WasHimself === true) { - console.log("[SERVER REPORT] YOU STOPPED TYPING"); + // YOU STOPPED TYPING } else if (MessageObject.WasHimself === false) { + // OTHER STOPPED TYPING console.log("[SERVER REPORT] " + MessageObject.Username + " STOPPED TYPING"); } } @@ -119,29 +122,20 @@ function InitializeChatServer() { } }); - ChatTextInput.keyup(function (e) { - // USER TYPES - var IsTyping = true; + + var typingTimer; + var doneTypingInterval = 2500; + var isTyping = false; + + ChatTextInput.keydown(function () { sendStartTyping(); - var ChatTypeTimeout; - if (ChatTypeTimeout != undefined) clearTimeout(ChatTypeTimeout); - ChatTypeTimeout = setTimeout(sendStopTyping, 2500); - - function sendStartTyping() { - if (IsTyping !== true) { - console.log("[TYPE LOGGER] USER STARTED TYPING"); - sendTypingState(true); - } - IsTyping = true; - } + clearTimeout(typingTimer); + }); - function sendStopTyping() { - if (IsTyping !== false) { - console.log("[TYPE LOGGER] USER STOPPED TYPING"); - sendTypingState(false); - } - IsTyping = false; - } + ChatTextInput.keyup(function (e) { + // TYPING RECOGNITION + clearTimeout(typingTimer); + typingTimer = setTimeout(sendStopTyping, doneTypingInterval); // USER PRESSED ENTER if (e.keyCode === 13 && ChatTextInput.val().length > 0) { @@ -150,6 +144,20 @@ function InitializeChatServer() { } }); + function sendStartTyping() { + if (isTyping === false) { + sendTypingState(true); + isTyping = true; + } + } + + function sendStopTyping() { + if (isTyping === true) { + sendTypingState(false); + isTyping = false; + } + } + function subscribe(channel) { ChatSocket.send(JSON.stringify({ClientMessageType: "Subscribe", Channel: channel})); SubscribeTextInput.hide(); |