diff --git a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx index afe8396bbd0..a7d79b617b4 100644 --- a/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx +++ b/src/components/views/rooms/wysiwyg_composer/DynamicImportWysiwygComposer.tsx @@ -20,16 +20,20 @@ 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")); +// 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)); export const dynamicImportSendMessage = async ( message: string, 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); }; @@ -38,7 +42,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 }; }; 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;