abstracted subscribe to state in composite

This commit is contained in:
Samuel Andert 2023-07-26 11:11:12 +02:00
parent e3f2dbacc8
commit 5c2f7afa5f
3 changed files with 21 additions and 16 deletions

View File

@ -1,12 +1,8 @@
<script>
export let id;
import { getCompositeStore } from '$lib/core/compositeStores';
import { onMount } from 'svelte';
const store = getCompositeStore(id);
export let services;
export let store;
onMount(async () => {
if (services && services.helloEarthAlert) {
@ -17,4 +13,6 @@
});
</script>
<div class="p-12 bg-blue-400">Hello Earth {JSON.stringify($store.pkpWallet.address)}</div>
{#if $store && $store.pkpWallet.address}
<div class="p-12 bg-blue-400">Hello Earth {JSON.stringify($store.pkpWallet.address)}</div>
{/if}

View File

@ -130,7 +130,7 @@ ${composite.layout.rows ? `grid-template-rows: ${composite.layout.rows};` : ''}
<svelte:component
this={Component}
id={composite.id}
{...composite.store}
store={getCompositeStore(composite.id)}
services={serviceProps}
/>
{:else if composite.component}
@ -147,7 +147,7 @@ ${composite.layout.rows ? `grid-template-rows: ${composite.layout.rows};` : ''}
<svelte:component
this={ChildComponent}
id={child.id}
{...child.store}
store={getCompositeStore(child.id)}
services={childServiceProps}
/>
{#if child.children && child.children.length}

View File

@ -1,24 +1,22 @@
<script>
import Wallet from '$lib/Wallet.svelte';
import HelloEarth from '$lib/components/HelloEarth/HelloEarth.svelte';
import Composite from '$lib/core/Composite.svelte';
let composite = {
id: 'composite',
layout: {
areas: `
"top top top"
"main main main"
"footer footer footer";
"top main"
"aside main"
"footer footer ";
`,
columns: '1fr 1fr 1fr',
columns: '1fr 1fr ',
rows: '1fr 1fr auto'
},
children: [
{
id: 'wallet',
id: 'w',
component: 'Wallet',
slot: 'top',
slot: 'aside',
store: {
pkpWallet: '',
rpcURL: 'https://rpc.gnosischain.com/',
@ -26,6 +24,15 @@
'046da3ba67065fd1e2726242ca01cd4601524893f4aa4b0042578fa6cbec28fa8c9a28eb9f7893932fc09717edc9e1db57e157a21eed346247c1db5a722a01f571'
}
},
{
id: 'hello',
component: 'HelloEarth',
slot: 'top',
map: {
pkpWallet: 'w.pkpWallet'
},
services: ['helloEarthAlert']
},
{
id: 'messages',
component: 'Messages',