| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- define [
- "base"
- ], (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) ->
- if messages?
- console.log "grouping messages"
- $scope.chat.groupedMessages = groupMessages(messages)
- $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
- ]
|