|
|
@@ -1,48 +1,25 @@
|
|
|
define [
|
|
|
"base"
|
|
|
+ "ide/chat/services/chatMessages"
|
|
|
], (App) ->
|
|
|
- App.controller "ChatController", ["$scope", "$http", "ide", "$location", ($scope, $http, @ide, $location) ->
|
|
|
- MESSAGES_URL = "/project/#{$scope.project_id}/messages"
|
|
|
- CONNECTED_USER_URL = "/project/#{$scope.project_id}/connected_users"
|
|
|
-
|
|
|
- $scope.$on "project:joined", =>
|
|
|
- @ide.socket.on "new-chat-message", (message) =>
|
|
|
- $scope.chat.messages.push(message)
|
|
|
-
|
|
|
- $http.get(MESSAGES_URL).success (data, status, headers, config)->
|
|
|
- $scope.chat.messages = data
|
|
|
-
|
|
|
- $http.get(CONNECTED_USER_URL).success (data)->
|
|
|
- console.log data
|
|
|
-
|
|
|
- $scope.$watchCollection "chat.messages", (messages) ->
|
|
|
+ App.controller "ChatController", ($scope, chatMessages, @ide, $location) ->
|
|
|
+ $scope.chat = chatMessages.state
|
|
|
+
|
|
|
+ $scope.$watch "chat.messages", (messages) ->
|
|
|
if messages?
|
|
|
- console.log "grouping messages"
|
|
|
- $scope.chat.groupedMessages = groupMessages(messages)
|
|
|
-
|
|
|
+ $scope.$emit "updateScrollPosition"
|
|
|
+ , true # Deep watch
|
|
|
+
|
|
|
+ $scope.$on "layout:chat:resize", () ->
|
|
|
+ $scope.$emit "updateScrollPosition"
|
|
|
+
|
|
|
$scope.sendMessage = ->
|
|
|
- body =
|
|
|
- content:$scope.newMessageContent
|
|
|
- _csrf : window.csrfToken
|
|
|
- $http.post(MESSAGES_URL, body).success (data, status, headers, config)->
|
|
|
- $scope.newMessageContent = ""
|
|
|
-
|
|
|
- TIMESTAMP_GROUP_SIZE = 5 * 60 * 1000 # 5 minutes
|
|
|
- groupMessages = (messages) ->
|
|
|
- previousMessage = null
|
|
|
- groupedMessages = []
|
|
|
- for message in messages
|
|
|
- shouldGroup = previousMessage? and
|
|
|
- previousMessage.user == message.user and
|
|
|
- message.timestamp - previousMessage.timestamp < TIMESTAMP_GROUP_SIZE
|
|
|
- if shouldGroup
|
|
|
- previousMessage.timestamp = message.timestamp
|
|
|
- previousMessage.contents.push message.content
|
|
|
- else
|
|
|
- groupedMessages.push(previousMessage = {
|
|
|
- user: message.user
|
|
|
- timestamp: message.timestamp
|
|
|
- contents: [message.content]
|
|
|
- })
|
|
|
- return groupedMessages
|
|
|
- ]
|
|
|
+ chatMessages
|
|
|
+ .sendMessage $scope.newMessageContent
|
|
|
+ .then () ->
|
|
|
+ $scope.newMessageContent = ""
|
|
|
+
|
|
|
+ $scope.loadMoreMessages = ->
|
|
|
+ chatMessages.loadMoreMessages()
|
|
|
+
|
|
|
+
|