From 5ac3a932d9c287fe9141b992d0b3978b4b8661bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 7 Mar 2025 23:17:32 +0100 Subject: [PATCH] Query work --- packages/extension-query/src/QueryExtension.ts | 2 +- packages/extension-query/src/QueryRunner.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/extension-query/src/QueryExtension.ts b/packages/extension-query/src/QueryExtension.ts index cdc0d7e..8b0c6dd 100644 --- a/packages/extension-query/src/QueryExtension.ts +++ b/packages/extension-query/src/QueryExtension.ts @@ -8,7 +8,7 @@ import * as QueryService from "./QueryService.js" export interface UseQueryProps { readonly key: Stream.Stream - readonly query: () => Effect.Effect + readonly query: (key: K) => Effect.Effect readonly refreshOnWindowFocus?: boolean } diff --git a/packages/extension-query/src/QueryRunner.ts b/packages/extension-query/src/QueryRunner.ts index 97e3d35..6fb7da0 100644 --- a/packages/extension-query/src/QueryRunner.ts +++ b/packages/extension-query/src/QueryRunner.ts @@ -5,10 +5,12 @@ import { Effect, Fiber, identity, Option, Ref, Stream, SubscriptionRef } from "e export interface QueryRunner { readonly key: Stream.Stream - readonly queryRef: SubscriptionRef.SubscriptionRef> + readonly query: (key: K) => Effect.Effect + readonly stateRef: SubscriptionRef.SubscriptionRef> readonly fiberRef: SubscriptionRef.SubscriptionRef>> + readonly interrupt: Effect.Effect readonly forkInterrupt: Effect.Effect> readonly forkFetch: Effect.Effect> readonly forkRefresh: Effect.Effect> @@ -19,7 +21,7 @@ export interface QueryRunner { export interface MakeProps { readonly key: Stream.Stream - readonly query: Effect.Effect + readonly query: (key: K) => Effect.Effect } export const make = ( @@ -27,7 +29,6 @@ export const make = ( ): Effect.Effect, never, R> => Effect.gen(function*() { const context = yield* Effect.context() - const queryRef = yield* SubscriptionRef.make(props.query) const stateRef = yield* SubscriptionRef.make(AsyncData.noData()) const fiberRef = yield* SubscriptionRef.make(Option.none>()) @@ -86,8 +87,8 @@ export const make = ( return AsyncData.refreshing(previous.previous) return AsyncData.loading() }).pipe( - Effect.andThen(queryRef), - Effect.flatMap(identity), + + Effect.andThen(props.query()), Effect.matchCauseEffect({ onSuccess: v => Ref.set(stateRef, AsyncData.success(v)), onFailure: c => Ref.set(stateRef, AsyncData.failure(c)), @@ -115,7 +116,8 @@ export const make = ( return { key: props.key, - queryRef, + query: props.query, + stateRef, fiberRef,