Skip to content

Commit 5308f6b

Browse files
committed
fix(LoadingIndicator): fix loading view stays forever
1 parent a565caa commit 5308f6b

File tree

27 files changed

+258
-206
lines changed

27 files changed

+258
-206
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {
2+
Heading,
3+
IllustratedMessage,
4+
LoadingSpinner,
5+
} from "@mittwald/flow-react-components";
6+
7+
export const LoadingMessage = () => (
8+
<IllustratedMessage>
9+
<LoadingSpinner />
10+
<Heading>Lade Demo</Heading>
11+
</IllustratedMessage>
12+
);

apps/remote-dom-demo/src/app/host/layout.tsx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
"use client";
2+
import { LoadingMessage } from "@/app/_components/LoadingMessage";
23
import { getHostPath, getRemotePath } from "@/app/_lib/navigation";
3-
import {
4-
Heading,
5-
IllustratedMessage,
6-
LoadingSpinner,
7-
} from "@mittwald/flow-react-components";
84
import { RemoteRenderer } from "@mittwald/flow-remote-react-renderer";
95
import { usePathname, useRouter } from "next/navigation";
106
import { useRef, useState } from "react";
@@ -18,12 +14,7 @@ export default function HostPage() {
1814

1915
return (
2016
<>
21-
{isNavigating && (
22-
<IllustratedMessage>
23-
<LoadingSpinner />
24-
<Heading>Lade Demo</Heading>
25-
</IllustratedMessage>
26-
)}
17+
{isNavigating && <LoadingMessage />}
2718
<RemoteRenderer
2819
onNavigationStateChanged={(state) => {
2920
const { pathname, isPending } = state;

apps/remote-dom-demo/src/app/layout.tsx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
"use client";
22
import {
33
HeaderNavigation,
4-
Heading,
5-
IllustratedMessage,
64
Link,
7-
LoadingSpinner,
85
Notification,
96
NotificationProvider,
107
Render,
@@ -19,6 +16,7 @@ import { ErrorBoundary } from "next/dist/client/components/error-boundary";
1916
import { type PropsWithChildren, Suspense } from "react";
2017
import styles from "./layout.module.css";
2118
import { TunnelExit } from "@mittwald/react-tunnel";
19+
import { LoadingMessage } from "@/app/_components/LoadingMessage";
2220

2321
const Error: ErrorComponent = (props) => {
2422
return <>REMOTE RENDER ERROR: {props.error.message}</>;
@@ -77,14 +75,7 @@ export default function Layout(props: PropsWithChildren) {
7775
<main>
7876
<div>
7977
<ErrorBoundary errorComponent={Error}>
80-
<Suspense
81-
fallback={
82-
<IllustratedMessage>
83-
<LoadingSpinner />
84-
<Heading>Lade Demo</Heading>
85-
</IllustratedMessage>
86-
}
87-
>
78+
<Suspense fallback={<LoadingMessage />}>
8879
{props.children}
8980
</Suspense>
9081
</ErrorBoundary>

apps/remote-dom-demo/src/app/remote/mstudio-loading/page.tsx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,27 @@
22

33
import { Heading, Section, Text } from "@mittwald/flow-remote-react-components";
44
import { LoadingIndicator } from "@mittwald/mstudio-ext-react-components";
5-
import { useState } from "react";
6-
import { useTimeout } from "usehooks-ts";
5+
import { useEffect, useState } from "react";
76

87
export default function Page() {
9-
const [loading, setIsLoading] = useState(true);
10-
const hideLoading = () => {
11-
setIsLoading(false);
12-
};
13-
useTimeout(hideLoading, 3000);
14-
console.log("Is loading?", loading);
8+
const [isReady, setIsReady] = useState(false);
9+
10+
useEffect(() => {
11+
const timer = setInterval(() => {
12+
setIsReady((r) => {
13+
console.log("App is ready?", !r);
14+
return !r;
15+
});
16+
}, 5000);
17+
18+
return () => clearInterval(timer);
19+
}, []);
1520

1621
return (
1722
<Section>
1823
<Heading>Demo</Heading>
1924
<Text>Some text</Text>
20-
<LoadingIndicator show={loading} />
25+
<LoadingIndicator show={!isReady} />
2126
</Section>
2227
);
2328
}

packages/components/src/components/SuspenseTrigger/SuspenseTrigger.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const nonResolvingPromise = new Promise<{ default: ComponentType<unknown> }>(
1212

1313
const NonResolvingLazy = lazy(() => nonResolvingPromise);
1414

15-
/** @flr-generate all */
1615
export const SuspenseTrigger: FC<SuspenseTriggerProps> = (props) => {
1716
const { show = true } = props;
1817
return show ? <NonResolvingLazy /> : null;

packages/components/src/views/SuspenseTriggerView.tsx

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export * from "./Title";
22
export * from "./Actions";
33
export * from "./Breadcrumb";
4-
export { SuspenseTrigger as LoadingIndicator } from "@mittwald/flow-remote-react-components";
4+
export { LoadingFallbackTrigger as LoadingIndicator } from "@mittwald/flow-remote-react-components";

packages/remote-core/src/connection/connectRemoteIframe.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface Options {
1515
connection: RemoteConnection;
1616
iframe: HTMLIFrameElement;
1717
onReady?: (connection: HostToRemoteConnection) => void;
18+
onLoadingChanged?: (isLoading: boolean) => void;
1819
onError?: (error: string) => void;
1920
onNavigationStateChanged?: (state: NavigationState) => void;
2021
extBridgeImplementation?: ExtBridgeConnectionApi;
@@ -25,6 +26,7 @@ export const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {
2526
connection,
2627
iframe,
2728
onReady,
29+
onLoadingChanged,
2830
onError,
2931
onNavigationStateChanged,
3032
extBridgeImplementation = emptyImplementation,
@@ -39,6 +41,9 @@ export const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {
3941
result.version = version;
4042
onReady?.(result);
4143
},
44+
setIsLoading: async (isLoading: boolean) => {
45+
onLoadingChanged?.(isLoading);
46+
},
4247
setError: async (error: string) => {
4348
onError?.(error);
4449
},

packages/remote-core/src/connection/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export interface NavigationState {
99

1010
export interface HostExports extends ExtBridgeConnectionApi {
1111
setIsReady: (version?: Version) => Promise<void>;
12+
setIsLoading: (isLoading: boolean) => Promise<void>;
1213
setError: (error: string) => Promise<void>;
1314
setNavigationState: (state: NavigationState) => Promise<void>;
1415
}

packages/remote-elements/src/auto-generated/RemoteSuspenseTriggerElement.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)