From a1643aec52123bf6a1cad771f095520124945087 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 29 Jul 2024 22:37:07 +0700 Subject: [PATCH] fix: pass all item data to hydrogen component loader --- .../hydrogen/src/WeaverseHydrogenRoot.tsx | 6 ++--- packages/hydrogen/src/weaverse-client.ts | 22 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/hydrogen/src/WeaverseHydrogenRoot.tsx b/packages/hydrogen/src/WeaverseHydrogenRoot.tsx index 0155718f..366ca34a 100644 --- a/packages/hydrogen/src/WeaverseHydrogenRoot.tsx +++ b/packages/hydrogen/src/WeaverseHydrogenRoot.tsx @@ -1,6 +1,6 @@ import { Await, useLoaderData } from '@remix-run/react' import { WeaverseRoot } from '@weaverse/react' -import { Suspense, memo } from 'react' +import { type ComponentType, type JSX, Suspense, memo } from 'react' import { ErrorBoundary } from 'react-error-boundary' import { WeaverseEffect } from '~/Effect' @@ -62,8 +62,8 @@ function RenderRoot(props: { ) } -export function withWeaverse(Component: React.ComponentType) { - return (props: React.JSX.IntrinsicAttributes) => { +export function withWeaverse(Component: ComponentType) { + return (props: JSX.IntrinsicAttributes) => { let { settings } = useThemeSettingsStore() return ( diff --git a/packages/hydrogen/src/weaverse-client.ts b/packages/hydrogen/src/weaverse-client.ts index 4a80dbd2..80646db5 100644 --- a/packages/hydrogen/src/weaverse-client.ts +++ b/packages/hydrogen/src/weaverse-client.ts @@ -117,8 +117,7 @@ export class WeaverseClient { throw new Error('Missing Weaverse projectId!') } let url = `${weaverseHost}/${API}/project_configs` - // biome-ignore lint/suspicious/noImplicitAnyLet: - let res + let res: any let body = JSON.stringify({ isDesignMode, projectId }) if (isDesignMode) { res = await fetch(url, { method: 'POST', body }).then((res) => @@ -217,7 +216,7 @@ export class WeaverseClient { let items = page.items page.items = await Promise.all(items.map(this.execComponentLoader)) } - let data: WeaverseLoaderData = { + return { page, project, pageAssignment, @@ -232,7 +231,6 @@ export class WeaverseClient { }, }, } - return data } catch (e) { // biome-ignore lint/style/noUnusedTemplateLiteral: console.error(`❌ Page load failed.`, e) @@ -242,16 +240,18 @@ export class WeaverseClient { execComponentLoader = async (item: HydrogenComponentData) => { let { data = {}, type, id } = item - let schema = this.components.find(({ schema }) => schema?.type === type) - let loader = schema?.loader - if (loader && typeof loader === 'function') { + let component = this.components.find(({ schema }) => schema?.type === type) + let loader = component?.loader + if (typeof loader === 'function') { try { return { ...item, - loaderData: await loader({ - data, - weaverse: this, - }), + loaderData: await Promise.resolve( + loader({ + data: { ...generateDataFromSchema(component.schema), ...data }, + weaverse: this, + }), + ), } } catch (e) { console.warn('❌ Item loader run failed.', type, id, e)