Simplify message receiver event
This commit is contained in:
parent
e80db63e6b
commit
6ab849400d
3 changed files with 28 additions and 90 deletions
|
@ -587,25 +587,15 @@ export async function startApp(): Promise<void> {
|
||||||
});
|
});
|
||||||
|
|
||||||
function queuedEventListener<E extends Event>(
|
function queuedEventListener<E extends Event>(
|
||||||
handler: (event: E) => Promise<void> | void,
|
handler: (event: E) => Promise<void> | void
|
||||||
track = true
|
|
||||||
): (event: E) => void {
|
): (event: E) => void {
|
||||||
return (event: E): void => {
|
return (event: E): void => {
|
||||||
drop(
|
drop(
|
||||||
eventHandlerQueue.add(
|
eventHandlerQueue.add(
|
||||||
createTaskWithTimeout(async () => {
|
createTaskWithTimeout(
|
||||||
try {
|
async () => handler(event),
|
||||||
await handler(event);
|
`queuedEventListener(${event.type}, ${event.timeStamp})`
|
||||||
} finally {
|
)
|
||||||
// message/sent: Message.handleDataMessage has its own queue and will
|
|
||||||
// trigger this event itself when complete.
|
|
||||||
// error: Error processing (below) also has its own queue and
|
|
||||||
// self-trigger.
|
|
||||||
if (track) {
|
|
||||||
window.Whisper.events.trigger('incrementProgress');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, `queuedEventListener(${event.type}, ${event.timeStamp})`)
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -613,15 +603,15 @@ export async function startApp(): Promise<void> {
|
||||||
|
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'envelopeUnsealed',
|
'envelopeUnsealed',
|
||||||
queuedEventListener(onEnvelopeUnsealed, false)
|
queuedEventListener(onEnvelopeUnsealed)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'envelopeQueued',
|
'envelopeQueued',
|
||||||
queuedEventListener(onEnvelopeQueued, false)
|
queuedEventListener(onEnvelopeQueued)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'message',
|
'message',
|
||||||
queuedEventListener(onMessageReceived, false)
|
queuedEventListener(onMessageReceived)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'delivery',
|
'delivery',
|
||||||
|
@ -633,7 +623,7 @@ export async function startApp(): Promise<void> {
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'sent',
|
'sent',
|
||||||
queuedEventListener(onSentMessage, false)
|
queuedEventListener(onSentMessage)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'readSync',
|
'readSync',
|
||||||
|
@ -651,10 +641,7 @@ export async function startApp(): Promise<void> {
|
||||||
'view',
|
'view',
|
||||||
queuedEventListener(onViewReceipt)
|
queuedEventListener(onViewReceipt)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener('error', queuedEventListener(onError));
|
||||||
'error',
|
|
||||||
queuedEventListener(onError, false)
|
|
||||||
);
|
|
||||||
|
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'successful-decrypt',
|
'successful-decrypt',
|
||||||
|
@ -710,31 +697,31 @@ export async function startApp(): Promise<void> {
|
||||||
messageReceiver.addEventListener('keys', queuedEventListener(onKeysSync));
|
messageReceiver.addEventListener('keys', queuedEventListener(onKeysSync));
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'storyRecipientUpdate',
|
'storyRecipientUpdate',
|
||||||
queuedEventListener(onStoryRecipientUpdate, false)
|
queuedEventListener(onStoryRecipientUpdate)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'callEventSync',
|
'callEventSync',
|
||||||
queuedEventListener(onCallEventSync, false)
|
queuedEventListener(onCallEventSync)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'callLinkUpdateSync',
|
'callLinkUpdateSync',
|
||||||
queuedEventListener(onCallLinkUpdateSync, false)
|
queuedEventListener(onCallLinkUpdateSync)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'callLogEventSync',
|
'callLogEventSync',
|
||||||
queuedEventListener(onCallLogEventSync, false)
|
queuedEventListener(onCallLogEventSync)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'deleteForMeSync',
|
'deleteForMeSync',
|
||||||
queuedEventListener(onDeleteForMeSync, false)
|
queuedEventListener(onDeleteForMeSync)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'attachmentBackfillResponseSync',
|
'attachmentBackfillResponseSync',
|
||||||
queuedEventListener(onAttachmentBackfillResponseSync, false)
|
queuedEventListener(onAttachmentBackfillResponseSync)
|
||||||
);
|
);
|
||||||
messageReceiver.addEventListener(
|
messageReceiver.addEventListener(
|
||||||
'deviceNameChangeSync',
|
'deviceNameChangeSync',
|
||||||
queuedEventListener(onDeviceNameChangeSync, false)
|
queuedEventListener(onDeviceNameChangeSync)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!window.storage.get('defaultConversationColor')) {
|
if (!window.storage.get('defaultConversationColor')) {
|
||||||
|
@ -2206,21 +2193,6 @@ export async function startApp(): Promise<void> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let initialStartupCount = 0;
|
|
||||||
window.Whisper.events.on('incrementProgress', incrementProgress);
|
|
||||||
function incrementProgress() {
|
|
||||||
initialStartupCount += 1;
|
|
||||||
|
|
||||||
// Only update progress every 10 items
|
|
||||||
if (initialStartupCount % 10 !== 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info(`incrementProgress: Message count is ${initialStartupCount}`);
|
|
||||||
|
|
||||||
window.Whisper.events.trigger('loadingProgress', initialStartupCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
window.Whisper.events.on('manualConnect', manualConnect);
|
window.Whisper.events.on('manualConnect', manualConnect);
|
||||||
function manualConnect() {
|
function manualConnect() {
|
||||||
if (isSocketOnline()) {
|
if (isSocketOnline()) {
|
||||||
|
|
|
@ -127,7 +127,6 @@ import {
|
||||||
MessageEvent,
|
MessageEvent,
|
||||||
MessageRequestResponseEvent,
|
MessageRequestResponseEvent,
|
||||||
ProfileKeyUpdateEvent,
|
ProfileKeyUpdateEvent,
|
||||||
ProgressEvent,
|
|
||||||
ReadEvent,
|
ReadEvent,
|
||||||
ReadSyncEvent,
|
ReadSyncEvent,
|
||||||
RetryRequestEvent,
|
RetryRequestEvent,
|
||||||
|
@ -538,11 +537,6 @@ export default class MessageReceiver
|
||||||
handler: (ev: EmptyEvent) => void
|
handler: (ev: EmptyEvent) => void
|
||||||
): void;
|
): void;
|
||||||
|
|
||||||
public override addEventListener(
|
|
||||||
name: 'progress',
|
|
||||||
handler: (ev: ProgressEvent) => void
|
|
||||||
): void;
|
|
||||||
|
|
||||||
public override addEventListener(
|
public override addEventListener(
|
||||||
name: 'typing',
|
name: 'typing',
|
||||||
handler: (ev: TypingEvent) => void
|
handler: (ev: TypingEvent) => void
|
||||||
|
@ -746,13 +740,9 @@ export default class MessageReceiver
|
||||||
? this.#encryptedQueue
|
? this.#encryptedQueue
|
||||||
: this.#decryptedQueue;
|
: this.#decryptedQueue;
|
||||||
|
|
||||||
try {
|
return queue.add(
|
||||||
return await queue.add(
|
createTaskWithTimeout(task, id, TASK_WITH_TIMEOUT_OPTIONS)
|
||||||
createTaskWithTimeout(task, id, TASK_WITH_TIMEOUT_OPTIONS)
|
);
|
||||||
);
|
|
||||||
} finally {
|
|
||||||
this.#updateProgress(this.#count);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#onEmpty(): void {
|
#onEmpty(): void {
|
||||||
|
@ -835,14 +825,6 @@ export default class MessageReceiver
|
||||||
drop(waitForCacheAddBatcher());
|
drop(waitForCacheAddBatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
#updateProgress(count: number): void {
|
|
||||||
// count by 10s
|
|
||||||
if (count % 10 !== 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.dispatchEvent(new ProgressEvent({ count }));
|
|
||||||
}
|
|
||||||
|
|
||||||
async #queueAllCached(): Promise<void> {
|
async #queueAllCached(): Promise<void> {
|
||||||
if (this.#stoppingProcessing) {
|
if (this.#stoppingProcessing) {
|
||||||
log.info(
|
log.info(
|
||||||
|
@ -1976,14 +1958,11 @@ export default class MessageReceiver
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isAciString(uuid) && isNumber(deviceId)) {
|
if (isAciString(uuid) && isNumber(deviceId)) {
|
||||||
const event = new SuccessfulDecryptEvent(
|
const event = new SuccessfulDecryptEvent({
|
||||||
{
|
senderDevice: deviceId,
|
||||||
senderDevice: deviceId,
|
senderAci: uuid,
|
||||||
senderAci: uuid,
|
timestamp: envelope.timestamp,
|
||||||
timestamp: envelope.timestamp,
|
});
|
||||||
},
|
|
||||||
() => this.#removeFromCache(envelope)
|
|
||||||
);
|
|
||||||
drop(
|
drop(
|
||||||
this.#addToQueue(
|
this.#addToQueue(
|
||||||
async () => this.dispatchEvent(event),
|
async () => this.dispatchEvent(event),
|
||||||
|
|
|
@ -31,16 +31,6 @@ export class EmptyEvent extends Event {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ProgressEvent extends Event {
|
|
||||||
public readonly count: number;
|
|
||||||
|
|
||||||
constructor({ count }: { count: number }) {
|
|
||||||
super('progress');
|
|
||||||
|
|
||||||
this.count = count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export type TypingEventData = Readonly<{
|
export type TypingEventData = Readonly<{
|
||||||
typingMessage: Proto.ITypingMessage;
|
typingMessage: Proto.ITypingMessage;
|
||||||
timestamp: number;
|
timestamp: number;
|
||||||
|
@ -146,12 +136,9 @@ export type SuccessfulDecryptEventData = Readonly<{
|
||||||
timestamp: number;
|
timestamp: number;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
export class SuccessfulDecryptEvent extends ConfirmableEvent {
|
export class SuccessfulDecryptEvent extends Event {
|
||||||
constructor(
|
constructor(public readonly data: SuccessfulDecryptEventData) {
|
||||||
public readonly data: SuccessfulDecryptEventData,
|
super('successful-decrypt');
|
||||||
confirm: ConfirmCallback
|
|
||||||
) {
|
|
||||||
super('successful-decrypt', confirm);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue