|  | @@ -0,0 +1,73 @@
 | 
											
												
													
														|  | 
 |  | +angular.module('tabooServices', [])
 | 
											
												
													
														|  | 
 |  | +.factory('connectionService', function($rootScope) {
 | 
											
												
													
														|  | 
 |  | +  var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket;
 | 
											
												
													
														|  | 
 |  | +  var chatSocket = null;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  var service = {
 | 
											
												
													
														|  | 
 |  | +    username: '',
 | 
											
												
													
														|  | 
 |  | +    messages: [],
 | 
											
												
													
														|  | 
 |  | +    members: [],
 | 
											
												
													
														|  | 
 |  | +    error: null,
 | 
											
												
													
														|  | 
 |  | +    isConnected: function() {
 | 
											
												
													
														|  | 
 |  | +      return this.username != '';
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +  };
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  service.connect = function(username) {
 | 
											
												
													
														|  | 
 |  | +    chatSocket = new WS(jsRoutes.controllers.Application.chat(username).webSocketURL());
 | 
											
												
													
														|  | 
 |  | +    chatSocket.onmessage = onEvent;
 | 
											
												
													
														|  | 
 |  | +    service.username = username;
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  service.disconnect = function() {
 | 
											
												
													
														|  | 
 |  | +    service.username = '';
 | 
											
												
													
														|  | 
 |  | +    service.messages = [];
 | 
											
												
													
														|  | 
 |  | +    service.members = [];
 | 
											
												
													
														|  | 
 |  | +    chatSocket.close();
 | 
											
												
													
														|  | 
 |  | +    chatSocket = null;
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  service.send = function(message) {
 | 
											
												
													
														|  | 
 |  | +    chatSocket.send(JSON.stringify({text: message}));
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  function onEvent(event) {
 | 
											
												
													
														|  | 
 |  | +    var message = JSON.parse(event.data);
 | 
											
												
													
														|  | 
 |  | +    if(message.error) {
 | 
											
												
													
														|  | 
 |  | +      service.error = message;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    else {
 | 
											
												
													
														|  | 
 |  | +      service.messages.push(message);
 | 
											
												
													
														|  | 
 |  | +      service.members = message.members;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    $rootScope.$apply();
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  return service;
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +angular.module('taboo', ['tabooServices']);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +function partial(template) {
 | 
											
												
													
														|  | 
 |  | +  return jsRoutes.controllers.Assets.at('partials/'+template+'.html').url;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +function ViewCtrl($scope) {
 | 
											
												
													
														|  | 
 |  | +  $scope.partial = partial;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +function LoginCtrl($scope, connectionService) {
 | 
											
												
													
														|  | 
 |  | +  $scope.service = connectionService;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +function ChatCtrl($scope, connectionService) {
 | 
											
												
													
														|  | 
 |  | +  $scope.service = connectionService;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  $scope.onType = function(event) {
 | 
											
												
													
														|  | 
 |  | +    if(event.keyCode == 13) {
 | 
											
												
													
														|  | 
 |  | +      connectionService.send($scope.text);
 | 
											
												
													
														|  | 
 |  | +      $scope.text = '';
 | 
											
												
													
														|  | 
 |  | +      event.originalEvent.preventDefault();
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +}
 |