Add the ability to replay transcripts of chat logs.
This commit is contained in:
parent
09457d8461
commit
218000551d
2
.gitignore
vendored
2
.gitignore
vendored
@ -11,6 +11,8 @@
|
||||
analytics.js
|
||||
.idea
|
||||
|
||||
converse-logs/*.html
|
||||
|
||||
# Ruby/Sass/Bundler
|
||||
.bundle
|
||||
.sass-cache
|
||||
|
5
converse-logs/converse-logs.js
Normal file
5
converse-logs/converse-logs.js
Normal file
@ -0,0 +1,5 @@
|
||||
define("transcripts", [
|
||||
"tpl!converse-logs/conversejs.containers-1460718487729",
|
||||
], function () {
|
||||
return arguments;
|
||||
});
|
76
spec/transcripts.js
Normal file
76
spec/transcripts.js
Normal file
@ -0,0 +1,76 @@
|
||||
/*global converse */
|
||||
(function (root, factory) {
|
||||
define([
|
||||
"jquery",
|
||||
"underscore",
|
||||
"mock",
|
||||
"test_utils",
|
||||
"utils",
|
||||
"transcripts"
|
||||
], factory
|
||||
);
|
||||
} (this, function ($, _, mock, test_utils, utils, transcripts) {
|
||||
var Strophe = converse_api.env.Strophe;
|
||||
var IGNORED_TAGS = [
|
||||
'stream:features',
|
||||
'auth',
|
||||
'challenge',
|
||||
'success',
|
||||
'stream:features',
|
||||
'response'
|
||||
];
|
||||
|
||||
function traverseElement (el, _stanza) {
|
||||
if (typeof _stanza !== 'undefined') {
|
||||
if (el.nodeType === 3) {
|
||||
_stanza.t(el.nodeValue);
|
||||
return _stanza;
|
||||
} else {
|
||||
_stanza = _stanza.c(el.nodeName.toLowerCase(), getAttributes(el));
|
||||
}
|
||||
} else {
|
||||
_stanza = new Strophe.Builder(
|
||||
el.nodeName.toLowerCase(),
|
||||
getAttributes(el)
|
||||
);
|
||||
}
|
||||
_.each(el.childNodes, _.partial(traverseElement, _, _stanza));
|
||||
return _stanza.up();
|
||||
}
|
||||
|
||||
function getAttributes (el) {
|
||||
var attributes = {};
|
||||
_.each(el.attributes, function (att) {
|
||||
attributes[att.nodeName] = att.nodeValue;
|
||||
});
|
||||
return attributes;
|
||||
}
|
||||
|
||||
return describe("Transcripts of chat logs", function () {
|
||||
beforeEach(function () {
|
||||
test_utils.openChatRoom("discuss", 'conference.conversejs.org', 'jc');
|
||||
test_utils.openChatRoom("dummy", 'rooms.localhost', 'jc');
|
||||
test_utils.openChatRoom("prosody", 'conference.prosody.im', 'jc');
|
||||
});
|
||||
|
||||
it("can be used to replay conversations", function () {
|
||||
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
||||
_.each(transcripts, function (transcript) {
|
||||
var text = transcript();
|
||||
var xml = Strophe.xmlHtmlNode(text);
|
||||
$(xml).children('log').children('body').each(function (i, el) {
|
||||
$(el).children().each(function (i, el) {
|
||||
if (el.nodeType === 3) {
|
||||
return; // Ignore text
|
||||
}
|
||||
if (_.contains(IGNORED_TAGS, el.nodeName.toLowerCase())) {
|
||||
return;
|
||||
}
|
||||
var _stanza = traverseElement(el);
|
||||
converse.connection._dataRecv(test_utils.createRequest(_stanza));
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}));
|
@ -1567,8 +1567,8 @@
|
||||
|
||||
this.setUpXMLLogging = function () {
|
||||
if (this.debug) {
|
||||
this.connection.xmlInput = function (body) { converse.log(body); };
|
||||
this.connection.xmlOutput = function (body) { converse.log(body); };
|
||||
this.connection.xmlInput = function (body) { converse.log(body.outerHTML); };
|
||||
this.connection.xmlOutput = function (body) { converse.log(body.outerHTML); };
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user