Disable OTR and add code for adding the toolbar button.

This commit is contained in:
JC Brand 2018-05-11 22:05:45 +02:00
parent 039f30a5d3
commit bfc246d9c7
4 changed files with 45 additions and 16 deletions

View File

@ -10,7 +10,6 @@
<meta name="keywords" content="xmpp chat webchat converse.js" />
<link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
<link type="text/css" rel="stylesheet" media="screen" href="css/inverse.css" />
<script src="3rdparty/libsignal-protocol-javascript/dist/libsignal-protocol.js"/>
<script src="node_modules/requirejs/require.js"></script>
<script src="src/config.js"></script>
</head>
@ -18,7 +17,7 @@
<body class="reset">
<script>
require(['converse'], function (converse) {
require(['converse', 'converse-omemo'], function (converse) {
converse.initialize({
auto_away: 300,
i18n: 'en',
@ -34,8 +33,8 @@
notify_all_room_messages: [
'discuss@conference.conversejs.org'
],
// bosh_service_url: 'http://chat.example.org:5280/http-bind/',
bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
bosh_service_url: 'http://chat.example.org:5280/http-bind/',
// bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
message_archiving: 'always',
debug: true
});

View File

@ -89,7 +89,7 @@
'converse-muc',
'converse-muc-views',
'converse-notification',
'converse-otr',
'converse-omemo',
'converse-ping',
'converse-profile',
'converse-register',

View File

@ -23,18 +23,44 @@
const TRUSTED = 1;
const UNTRUSTED = -1;
function contactHasOMEMOSupport (_converse, contact_jid) {
return new Promise((resolve, reject) => {
_converse.api.waitUntil('OMEMOInitialized', () => {
resolve(_converse.devicelists.get(contact_jid).devices.length > 0);
});
});
}
function serverHasOMEMOSupport (_converse) {
return new Promise((resolve, reject) => {
_converse.api.disco.getIdentity('pubsub', 'pep').then((identity) => resolve(!_.isNil(identity)))
});
}
converse.plugins.add('converse-omemo', {
enabled (_converse) {
return !_.isNil(window.libsignal);
},
overrides: {
ChatBoxView: {
addOMEMOToolbarButton (options) {
const { _converse } = this.__super__,
{ __ } = _converse,
data = this.model.toJSON();
this.el.querySelector('.chat-toolbar').insertAdjacentHTML(
'beforeend',
tpl_toolbar_omemo({'__': __}));
const { _converse } = this.__super__;
Promise.all([
contactHasOMEMOSupport(_converse, this.model.get('jid')),
serverHasOMEMOSupport(_converse)
]).then((client_support, server_support) => {
debugger;
if (client_support && server_support) {
this.el.querySelector('.chat-toolbar').insertAdjacentHTML(
'beforeend',
tpl_toolbar_omemo({'__': __}));
}
}, _.partial(_converse.log, _, Strophe.LogLevel.ERROR));
},
renderToolbar (toolbar, options) {
@ -51,10 +77,13 @@
*/
const { _converse } = this;
_converse.api.promises.add(['OMEMOInitialized']);
_converse.OMEMOSession = Backbone.Model.extend({
initialize () {
this.keyhelper = libsignal.KeyHelper;
this.keyhelper = window.libsignal.KeyHelper;
},
fetchSession () {
@ -62,7 +91,7 @@
this.fetch({
'success': () => {
if (!_converse.omemo_session.get('registration_id')) {
this.keyhelper.generateIdentityKeyPair().then(function (keypair) {
this.keyhelper.generateIdentityKeyPair().then((keypair) => {
_converse.omemo_session.set({
'registration_id': this.keyhelper.generateRegistrationId(),
'pub_key': keypair.pubKey,
@ -141,6 +170,7 @@
*/
// TODO:
const devicelist = _converse.devicelists.get(_converse.bare_jid);
return Promise.resolve();
}
function updateDevicesFromStanza (stanza) {
@ -178,7 +208,8 @@
publishBundle()
.then(() => fetchDeviceLists())
.then(() => _converse.devicelists.get(_converse.bare_jid).fetchDevices())
.then(updateOwnDeviceList)
.then(() => updateOwnDeviceList())
.then(() => _converse.emit('OMEMOInitialized'))
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
}
@ -188,7 +219,7 @@
b64_sha1(`converse.devicelists-${_converse.bare_jid}`)
);
_converse.omemo_session = new Backbone.Model();
_converse.omemo_session = new _converse.OMEMOSession();
_converse.omemo_session.browserStorage = new Backbone.BrowserStorage.session(
b64_sha1(`converse.omemosession-${_converse.bare_jid}`)
);

View File

@ -21,7 +21,6 @@ if (typeof define !== 'undefined') {
"converse-muc-views",
"converse-muc-views", // Views related to MUC
"converse-notification", // HTML5 Notifications
"converse-otr", // Off-the-record encryption for one-on-one messages
"converse-ping", // XEP-0199 XMPP Ping
"converse-roster",
"converse-register", // XEP-0077 In-band registration