From dcac9bc43f0d7169c0ddfee4f6f23261c3638e7e Mon Sep 17 00:00:00 2001 From: Alun Turner Date: Mon, 19 Jun 2023 17:39:40 +0100 Subject: [PATCH 1/4] add retry logic to the dynamic import for the composers --- .../rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx | 6 ++++-- .../views/rooms/wysiwyg_composer/SendWysiwygComposer.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx index afe8396bbd0..af0325e1c36 100644 --- a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx @@ -20,9 +20,11 @@ import { ISendEventResponse } from "matrix-js-sdk/src/@types/requests"; // we need to import the types for TS, but do not import the sendMessage // function to avoid importing from "@matrix-org/matrix-wysiwyg" import { SendMessageParams } from "./utils/message"; +import { retry } from "../../../../utils/promise"; -const SendComposer = lazy(() => import("./SendWysiwygComposer")); -const EditComposer = lazy(() => import("./EditWysiwygComposer")); +const RETRY_COUNT = 3; +const SendComposer = lazy(() => retry(() => import("./SendWysiwygComposer"), RETRY_COUNT)); +const EditComposer = lazy(() => retry(() => import("./EditWysiwygComposer"), RETRY_COUNT)); export const dynamicImportSendMessage = async ( message: string, diff --git a/src/components/views/rooms/wysiwyg_composer/SendWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/SendWysiwygComposer.tsx index 34307ce4abd..d5cc08e4f02 100644 --- a/src/components/views/rooms/wysiwyg_composer/SendWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/SendWysiwygComposer.tsx @@ -40,7 +40,7 @@ const Content = forwardRef(function Content( return null; }); -interface SendWysiwygComposerProps { +export interface SendWysiwygComposerProps { initialContent?: string; isRichTextEnabled: boolean; placeholder?: string; From 7f16e0698472786971bd71cb97a3551573a4996a Mon Sep 17 00:00:00 2001 From: Alun Turner Date: Mon, 19 Jun 2023 17:40:48 +0100 Subject: [PATCH 2/4] add retry to the conversion function too --- .../rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx index af0325e1c36..287327fdcc3 100644 --- a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx @@ -40,7 +40,7 @@ export const dynamicImportConversionFunctions = async (): Promise<{ richToPlain(rich: string): Promise; plainToRich(plain: string): Promise; }> => { - const { richToPlain, plainToRich } = await import("@matrix-org/matrix-wysiwyg"); + const { richToPlain, plainToRich } = await retry(() => import("@matrix-org/matrix-wysiwyg"), RETRY_COUNT); return { richToPlain, plainToRich }; }; From efcc8bb02e5d08dcdee88065f9012ac1001b5083 Mon Sep 17 00:00:00 2001 From: Alun Turner Date: Mon, 19 Jun 2023 17:45:01 +0100 Subject: [PATCH 3/4] add retry to final function --- .../rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx index 287327fdcc3..d8444df9ef6 100644 --- a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx @@ -31,7 +31,7 @@ export const dynamicImportSendMessage = async ( isHTML: boolean, params: SendMessageParams, ): Promise => { - const { sendMessage } = await import("./utils/message"); + const { sendMessage } = await retry(() => import("./utils/message"), RETRY_COUNT); return sendMessage(message, isHTML, params); }; From 019bf4d5e3b8d309894c345c13a7035cfd14d39e Mon Sep 17 00:00:00 2001 From: Alun Turner Date: Mon, 19 Jun 2023 17:50:33 +0100 Subject: [PATCH 4/4] add comment --- .../rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx index d8444df9ef6..a7d79b617b4 100644 --- a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx @@ -22,6 +22,8 @@ import { ISendEventResponse } from "matrix-js-sdk/src/@types/requests"; import { SendMessageParams } from "./utils/message"; import { retry } from "../../../../utils/promise"; +// Due to issues such as https://github.com/vector-im/element-web/issues/25277, we add retry +// attempts to all of the dynamic imports in this file const RETRY_COUNT = 3; const SendComposer = lazy(() => retry(() => import("./SendWysiwygComposer"), RETRY_COUNT)); const EditComposer = lazy(() => retry(() => import("./EditWysiwygComposer"), RETRY_COUNT));