Merge pull request #710 from glowing-bear/weechatconf

fetch weechat configuration variables
This commit is contained in:
Lorenz Hübschle-Schneider 2015-12-18 10:05:19 +01:00
commit 8b045049ce
4 changed files with 98 additions and 4 deletions

View file

@ -99,7 +99,7 @@ weechat.factory('connection',
$log.info("Connected to relay");
$rootScope.connected = true;
},
function(e) {
function() {
handleWrongPassword();
}
);
@ -306,6 +306,17 @@ weechat.factory('connection',
});
};
var fetchConfValue = function(name) {
ngWebsockets.send(
weeChat.Protocol.formatInfolist({
name: "option",
pointer: 0,
args: name
})
).then(function(i) {
handlers.handleConfValue(i);
});
};
var fetchMoreLines = function(numLines) {
$log.debug('Fetching ', numLines, ' lines');

View file

@ -13,6 +13,27 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
models.version = version.split(".").map(function(c) { return parseInt(c); });
};
var handleConfValue = function(message) {
var infolist = message.objects[0].content;
for (var i = 0; i < infolist.length ; i++) {
var key, val;
var item = infolist[i];
for (var j = 0; j < item.length ; j++) {
var confitem = item[j];
if (confitem.full_name) {
key = confitem.full_name;
}
if (confitem.value) {
val = confitem.value;
}
}
if (key && val) {
$log.debug('Setting wconfig "' + key + '" to value "' + val + '"');
models.wconfig[key] = val;
}
}
};
var handleBufferClosing = function(message) {
var bufferMessage = message.objects[0].content[0];
var bufferId = bufferMessage.pointers[0];
@ -393,6 +414,7 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
return {
handleVersionInfo: handleVersionInfo,
handleConfValue: handleConfValue,
handleEvent: handleEvent,
handleLineInfo: handleLineInfo,
handleHotlistInfo: handleHotlistInfo,

View file

@ -11,6 +11,9 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
// WeeChat version
this.version = null;
// WeeChat configuration values
this.wconfig = {};
// Save outgoing queries
this.outgoingQueries = [];

View file

@ -23,9 +23,7 @@
'buf': this._getString,
'arr': this._getArray,
'htb': this._getHashTable,
'inl': function() {
this._warnUnimplemented('infolist');
}
'inl': this._getInfolist,
};
// string value for some object types
@ -699,6 +697,37 @@
return WeeChatProtocol._formatCmd(params.id, 'info', parts);
};
/**
* Formats an infolist command.
*
* @param params Parameters:
* id: command ID (optional)
* name: infolist name (mandatory)
* pointer: optional
* arguments: optional
* @return Formatted infolist command string
*/
WeeChatProtocol.formatInfolist = function(params) {
var defaultParams = {
id: null,
pointer: null,
args: null
};
var parts = [];
params = WeeChatProtocol._mergeParams(defaultParams, params);
parts.push(params.name);
if (params.pointer !== null) {
parts.push(params.pointer);
}
if (params.pointer !== null) {
parts.push(params.args);
}
return WeeChatProtocol._formatCmd(params.id, 'infolist', parts);
};
/**
* Formats a nicklist command.
*
@ -1143,6 +1172,35 @@
return values;
},
/**
* Reads an infolist object from the current set of data
*
* @return Array
*/
_getInfolist: function() {
var self = this;
var name;
var count;
var values;
name = this._getString();
count = this._getInt();
values = [];
for (var i = 0; i < count; i++) {
var itemcount = self._getInt();
var litem = [];
for (var j = 0; j < itemcount; j++) {
var item = {};
item[self._getString()] = self._runType(self._getType());
litem.push(item);
}
values.push(litem);
}
return values;
},
/**
* Reads a specified number of bytes from current set data.
*