From 13ddf5140d57d6d485956bd4ce83d7dd2335aad4 Mon Sep 17 00:00:00 2001 From: Jay Meistrich Date: Sat, 5 Oct 2024 00:16:36 +0200 Subject: [PATCH] Update types of useWhen to return a promise --- src/react/useWhen.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/react/useWhen.ts b/src/react/useWhen.ts index 3982509cd..572f5890e 100644 --- a/src/react/useWhen.ts +++ b/src/react/useWhen.ts @@ -1,9 +1,13 @@ import { Selector, when, whenReady } from '@legendapp/state'; import { useMemo } from 'react'; -export function useWhen(predicate: Selector, effect: (value: T) => any | (() => any)) { - return useMemo(() => when(predicate, effect), []); +export function useWhen(predicate: Selector): Promise; +export function useWhen(predicate: Selector, effect: (value: T) => T2): Promise; +export function useWhen(predicate: Selector, effect?: (value: T) => T2): Promise { + return useMemo(() => when(predicate, effect as any), []); } -export function useWhenReady(predicate: Selector, effect: (value: T) => any | (() => any)) { - return useMemo(() => whenReady(predicate, effect), []); +export function useWhenReady(predicate: Selector): Promise; +export function useWhenReady(predicate: Selector, effect: (value: T) => T2 | (() => T2)): Promise; +export function useWhenReady(predicate: Selector, effect?: (value: T) => T2 | (() => T2)): Promise { + return useMemo(() => whenReady(predicate, effect as any), []); }