Working service query
All checks were successful
Lint / lint (push) Successful in 13s

This commit is contained in:
Julien Valverdé
2025-03-04 23:18:35 +01:00
parent 3af7c3bf7a
commit adaadf13b2
2 changed files with 14 additions and 13 deletions

View File

@@ -1,8 +1,9 @@
import { QueryContext } from "@/query/reffuse" import { QueryContext } from "@/query/reffuse"
import { Uuid4Query } from "@/query/services" import { Uuid4Query } from "@/query/services"
import { Uuid4QueryService } from "@/query/views/Uuid4QueryService"
import { R } from "@/reffuse" import { R } from "@/reffuse"
import { createFileRoute } from "@tanstack/react-router" import { createFileRoute } from "@tanstack/react-router"
import { Effect, Layer } from "effect" import { Layer } from "effect"
import { useMemo } from "react" import { useMemo } from "react"
@@ -11,16 +12,16 @@ export const Route = createFileRoute("/query/service")({
}) })
function RouteComponent() { function RouteComponent() {
const context = R.useContext() const context = R.useLayer()
const layer = useMemo(() => Layer.empty.pipe( const layer = useMemo(() => Layer.empty.pipe(
Layer.provideMerge(Uuid4Query.Uuid4QueryLive), Layer.provideMerge(Uuid4Query.Uuid4QueryLive),
Layer.provide(context) Layer.provide(context),
), []) ), [context])
return ( return (
<QueryContext.Provider layer={layer}> <QueryContext.Provider layer={layer}>
<Uuid4QueryService />
</QueryContext.Provider> </QueryContext.Provider>
) )
} }

View File

@@ -97,15 +97,15 @@ export function useMergeAll<T extends Array<unknown>>(
return React.useMemo(() => Context.mergeAll(...values), values) return React.useMemo(() => Context.mergeAll(...values), values)
} }
export function useMergeAllLayers<T extends Array.NonEmptyArray<unknown>>( export function useMergeAllLayers<T extends Array<unknown>>(
...contexts: [...{ [K in keyof T]: ReffuseContext<T[K]> }] ...contexts: [...{ [K in keyof T]: ReffuseContext<T[K]> }]
): Layer.Layer<T[number]> { ): Layer.Layer<T[number]> {
const values = Array.map( const values = contexts.map(v => React.use(v.Context))
contexts as Array.NonEmptyArray<ReffuseContext<T[number]>>,
v => React.use(v.Context),
)
return React.useMemo(() => Layer.mergeAll( return React.useMemo(() => Array.isNonEmptyArray(values)
? Layer.mergeAll(
...Array.map(values, context => Layer.effectContext(Effect.succeed(context))) ...Array.map(values, context => Layer.effectContext(Effect.succeed(context)))
), values) )
: Layer.empty as Layer.Layer<T[number]>,
values)
} }