diff --git a/index.html b/index.html index d156ed0..d755d39 100644 --- a/index.html +++ b/index.html @@ -247,7 +247,7 @@ $ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out rel
diff --git a/js/models.js b/js/models.js index 807ca8e..3f88c31 100644 --- a/js/models.js +++ b/js/models.js @@ -323,12 +323,27 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter) * Deactivates the previous current buffer. * * @param bufferId id of the new active buffer - * @return undefined + * @return true on success, false if buffer was not found */ - this.setActiveBuffer = function(bufferId) { + this.setActiveBuffer = function(bufferId, key) { + if (typeof(key) === 'undefined') { + key = 'id'; + } var previousBuffer = this.getActiveBuffer(); + activeBuffer = _.find(this.model['buffers'], function(buffer) { + if (buffer[key] == bufferId) { + return buffer; + } + }); + + if (typeof(activeBuffer) === 'undefined') { + // Buffer not found, undo assignment + activeBuffer = previousBuffer; + return false; + } + if (previousBuffer) { // turn off the active status for the previous buffer previousBuffer.active = false; @@ -336,18 +351,13 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter) previousBuffer.lastSeen = previousBuffer.lines.length-1; } - activeBuffer = _.find(this.model['buffers'], function(buffer) { - if (buffer['id'] == bufferId) { - return buffer; - } - }); - activeBuffer.active = true; activeBuffer.unread = 0; activeBuffer.notification = 0; $rootScope.$emit('activeBufferChanged'); $rootScope.$emit('notificationChanged'); + return true; } /* diff --git a/js/websockets.js b/js/websockets.js index 45aef57..8b65b5c 100644 --- a/js/websockets.js +++ b/js/websockets.js @@ -63,6 +63,11 @@ weechat.factory('handlers', ['$rootScope', 'models', 'plugins', function($rootSc var bufferMessage = message['objects'][0]['content'][0]; var buffer = new models.Buffer(bufferMessage); models.addBuffer(buffer); + if ($rootScope.waitForQueryWindow === buffer.fullName) { + // We're waiting for a query window + models.setActiveBuffer(buffer.id); + $rootScope.waitForQueryWindow = ""; + } } var handleBufferTitleChanged = function(message) { @@ -540,10 +545,20 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', $rootScope.predicate = $scope.orderbyserver ? 'serverSortKey' : 'number'; - $scope.setActiveBuffer = function(key) { - models.setActiveBuffer(key); + $scope.setActiveBuffer = function(bufferId, key) { + return models.setActiveBuffer(bufferId, key); }; + $scope.openQuery = function(nick) { + var buffName = models.getActiveBuffer()['fullName']; + buffName = buffName.substring(0, buffName.lastIndexOf('.')) + '.' + nick; + + if (!$scope.setActiveBuffer(buffName, 'fullName')) { + $rootScope.waitForQueryWindow = buffName; + connection.sendMessage('/query ' + nick); + } + } + $rootScope.scrollToBottom = function() { // FIXME doesn't work if the settimeout runs without a short delay var scroll = function() {