diff --git a/packages/server/lib/components/Context.js b/packages/server/lib/components/Context.js
index 029246136..4c76ca94f 100644
--- a/packages/server/lib/components/Context.js
+++ b/packages/server/lib/components/Context.js
@@ -24,7 +24,7 @@ const Context = ({ children, config, lowdefy, progress }) => {
return (
{
progress.dispatch({
type: 'increment',
@@ -38,7 +38,6 @@ const Context = ({ children, config, lowdefy, progress }) => {
});
},
});
- // context._internal.update(); // TODO: do we need this?
context._internal.State.freezeState();
}
}}
@@ -56,40 +55,8 @@ const Context = ({ children, config, lowdefy, progress }) => {
}}
>
{(loadingOnInit) => {
- return (
-
- await context._internal.RootBlocks.areas.root.blocks[0].triggerEvent({
- name: 'onEnter',
- progress: () => {
- progress.dispatch({
- type: 'increment',
- });
- },
- })
- }
- triggerEventAsync={() => {
- const onEnterAsync = async () => {
- await context._internal.RootBlocks.areas.root.blocks[0].triggerEvent({
- name: 'onEnterAsync', // TODO: Do we want this to happen in the background, as in not effecting progress bar?
- progress: () => {
- progress.dispatch({
- type: 'increment',
- });
- },
- });
- progress.dispatch({
- type: 'done',
- });
- };
- onEnterAsync();
- }}
- >
- {(loadingOnEnter) => children(context, loadingOnEnter)}
-
- );
+ if (loadingOnInit) return '';
+ return children(context);
}}
);
diff --git a/packages/server/lib/components/MountEvents.js b/packages/server/lib/components/MountEvents.js
index ca7867c4d..02670a2e0 100644
--- a/packages/server/lib/components/MountEvents.js
+++ b/packages/server/lib/components/MountEvents.js
@@ -16,7 +16,7 @@
import React, { useEffect, useState } from 'react';
-const MountEvents = ({ children, context, parentLoading, triggerEvent, triggerEventAsync }) => {
+const MountEvents = ({ ename, children, context, triggerEvent, triggerEventAsync }) => {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
@@ -32,17 +32,16 @@ const MountEvents = ({ children, context, parentLoading, triggerEvent, triggerEv
setError(err);
}
};
- if (!parentLoading) {
- mount(); // TODO: check only run once.
- }
+ console.log(ename);
+ mount(); // TODO: check only run once.
return () => {
mounted = false;
};
- }, [context, parentLoading]);
+ }, [context]);
if (error) throw error;
- return <>{children(loading || parentLoading)}>;
+ return <>{children(loading)}>;
};
export default MountEvents;
diff --git a/packages/server/lib/components/Page.js b/packages/server/lib/components/Page.js
index 89652d3db..5579d9172 100644
--- a/packages/server/lib/components/Page.js
+++ b/packages/server/lib/components/Page.js
@@ -49,7 +49,7 @@ const Page = ({ lowdefy, pageConfig, rootConfig }) => {
content={{
content: (progress) => (
- {(context, loading) => {
+ {(context) => {
return (
<>
{
Blocks={context._internal.RootBlocks}
context={context}
lowdefy={lowdefy}
- parentLoading={loading}
+ progress={progress}
+ parentLoading={false}
/>
>
);
diff --git a/packages/server/lib/components/block/Block.js b/packages/server/lib/components/block/Block.js
index 36b2f8817..39d602624 100644
--- a/packages/server/lib/components/block/Block.js
+++ b/packages/server/lib/components/block/Block.js
@@ -21,19 +21,44 @@ import { ErrorBoundary } from '@lowdefy/block-utils';
import CategorySwitch from './CategorySwitch.js';
import MountEvents from '../MountEvents.js';
-const Block = ({ block, Blocks, context, loading, lowdefy, parentLoading }) => {
+const Block = ({
+ block,
+ Blocks,
+ context,
+ lowdefy,
+ parentLoading,
+ progress = { dispatch: () => {} },
+}) => {
const [updates, setUpdate] = useState(0);
lowdefy._internal.updaters[block.id] = () => setUpdate(updates + 1);
+
return (
{
- await block.triggerEvent({ name: 'onMount' });
+ await block.triggerEvent({
+ name: 'onMount',
+ progress: () => {
+ progress.dispatch({
+ type: 'increment',
+ });
+ },
+ });
}}
triggerEventAsync={() => {
- block.triggerEvent({ name: 'onMountAsync' });
+ block.triggerEvent({
+ name: 'onMountAsync',
+ progress: () => {
+ progress.dispatch({
+ type: 'increment',
+ });
+ },
+ });
+ progress.dispatch({
+ type: 'done',
+ });
}}
>
{(eventLoading) => (
@@ -41,7 +66,7 @@ const Block = ({ block, Blocks, context, loading, lowdefy, parentLoading }) => {
block={block}
Blocks={Blocks}
context={context}
- loading={eventLoading || loading || block.eval.loading}
+ loading={eventLoading || parentLoading || block.eval.loading}
lowdefy={lowdefy}
updates={updates}
/>
diff --git a/packages/server/lib/components/block/Container.js b/packages/server/lib/components/block/Container.js
index 58d1f7e65..b672ac3b9 100644
--- a/packages/server/lib/components/block/Container.js
+++ b/packages/server/lib/components/block/Container.js
@@ -44,7 +44,7 @@ const Container = ({ block, Blocks, Component, context, loading, lowdefy }) => {
Blocks={Blocks.subBlocks[block.id][0]}
block={bl}
context={context}
- loading={loading}
+ parentLoading={loading}
lowdefy={lowdefy}
/>
))}
diff --git a/packages/server/lib/components/block/List.js b/packages/server/lib/components/block/List.js
index 956920739..b0d3c0c49 100644
--- a/packages/server/lib/components/block/List.js
+++ b/packages/server/lib/components/block/List.js
@@ -44,7 +44,7 @@ const List = ({ block, Blocks, Component, context, loading, lowdefy }) => {
Blocks={SBlock}
block={bl}
context={context}
- loading={loading}
+ parentLoading={loading}
lowdefy={lowdefy}
/>
))}
diff --git a/packages/server/lib/components/block/LoadingBlock.js b/packages/server/lib/components/block/LoadingBlock.js
index 7fc836b2f..abe53d066 100644
--- a/packages/server/lib/components/block/LoadingBlock.js
+++ b/packages/server/lib/components/block/LoadingBlock.js
@@ -22,15 +22,15 @@ import LoadingList from './LoadingList.js';
const blockMethods = {
makeCssClass,
- moveItemDown: () => null,
- moveItemUp: () => null,
- pushItem: () => null,
- registerEvent: () => null,
- registerMethod: () => null,
- removeItem: () => null,
- setValue: () => null,
- triggerEvent: () => null,
- unshiftItem: () => null,
+ moveItemDown: () => {},
+ moveItemUp: () => {},
+ pushItem: () => {},
+ registerEvent: () => {},
+ registerMethod: () => {},
+ removeItem: () => {},
+ setValue: () => {},
+ triggerEvent: () => {},
+ unshiftItem: () => {},
};
const LoadingBlock = ({ blockLayout, blockId, context, lowdefy, skeleton }) => {