Working connect/disconnect handlers and status indicator

This commit is contained in:
AlexKvazos
2015-04-28 11:19:36 -05:00
parent 542ae1f549
commit 793fe3e162
7 changed files with 55 additions and 10 deletions
@@ -13,9 +13,4 @@ module.exports = function($scope, socket, buffer) {
buffer.append('---'); buffer.append('---');
buffer.append('<br>'); buffer.append('<br>');
// buffer errors when received
socket.on('bot:error', function(error) {
buffer.error(error);
});
}; };
+1
View File
@@ -7,5 +7,6 @@ exports.register = function(app) {
app.controller('connectController', require('./connectController')); app.controller('connectController', require('./connectController'));
app.controller('bufferController', require('./bufferController')); app.controller('bufferController', require('./bufferController'));
app.controller('chatController', require('./chatController')); app.controller('chatController', require('./chatController'));
app.controller('navController', require('./navController'));
}; };
+30
View File
@@ -0,0 +1,30 @@
/**
* Connect Controller
*/
module.exports = function($scope, socket) {
$scope.connected = false;
socket.on('bot:connect', function(data) {
$scope.$apply(function() {
$scope.host = data.host;
$scope.port = data.port;
$scope.username = data.username;
$scope.connected = true;
});
});
socket.on('bot:disconnect', function() {
$scope.$apply(function() {
$scope.connected = false;
});
})
socket.on('disconnect', function() {
$scope.$apply(function() {
$scope.connected = false;
});
});
};
+1 -1
View File
@@ -15,7 +15,7 @@ module.exports = function(socket) {
}); });
socket.on('buffer:error', function(string) { socket.on('buffer:error', function(string) {
$('#buffer').append('<span style="color:#D62D18;">[i] ' + error + '</span><br>') $('#buffer').append('<span style="color:#D62D18;">[i] ' + string + '</span><br>')
$('#buffer').scrollTop($('#buffer').prop('scrollHeight')); $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
}); });
+16 -2
View File
@@ -30,7 +30,11 @@ module.exports = function(socket) {
// login event // login event
bot.on('login', function() { bot.on('login', function() {
socket.emit('buffer:success', 'Successfully logged in as ' + bot.username + ' with entity id ' + bot.entity.id); socket.emit('buffer:success', 'Successfully logged in as ' + bot.username + ' with entity id ' + bot.entity.id);
socket.emit('bot:login') socket.emit('bot:connect', {
host: socket.connectionParams.hostname,
port: socket.connectionParams.port,
username: socket.connectionParams.username
});
}); });
// spawn event // spawn event
@@ -69,7 +73,7 @@ module.exports = function(socket) {
// format the buffer with the correct coloring // format the buffer with the correct coloring
buffer = buffer.replace(/§([0-9abcdef])([^§]*)/ig, function replace(regex, color, msg) { buffer = buffer.replace(/§([0-9abcdef])([^§]*)/ig, function replace(regex, color, msg) {
return '<span class="color-'+color+'">'+msg+'</span>'; return '<span class="color-'+color+'">'+msg.replace(' ', '&nbsp;')+'</span>';
}); });
// send line back to the client // send line back to the client
@@ -77,4 +81,14 @@ module.exports = function(socket) {
}); });
bot.on('end', function() {
socket.emit('buffer:error', 'Connection lost...');
socket.emit('bot:disconnect');
});
bot.on('kick', function(reason) {
console.log(reason);
socket.emit('buffer:error', 'Kicked for: ' + reason);
});
}; };
+4
View File
@@ -16,9 +16,13 @@ module.exports = function(socket) {
password: data.password password: data.password
}); });
// store connection params in socket
socket.connectionParams = data;
// prepare for errors // prepare for errors
socket.mcbot.on('error', function(error) { socket.mcbot.on('error', function(error) {
socket.emit('buffer:error', error); socket.emit('buffer:error', error);
socket.mcbot = null;
}); });
// bind bot events // bind bot events
+3 -2
View File
@@ -1,10 +1,11 @@
<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <nav class="navbar navbar-default navbar-fixed-top" role="navigation" ng-controller="navController">
<a class="navbar-brand" href="/">Minecraft Chat</a> <a class="navbar-brand" href="/">Minecraft Chat</a>
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a style="cursor:pointer" data-toggle="modal" data-target="#connectModal">Connect</a></li> <li><a style="cursor:pointer" data-toggle="modal" data-target="#connectModal">Connect</a></li>
</ul> </ul>
<ul class="nav navbar-nav pull-right"> <ul class="nav navbar-nav pull-right">
<li><a style="color:#9E0F06">Not Connected</a></li> <li ng-hide="connected"><a style="color:#9E0F06">Not Connected</a></li>
<li ng-show="connected"><a style="color:#6AC126">Connected to <i>{{host}}:{{port}}</i> as <b>{{username}}</b></a></li>
</ul> </ul>
</nav> </nav>