ChatButtonController.coffee 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. define [
  2. "base"
  3. ], (App) ->
  4. App.controller "ChatButtonController", ($scope, ide) ->
  5. $scope.toggleChat = () ->
  6. $scope.ui.chatOpen = !$scope.ui.chatOpen
  7. $scope.resetUnreadMessages()
  8. $scope.unreadMessages = 0
  9. $scope.resetUnreadMessages = () ->
  10. $scope.unreadMessages = 0
  11. $scope.$on "chat:resetUnreadMessages", (e) ->
  12. $scope.resetUnreadMessages()
  13. $scope.$on "chat:newMessage", (e, message) ->
  14. if message?
  15. if message?.user?.id != ide.$scope.user.id
  16. if !$scope.ui.chatOpen
  17. $scope.unreadMessages += 1
  18. flashTitle()
  19. focussed = true
  20. newMessageNotificationTimeout = null
  21. originalTitle = null
  22. $(window).on "focus", () ->
  23. clearNewMessageNotification()
  24. focussed = true
  25. $(window).on "blur", () ->
  26. focussed = false
  27. flashTitle = () ->
  28. if !focussed and !newMessageNotificationTimeout?
  29. originalTitle ||= window.document.title
  30. do changeTitle = () =>
  31. if window.document.title == originalTitle
  32. window.document.title = "New Message"
  33. else
  34. window.document.title = originalTitle
  35. newMessageNotificationTimeout = setTimeout changeTitle, 800
  36. clearNewMessageNotification = () ->
  37. clearTimeout newMessageNotificationTimeout
  38. newMessageNotificationTimeout = null
  39. if originalTitle?
  40. window.document.title = originalTitle