From 180b921ae1121fd0c6e75af083835c1e273ae4a6 Mon Sep 17 00:00:00 2001 From: rongquan1 Date: Wed, 4 Mar 2026 17:25:57 +0800 Subject: [PATCH 1/2] fix: add timeout template for OpenCerts --- src/DefaultTemplate.stories.ts | 15 ++++++++++++++- src/DefaultTemplate.tsx | 23 +++++++++++++++++++++++ src/components/frame/FrameConnector.tsx | 14 ++++++++++---- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/DefaultTemplate.stories.ts b/src/DefaultTemplate.stories.ts index ce84cfc..946cafe 100644 --- a/src/DefaultTemplate.stories.ts +++ b/src/DefaultTemplate.stories.ts @@ -1,4 +1,5 @@ -import { DefaultTemplate } from "./DefaultTemplate"; +import React from "react"; +import { DefaultTemplate, ConnectionFailureTemplate } from "./DefaultTemplate"; export default { title: "DefaultTemplate", @@ -25,3 +26,15 @@ export const NonEditableValue = { }, }, }; + +export const ConnectionFailure = { + name: "Connection Failure (OpenCerts only)", + render: ConnectionFailureTemplate, + decorators: [ + (Story: any) => + React.createElement("div", { style: { padding: "4rem 0", textAlign: "center" } }, React.createElement(Story)), + ], + args: { + source: "http://localhost:3000", + }, +}; diff --git a/src/DefaultTemplate.tsx b/src/DefaultTemplate.tsx index 34b2b3b..6f178ad 100644 --- a/src/DefaultTemplate.tsx +++ b/src/DefaultTemplate.tsx @@ -11,6 +11,29 @@ const container = { const textColor = `#333`; const paddingBox = `.75rem 1.25rem`; +export interface ConnectionFailureProps { + source?: string; +} + +export const ConnectionFailureTemplate: React.FunctionComponent = (props) => { + return ( +
+
+

+ This document might be having loading issues +

+

+ Try refreshing the page or check your internet connection. If the issue continues, please contact the issuer + with the information below: +
+
+ Template URL: "{props.source}" +

+
+
+ ); +}; + export const DefaultTemplate: React.FunctionComponent> = (props) => { return (
diff --git a/src/components/frame/FrameConnector.tsx b/src/components/frame/FrameConnector.tsx index 1f93a28..c0e43ff 100644 --- a/src/components/frame/FrameConnector.tsx +++ b/src/components/frame/FrameConnector.tsx @@ -1,6 +1,7 @@ import React, { CSSProperties, FunctionComponent, useEffect, useMemo, useRef, useState } from "react"; import { useChildFrame } from "./useFrame"; import { HostActions, HostActionsHandler, LegacyHostActions } from "./host.actions"; +import { ConnectionFailureTemplate } from "../../DefaultTemplate"; import { FrameActions, LegacyFrameActions, @@ -85,6 +86,7 @@ export const FrameConnector: FunctionComponent = ({ }; }, [dispatchProxy]); + const isOpenCerts = typeof window !== "undefined" && window.location.hostname.endsWith("opencerts.io"); const DEFAULT_RENDERER_URL = `https://generic-templates.tradetrust.io`; const originalIframe = useRef(null); const fallbackIframe = useRef(null); @@ -170,10 +172,14 @@ export const FrameConnector: FunctionComponent = ({ <> {!useFallbackSource ? ( timeout ? ( - <> -

Connection timeout on renderer

-

Please contact the administrator of {source}.

- + isOpenCerts ? ( + + ) : ( + <> +

Connection timeout on renderer

+

Please contact the administrator of {source}.

+ + ) ) : (