chat-controller.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import App from '../../../base'
  2. import { react2angular } from 'react2angular'
  3. import ChatPane from '../components/chat-pane'
  4. App.controller('ReactChatController', function($scope, chatMessages, ide) {
  5. ide.$scope.$on('chat:more-messages-loaded', onMoreMessagesLoaded)
  6. function onMoreMessagesLoaded(e, chat) {
  7. ide.$scope.$applyAsync(() => {
  8. $scope.atEnd = chatMessages.state.atEnd
  9. $scope.loading = chat.state.loading
  10. $scope.messages = chat.state.messages.slice(0) // passing a new reference to trigger a prop update on react
  11. })
  12. }
  13. ide.$scope.$on('chat:more-messages-loading', onMoreMessagesLoading)
  14. function onMoreMessagesLoading(e, chat) {
  15. ide.$scope.$applyAsync(() => {
  16. $scope.loading = true
  17. })
  18. }
  19. function sendMessage(message) {
  20. if (message) {
  21. chatMessages.sendMessage(message)
  22. ide.$scope.$broadcast('chat:newMessage', message)
  23. }
  24. }
  25. function resetUnreadMessages() {
  26. ide.$scope.$broadcast('chat:resetUnreadMessages')
  27. }
  28. $scope.atEnd = chatMessages.state.atEnd
  29. $scope.loading = chatMessages.state.loading
  30. $scope.loadMoreMessages = chatMessages.loadMoreMessages
  31. $scope.messages = chatMessages.state.messages
  32. $scope.resetUnreadMessages = resetUnreadMessages
  33. $scope.sendMessage = sendMessage
  34. $scope.userId = ide.$scope.user.id
  35. })
  36. App.component('chat', react2angular(ChatPane))