Move setVerified to conversation queue

This commit is contained in:
Fedor Indutny 2023-03-09 15:33:12 -08:00 committed by GitHub
parent 26ae1c8a88
commit 371c73377c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 7 deletions

View file

@ -2662,8 +2662,10 @@ export class ConversationModel extends window.Backbone
await this.initialPromise;
const verified = await this.safeGetVerified();
if (this.get('verified') !== verified) {
const oldVerified = this.get('verified');
if (oldVerified !== verified) {
this.set({ verified });
this.captureChange(`updateVerified from=${oldVerified} to=${verified}`);
window.Signal.Data.updateConversation(this.attributes);
}
@ -2730,7 +2732,9 @@ export class ConversationModel extends window.Backbone
window.Signal.Data.updateConversation(this.attributes);
if (beginningVerified !== verified) {
this.captureChange(`verified from=${beginningVerified} to=${verified}`);
this.captureChange(
`_setVerified from=${beginningVerified} to=${verified}`
);
}
const didVerifiedChange = beginningVerified !== verified;
@ -2861,7 +2865,9 @@ export class ConversationModel extends window.Backbone
return;
}
return window.textsecure.storage.protocol.setApproval(uuid, true);
return this.queueJob('setApproved', async () => {
return window.textsecure.storage.protocol.setApproval(uuid, true);
});
}
safeIsUntrusted(timestampThreshold?: number): boolean {

View file

@ -3,6 +3,8 @@
/* eslint-disable max-classes-per-file */
import type { LibSignalErrorBase } from '@signalapp/libsignal-client';
import { parseRetryAfter } from '../util/parseRetryAfter';
import type { CallbackResultType } from './Types.d';
@ -76,12 +78,13 @@ export class OutgoingIdentityKeyError extends ReplayableError {
public readonly identifier: string;
// Note: Data to resend message is no longer captured
constructor(incomingIdentifier: string) {
constructor(incomingIdentifier: string, cause?: LibSignalErrorBase) {
const identifier = incomingIdentifier.split('.')[0];
super({
name: 'OutgoingIdentityKeyError',
message: `The identity of ${identifier} has changed.`,
cause,
});
this.identifier = identifier;

View file

@ -627,7 +627,7 @@ export default class OutgoingMessage {
error instanceof LibSignalErrorBase &&
error.code === ErrorCode.UntrustedIdentity
) {
newError = new OutgoingIdentityKeyError(identifier);
newError = new OutgoingIdentityKeyError(identifier, error);
log.error(
'Got "key changed" error from encrypt - no identityKey for application layer',
identifier,
@ -736,7 +736,7 @@ export default class OutgoingMessage {
error instanceof LibSignalErrorBase &&
error.code === ErrorCode.UntrustedIdentity
) {
const newError = new OutgoingIdentityKeyError(identifier);
const newError = new OutgoingIdentityKeyError(identifier, error);
this.registerError(identifier, 'Untrusted identity', newError);
} else {
this.registerError(

View file

@ -167,7 +167,7 @@ async function handleServerKeys(
error instanceof LibSignalErrorBase &&
error.code === ErrorCode.UntrustedIdentity
) {
throw new OutgoingIdentityKeyError(identifier);
throw new OutgoingIdentityKeyError(identifier, error);
}
throw error;
}