From 76eadc17cf9b79d9e4fd187ce44484ab411c0e3f Mon Sep 17 00:00:00 2001 From: Mario Colque Date: Thu, 27 Mar 2014 16:31:42 -0300 Subject: [PATCH] added PeerJS and initial Network service --- index.html | 50 +++++++++++++++++++---- js/app.js | 8 +++- js/config.js | 9 ++++ js/controllers/join.js | 21 ++++++++++ js/controllers/signin.js | 24 +++++++++++ js/services/network.js | 88 ++++++++++++++++++++++++++++++++++++++-- 6 files changed, 188 insertions(+), 12 deletions(-) create mode 100644 js/controllers/join.js create mode 100644 js/controllers/signin.js diff --git a/index.html b/index.html index b9672ef22..74b6215b4 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - cosign - Multisignature Wallet + Cosign - Multisignature Wallet @@ -34,12 +34,42 @@ + + - + + + + + diff --git a/js/app.js b/js/app.js index 824bf8a74..1c433bc3a 100644 --- a/js/app.js +++ b/js/app.js @@ -3,8 +3,14 @@ angular.module('cosign',[ 'ngRoute', 'ui.bootstrap', - 'cosign.header' + 'cosign.header', + 'cosign.signin', + 'cosign.join', + 'cosign.network' ]); angular.module('cosign.header', []); +angular.module('cosign.signin', []); +angular.module('cosign.join', []); +angular.module('cosign.network', []); diff --git a/js/config.js b/js/config.js index d7823a7a6..706e5ad04 100644 --- a/js/config.js +++ b/js/config.js @@ -6,11 +6,20 @@ angular .config(function($routeProvider) { $routeProvider + .when('/', { + templateUrl: 'signin.html' + }) .when('/signin', { templateUrl: 'signin.html' }) .when('/home', { templateUrl: 'home.html' + }) + .when('/join/:id', { + templateUrl: 'join.html' + }) + .otherwise({ + templateUrl: '404.html' }); }); diff --git a/js/controllers/join.js b/js/controllers/join.js new file mode 100644 index 000000000..f73ff6fbb --- /dev/null +++ b/js/controllers/join.js @@ -0,0 +1,21 @@ +'use strict'; + +angular.module('cosign.join').controller('JoinController', + function($scope, $rootScope, $routeParams, Network) { + + $scope.connectionId = $routeParams.id; + $scope.cosigners = []; + + $scope.init = function() { + console.log('-------- init --------'); + console.log($rootScope.peerId); + $scope.cosigners.push($rootScope.peerId); + + Network.connect($scope.connectionId, function(cosigner) { + console.log('----- join connect --------'); + console.log(cosigner); + $scope.cosigners.push(cosigner); + $scope.$digest(); + }); + }; + }); diff --git a/js/controllers/signin.js b/js/controllers/signin.js new file mode 100644 index 000000000..e1d24b16b --- /dev/null +++ b/js/controllers/signin.js @@ -0,0 +1,24 @@ +'use strict'; + +angular.module('cosign.signin').controller('SigninController', + function($scope, $rootScope, $location, Network) { + $rootScope.peerId = null; + $scope.peerReady = false; + + // Init peer + Network.init(function(pid) { + $rootScope.peerId = pid; + $rootScope.$digest(); + + $scope.peerReady = true; + $scope.$digest(); + }); + + $scope.join = function(cid) { + console.log('------- join --------'); + console.log(cid); + + var pid = cid || $rootScope.peerId; + $location.path('join/' + pid); + }; + }); diff --git a/js/services/network.js b/js/services/network.js index 52b0edc2e..d0c7bca4d 100644 --- a/js/services/network.js +++ b/js/services/network.js @@ -1,8 +1,90 @@ 'use strict'; -angular.module('cosign.network').factory('Network', - function() { +angular.module('cosign.network') + .factory('NetworkTest', function() { this.f = function() { return 2; }; -}); + }) + .factory('Network', function() { + var peer; + var connectedPeers = {}; + + var _onConnect = function(c, cb) { + if (c.label === 'wallet') { + var a = peer.connections[c.peer][0]; + console.log(peer.connections[c.peer]); + a.send('------ origin recived -------'); + + c.on('data', function(data) { + console.log('------ new data ------'); + console.log(data); + + + console.log(peer.connections); + + + c.on('close', function() { + alert(c.peer + ' has left the wallet.'); + delete connectedPeers[c.peer]; + }); + }); + + setTimeout(function() { + a.send('.........................'); + cb(c.peer); + }, 1000); + } + }; + + var _init = function(cb) { + peer = new Peer({ + key: 'lwjd5qra8257b9', + debug: 3 + }); + + peer.on('open', cb); + }; + + var _connect = function(pid, cb) { + peer.on('connection', function(conn) { + _onConnect(conn, cb); + }); + + var c = peer.connect(pid, { + label: 'wallet', + serialization: 'none', + reliable: false, + metadata: { message: 'hi! cosigners' } + }); + + c.on('open', function() { + c.send('-------oopen-------'); + }); + + c.on('data', function(data) { + if (data) + console.log(data); + }); + + c.on('error', function(err) { + console.error(err); + }); + }; + + var _sendTo = function(pid, data) { + if (typeof pids === 'string') { + // just send + } else if (typeof pids === 'array') { + // iter + } + console.log(data); + }; + + return { + init: _init, + connect: _connect, + sendTo: _sendTo + } + }); +