diff --git a/js/background.js b/js/background.js index 7cbaad953..0c9df8993 100644 --- a/js/background.js +++ b/js/background.js @@ -1408,9 +1408,11 @@ await window.lokiFileServerAPI.updateOurDeviceMapping(); // TODO: we should ensure the message was sent and retry automatically if not const device = new libsession.Types.PubKey(pubKey); - const unlinkMessage = new libsession.Messages.Outgoing.DeviceUnlinkMessage(pubKey); + const unlinkMessage = new libsession.Messages.Outgoing.DeviceUnlinkMessage( + pubKey + ); - await libsession.messageQueue.send(device, unlinkMessage); + await libsession.getMessageQueue().send(device, unlinkMessage); // Remove all traces of the device setTimeout(() => { ConversationController.deleteContact(pubKey); diff --git a/libloki/api.js b/libloki/api.js index f8c7041bc..72e65c83d 100644 --- a/libloki/api.js +++ b/libloki/api.js @@ -60,7 +60,7 @@ const sessionEstablished = new window.libsession.Messages.Outgoing.SessionEstablished( { timestamp: Date.now() } ); - await libsession.messageQueue.send(user, sessionEstablished); + await libsession.getMessageQueue().send(user, sessionEstablished); } async function sendBackgroundMessage(pubKey, debugMessageType) { diff --git a/libtextsecure/account_manager.js b/libtextsecure/account_manager.js index 144017b67..aaceea903 100644 --- a/libtextsecure/account_manager.js +++ b/libtextsecure/account_manager.js @@ -556,7 +556,9 @@ requestSignature, } ); - await libsession.messageQueue.send(primaryDevice, requestPairingMessage); + await window.libsession + .getMessageQueue() + .send(primaryDevice, requestPairingMessage); }, async authoriseSecondaryDevice(secondaryDeviceStr) { const ourPubKey = textsecure.storage.user.getNumber(); @@ -633,10 +635,9 @@ lokiProfile, } ); - await libsession.messageQueue.send( - secondaryDevicePubKey, - requestPairingMessage - ); + await libsession + .getMessageQueue() + .send(secondaryDevicePubKey, requestPairingMessage); } catch (e) { log.error( 'Failed to authorise secondary device: ', diff --git a/preload.js b/preload.js index feb420f9a..2db234a1d 100644 --- a/preload.js +++ b/preload.js @@ -160,6 +160,7 @@ window.setPassword = (passPhrase, oldPhrase) => window.passwordUtil = require('./app/password_util'); window.libsession = require('./ts/session'); +window.libsession.getMessageQueue = require('./ts/session/sending/instance').getMessageQueue; // We never do these in our code, so we'll prevent it everywhere window.open = () => null; diff --git a/ts/session/index.ts b/ts/session/index.ts index 2982014c9..bf8312146 100644 --- a/ts/session/index.ts +++ b/ts/session/index.ts @@ -1,8 +1,5 @@ import * as Messages from './messages'; import * as Protocols from './protocols'; import * as Types from './types'; -import { MessageQueue } from './sending'; -const messageQueue = new MessageQueue(); - -export { Messages, Protocols, Types, messageQueue }; +export { Messages, Protocols, Types }; diff --git a/ts/session/sending/instance.ts b/ts/session/sending/instance.ts new file mode 100644 index 000000000..13e794bb2 --- /dev/null +++ b/ts/session/sending/instance.ts @@ -0,0 +1,12 @@ +import { MessageQueue } from './MessageQueue'; + +let messageQueue: MessageQueue; + +function getMessageQueue() { + if (!messageQueue) { + messageQueue = new MessageQueue(); + } + return messageQueue; +} + +export { getMessageQueue };