From 9888e6d38fe21cd83b6a5cbf13f9e9086eee5be4 Mon Sep 17 00:00:00 2001 From: Josh Perez <60019601+josh-signal@users.noreply.github.com> Date: Mon, 27 Sep 2021 12:29:00 -0400 Subject: [PATCH] Move common utils out of conversation view --- ts/util/markAllAsApproved.ts | 10 +++++++ ts/util/markAllAsVerifiedDefault.ts | 18 +++++++++++ ts/util/retryMessageSend.ts | 10 +++++++ ts/views/conversation_view.ts | 46 +++++------------------------ 4 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 ts/util/markAllAsApproved.ts create mode 100644 ts/util/markAllAsVerifiedDefault.ts create mode 100644 ts/util/retryMessageSend.ts diff --git a/ts/util/markAllAsApproved.ts b/ts/util/markAllAsApproved.ts new file mode 100644 index 000000000..6367cf6da --- /dev/null +++ b/ts/util/markAllAsApproved.ts @@ -0,0 +1,10 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import type { ConversationModel } from '../models/conversations'; + +export async function markAllAsApproved( + untrusted: ReadonlyArray +): Promise { + await Promise.all(untrusted.map(contact => contact.setApproved())); +} diff --git a/ts/util/markAllAsVerifiedDefault.ts b/ts/util/markAllAsVerifiedDefault.ts new file mode 100644 index 000000000..a13d37d5a --- /dev/null +++ b/ts/util/markAllAsVerifiedDefault.ts @@ -0,0 +1,18 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import type { ConversationModel } from '../models/conversations'; + +export async function markAllAsVerifiedDefault( + unverified: ReadonlyArray +): Promise { + await Promise.all( + unverified.map(contact => { + if (contact.isUnverified()) { + return contact.setVerifiedDefault(); + } + + return null; + }) + ); +} diff --git a/ts/util/retryMessageSend.ts b/ts/util/retryMessageSend.ts new file mode 100644 index 000000000..461ed3bb2 --- /dev/null +++ b/ts/util/retryMessageSend.ts @@ -0,0 +1,10 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +export async function retryMessageSend(messageId: string): Promise { + const message = window.MessageController.getById(messageId); + if (!message) { + throw new Error(`retryMessageSend: Message ${messageId} missing!`); + } + await message.retrySend(); +} diff --git a/ts/views/conversation_view.ts b/ts/views/conversation_view.ts index 3c6167afe..6c5e06383 100644 --- a/ts/views/conversation_view.ts +++ b/ts/views/conversation_view.ts @@ -110,6 +110,9 @@ import { ToastMaxAttachments } from '../components/ToastMaxAttachments'; import { ToastOneNonImageAtATime } from '../components/ToastOneNonImageAtATime'; import { ToastUnableToLoadAttachment } from '../components/ToastUnableToLoadAttachment'; import { deleteDraftAttachment } from '../util/deleteDraftAttachment'; +import { markAllAsApproved } from '../util/markAllAsApproved'; +import { markAllAsVerifiedDefault } from '../util/markAllAsVerifiedDefault'; +import { retryMessageSend } from '../util/retryMessageSend'; type AttachmentOptions = { messageId: string; @@ -636,9 +639,7 @@ export class ConversationView extends window.Backbone.View { const replyToMessage = (messageId: string) => { this.setQuoteMessage(messageId); }; - const retrySend = (messageId: string) => { - this.retrySend(messageId); - }; + const retrySend = retryMessageSend; const deleteMessage = (messageId: string) => { this.deleteMessage(messageId); }; @@ -1660,28 +1661,6 @@ export class ConversationView extends window.Backbone.View { } } - // eslint-disable-next-line class-methods-use-this - async markAllAsVerifiedDefault( - unverified: ReadonlyArray - ): Promise { - await Promise.all( - unverified.map(contact => { - if (contact.isUnverified()) { - return contact.setVerifiedDefault(); - } - - return null; - }) - ); - } - - // eslint-disable-next-line class-methods-use-this - async markAllAsApproved( - untrusted: ReadonlyArray - ): Promise { - await Promise.all(untrusted.map(contact => contact.setApproved())); - } - captureAudio(e?: Event): void { if (e) { e.preventDefault(); @@ -1813,15 +1792,6 @@ export class ConversationView extends window.Backbone.View { this.model.updateVerified(); } - // eslint-disable-next-line class-methods-use-this - async retrySend(messageId: string): Promise { - const message = window.MessageController.getById(messageId); - if (!message) { - throw new Error(`retrySend: Message ${messageId} missing!`); - } - await message.retrySend(); - } - async showForwardMessageModal(messageId: string): Promise { const messageFromCache = window.MessageController.getById(messageId); if (!messageFromCache) { @@ -1968,10 +1938,10 @@ export class ConversationView extends window.Backbone.View { let verifyPromise: Promise | undefined; let approvePromise: Promise | undefined; if (unverifiedContacts.length) { - verifyPromise = this.markAllAsVerifiedDefault(unverifiedContacts); + verifyPromise = markAllAsVerifiedDefault(unverifiedContacts); } if (untrustedContacts.length) { - approvePromise = this.markAllAsApproved(untrustedContacts); + approvePromise = markAllAsApproved(untrustedContacts); } await Promise.all([verifyPromise, approvePromise]); } @@ -3249,7 +3219,7 @@ export class ConversationView extends window.Backbone.View { if (options.force) { if (unverifiedContacts.length) { - await this.markAllAsVerifiedDefault(unverifiedContacts.models); + await markAllAsVerifiedDefault(unverifiedContacts.models); // We only want force to break us through one layer of checks // eslint-disable-next-line no-param-reassign options.force = false; @@ -3262,7 +3232,7 @@ export class ConversationView extends window.Backbone.View { if (options.force) { if (untrustedContacts.length) { - await this.markAllAsApproved(untrustedContacts.models); + await markAllAsApproved(untrustedContacts.models); } } else if (untrustedContacts.length) { return untrustedContacts;