Disable OTR and add code for adding the toolbar button.
This commit is contained in:
parent
039f30a5d3
commit
bfc246d9c7
7
dev.html
7
dev.html
|
@ -10,7 +10,6 @@
|
||||||
<meta name="keywords" content="xmpp chat webchat converse.js" />
|
<meta name="keywords" content="xmpp chat webchat converse.js" />
|
||||||
<link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
|
<link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
|
||||||
<link type="text/css" rel="stylesheet" media="screen" href="css/inverse.css" />
|
<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="node_modules/requirejs/require.js"></script>
|
||||||
<script src="src/config.js"></script>
|
<script src="src/config.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -18,7 +17,7 @@
|
||||||
<body class="reset">
|
<body class="reset">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
require(['converse'], function (converse) {
|
require(['converse', 'converse-omemo'], function (converse) {
|
||||||
converse.initialize({
|
converse.initialize({
|
||||||
auto_away: 300,
|
auto_away: 300,
|
||||||
i18n: 'en',
|
i18n: 'en',
|
||||||
|
@ -34,8 +33,8 @@
|
||||||
notify_all_room_messages: [
|
notify_all_room_messages: [
|
||||||
'discuss@conference.conversejs.org'
|
'discuss@conference.conversejs.org'
|
||||||
],
|
],
|
||||||
// bosh_service_url: 'http://chat.example.org:5280/http-bind/',
|
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: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
|
||||||
message_archiving: 'always',
|
message_archiving: 'always',
|
||||||
debug: true
|
debug: true
|
||||||
});
|
});
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
'converse-muc',
|
'converse-muc',
|
||||||
'converse-muc-views',
|
'converse-muc-views',
|
||||||
'converse-notification',
|
'converse-notification',
|
||||||
'converse-otr',
|
'converse-omemo',
|
||||||
'converse-ping',
|
'converse-ping',
|
||||||
'converse-profile',
|
'converse-profile',
|
||||||
'converse-register',
|
'converse-register',
|
||||||
|
|
|
@ -23,18 +23,44 @@
|
||||||
const TRUSTED = 1;
|
const TRUSTED = 1;
|
||||||
const UNTRUSTED = -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', {
|
converse.plugins.add('converse-omemo', {
|
||||||
|
|
||||||
|
enabled (_converse) {
|
||||||
|
return !_.isNil(window.libsignal);
|
||||||
|
},
|
||||||
|
|
||||||
overrides: {
|
overrides: {
|
||||||
ChatBoxView: {
|
ChatBoxView: {
|
||||||
|
|
||||||
addOMEMOToolbarButton (options) {
|
addOMEMOToolbarButton (options) {
|
||||||
const { _converse } = this.__super__,
|
const { _converse } = this.__super__;
|
||||||
{ __ } = _converse,
|
|
||||||
data = this.model.toJSON();
|
Promise.all([
|
||||||
this.el.querySelector('.chat-toolbar').insertAdjacentHTML(
|
contactHasOMEMOSupport(_converse, this.model.get('jid')),
|
||||||
'beforeend',
|
serverHasOMEMOSupport(_converse)
|
||||||
tpl_toolbar_omemo({'__': __}));
|
]).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) {
|
renderToolbar (toolbar, options) {
|
||||||
|
@ -51,10 +77,13 @@
|
||||||
*/
|
*/
|
||||||
const { _converse } = this;
|
const { _converse } = this;
|
||||||
|
|
||||||
|
_converse.api.promises.add(['OMEMOInitialized']);
|
||||||
|
|
||||||
|
|
||||||
_converse.OMEMOSession = Backbone.Model.extend({
|
_converse.OMEMOSession = Backbone.Model.extend({
|
||||||
|
|
||||||
initialize () {
|
initialize () {
|
||||||
this.keyhelper = libsignal.KeyHelper;
|
this.keyhelper = window.libsignal.KeyHelper;
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchSession () {
|
fetchSession () {
|
||||||
|
@ -62,7 +91,7 @@
|
||||||
this.fetch({
|
this.fetch({
|
||||||
'success': () => {
|
'success': () => {
|
||||||
if (!_converse.omemo_session.get('registration_id')) {
|
if (!_converse.omemo_session.get('registration_id')) {
|
||||||
this.keyhelper.generateIdentityKeyPair().then(function (keypair) {
|
this.keyhelper.generateIdentityKeyPair().then((keypair) => {
|
||||||
_converse.omemo_session.set({
|
_converse.omemo_session.set({
|
||||||
'registration_id': this.keyhelper.generateRegistrationId(),
|
'registration_id': this.keyhelper.generateRegistrationId(),
|
||||||
'pub_key': keypair.pubKey,
|
'pub_key': keypair.pubKey,
|
||||||
|
@ -141,6 +170,7 @@
|
||||||
*/
|
*/
|
||||||
// TODO:
|
// TODO:
|
||||||
const devicelist = _converse.devicelists.get(_converse.bare_jid);
|
const devicelist = _converse.devicelists.get(_converse.bare_jid);
|
||||||
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDevicesFromStanza (stanza) {
|
function updateDevicesFromStanza (stanza) {
|
||||||
|
@ -178,7 +208,8 @@
|
||||||
publishBundle()
|
publishBundle()
|
||||||
.then(() => fetchDeviceLists())
|
.then(() => fetchDeviceLists())
|
||||||
.then(() => _converse.devicelists.get(_converse.bare_jid).fetchDevices())
|
.then(() => _converse.devicelists.get(_converse.bare_jid).fetchDevices())
|
||||||
.then(updateOwnDeviceList)
|
.then(() => updateOwnDeviceList())
|
||||||
|
.then(() => _converse.emit('OMEMOInitialized'))
|
||||||
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
|
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +219,7 @@
|
||||||
b64_sha1(`converse.devicelists-${_converse.bare_jid}`)
|
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(
|
_converse.omemo_session.browserStorage = new Backbone.BrowserStorage.session(
|
||||||
b64_sha1(`converse.omemosession-${_converse.bare_jid}`)
|
b64_sha1(`converse.omemosession-${_converse.bare_jid}`)
|
||||||
);
|
);
|
||||||
|
|
|
@ -21,7 +21,6 @@ if (typeof define !== 'undefined') {
|
||||||
"converse-muc-views",
|
"converse-muc-views",
|
||||||
"converse-muc-views", // Views related to MUC
|
"converse-muc-views", // Views related to MUC
|
||||||
"converse-notification", // HTML5 Notifications
|
"converse-notification", // HTML5 Notifications
|
||||||
"converse-otr", // Off-the-record encryption for one-on-one messages
|
|
||||||
"converse-ping", // XEP-0199 XMPP Ping
|
"converse-ping", // XEP-0199 XMPP Ping
|
||||||
"converse-roster",
|
"converse-roster",
|
||||||
"converse-register", // XEP-0077 In-band registration
|
"converse-register", // XEP-0077 In-band registration
|
||||||
|
|
Loading…
Reference in New Issue
Block a user