Ensure that all event handling in background.js is queued

This commit is contained in:
Scott Nonnenberg 2019-06-14 15:17:37 -07:00 committed by Ken Powers
parent 649544dfac
commit cc7b9da0cf
2 changed files with 25 additions and 15 deletions

View file

@ -16,6 +16,8 @@
(async function() { (async function() {
'use strict'; 'use strict';
const eventHandlerQueue = new window.PQueue({ concurrency: 1 });
// Globally disable drag and drop // Globally disable drag and drop
document.body.addEventListener( document.body.addEventListener(
'dragover', 'dragover',
@ -806,21 +808,28 @@
mySignalingKey, mySignalingKey,
options options
); );
messageReceiver.addEventListener('message', onMessageReceived);
messageReceiver.addEventListener('delivery', onDeliveryReceipt); function addQueuedEventListener(name, handler) {
messageReceiver.addEventListener('contact', onContactReceived); messageReceiver.addEventListener(name, (...args) =>
messageReceiver.addEventListener('group', onGroupReceived); eventHandlerQueue.add(() => handler(...args))
messageReceiver.addEventListener('sent', onSentMessage); );
messageReceiver.addEventListener('readSync', onReadSync); }
messageReceiver.addEventListener('read', onReadReceipt);
messageReceiver.addEventListener('verified', onVerified); addQueuedEventListener('message', onMessageReceived);
messageReceiver.addEventListener('error', onError); addQueuedEventListener('delivery', onDeliveryReceipt);
messageReceiver.addEventListener('empty', onEmpty); addQueuedEventListener('contact', onContactReceived);
messageReceiver.addEventListener('reconnect', onReconnect); addQueuedEventListener('group', onGroupReceived);
messageReceiver.addEventListener('progress', onProgress); addQueuedEventListener('sent', onSentMessage);
messageReceiver.addEventListener('configuration', onConfiguration); addQueuedEventListener('readSync', onReadSync);
messageReceiver.addEventListener('typing', onTyping); addQueuedEventListener('read', onReadReceipt);
messageReceiver.addEventListener('sticker-pack', onStickerPack); addQueuedEventListener('verified', onVerified);
addQueuedEventListener('error', onError);
addQueuedEventListener('empty', onEmpty);
addQueuedEventListener('reconnect', onReconnect);
addQueuedEventListener('progress', onProgress);
addQueuedEventListener('configuration', onConfiguration);
addQueuedEventListener('typing', onTyping);
addQueuedEventListener('sticker-pack', onStickerPack);
window.Signal.AttachmentDownloads.start({ window.Signal.AttachmentDownloads.start({
getMessageReceiver: () => messageReceiver, getMessageReceiver: () => messageReceiver,

View file

@ -287,6 +287,7 @@ window.getGuid = require('uuid/v4');
window.React = require('react'); window.React = require('react');
window.ReactDOM = require('react-dom'); window.ReactDOM = require('react-dom');
window.moment = require('moment'); window.moment = require('moment');
window.PQueue = require('p-queue');
const Signal = require('./js/modules/signal'); const Signal = require('./js/modules/signal');
const i18n = require('./js/modules/i18n'); const i18n = require('./js/modules/i18n');