Sync initial lines

This commit is contained in:
Tor Hveem 2013-10-06 20:20:34 +02:00
parent 6455256b9e
commit 7230e7a3ee
1 changed files with 51 additions and 15 deletions

View File

@ -272,20 +272,20 @@ weechat.factory('handlers', ['$rootScope', 'colors', 'pluginManager', function($
$rootScope.closeBuffer(buffer_pointer);
}
var handleBufferLineAdded = function(message) {
var handleLine = function(line) {
var buffer_line = {}
var date = message['objects'][0]['content'][0]['date'];
var date = line['date'];
date = new Date(parseInt(date, 10) * 1000);
var datestring = date.getHours().pad(2) + ':' + date.getMinutes().pad(2);
var prefix = colors.parse(message['objects'][0]['content'][0]['prefix']);
var text = colors.parse(message['objects'][0]['content'][0]['message']);
var buffer = message['objects'][0]['content'][0]['buffer'];
var tags_array = message['objects'][0]['content'][0]['tags_array'];
var displayed = message['objects'][0]['content'][0]['displayed'];
var highlight = message['objects'][0]['content'][0]['highlight'];
var prefix = colors.parse(line['prefix']);
var text = colors.parse(line['message']);
var buffer = line['buffer'];
var tags_array = line['tags_array'];
var displayed = line['displayed'];
var highlight = line['highlight'];
var message = _.union(prefix, text);
message =_.map(message, function(message) {
if ('fg' in message) {
if (message != "" && 'fg' in message) {
message['fg'] = colors.prepareCss(message['fg']);
}
return message;
@ -299,23 +299,30 @@ weechat.factory('handlers', ['$rootScope', 'colors', 'pluginManager', function($
$rootScope.buffers[buffer]['notification'] = true;
}
var additionalContent = pluginManager.contentForMessage(text[0]['text']);
if (text[0] != undefined) {
var additionalContent = pluginManager.contentForMessage(text[0]['text']);
if (additionalContent) {
buffer_line['metadata'] = additionalContent;
if (additionalContent) {
buffer_line['metadata'] = additionalContent;
}
}
$rootScope.buffers[buffer]['lines'].push(buffer_line);
buffer_line['date'] = datestring;
if(highlight || _.contains(tags_array, 'notify_private')) {
$rootScope.createHighlight(prefix, text, message, buffer, additionalContent);
}
}
}
var handleBufferLineAdded = function(message) {
message['objects'][0]['content'].forEach(function(l) {
handleLine(l);
});
}
/*
* Returns whether or not this buffer is the active buffer
*/
@ -358,6 +365,22 @@ weechat.factory('handlers', ['$rootScope', 'colors', 'pluginManager', function($
}
}
$rootScope.buffers = buffers;
// Request latest buffer lines for each buffer
$rootScope.getLines();
}
/*
* Handle answers to (lineinfo) messages
*
* (lineinfo) messages are specified by this client. It is request after bufinfo completes
*/
var handleLineInfo = function(message) {
var lines = message['objects'][0]['content'].reverse();
lines.forEach(function(l) {
handleLine(l);
});
}
var handleEvent = function(event) {
@ -378,6 +401,7 @@ weechat.factory('handlers', ['$rootScope', 'colors', 'pluginManager', function($
var eventHandlers = {
bufinfo: handleBufferInfo,
lineinfo: handleLineInfo,
_buffer_closing: handleBufferClosing,
_buffer_line_added: handleBufferLineAdded,
_buffer_opened: handleBufferOpened
@ -457,7 +481,14 @@ weechat.factory('connection', ['$rootScope', '$log', 'handlers', 'colors', funct
doSend(message);
}
var getLines = function(count) {
var message = "(lineinfo) hdata buffer:gui_buffers(*)/own_lines/last_line(-"+count+")/data\n";
doSend(message)
}
return {
send: doSend,
getLines: getLines,
connect: connect,
sendMessage: sendMessage
}
@ -509,13 +540,18 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', 'connection
$scope.connect = function() {
connection.connect($scope.hostport, $scope.proto, $scope.password);
}
$rootScope.getLines = function() {
var count = 20;
connection.getLines(20);
}
/* Function gets called from bufferLineAdded code if user should be notified */
$rootScope.createHighlight = function(prefix, text, message, buffer, additionalContent) {
var prefixs = "";
prefixs += prefix[0].text;
prefixs += prefix[1].text;
if(prefix[1] != undefined) {
prefixs += prefix[1].text;
}
var messages = "";
messages += text[0].text;