Skip to content

Commit

Permalink
Update types of useWhen to return a promise
Browse files Browse the repository at this point in the history
  • Loading branch information
jmeistrich committed Oct 4, 2024
1 parent c19753a commit 13ddf51
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/react/useWhen.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { Selector, when, whenReady } from '@legendapp/state';
import { useMemo } from 'react';

export function useWhen<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)) {
return useMemo(() => when(predicate, effect), []);
export function useWhen<T>(predicate: Selector<T>): Promise<T>;
export function useWhen<T, T2>(predicate: Selector<T>, effect: (value: T) => T2): Promise<T2>;
export function useWhen<T, T2>(predicate: Selector<T>, effect?: (value: T) => T2): Promise<T2> {
return useMemo(() => when<T, T2>(predicate, effect as any), []);
}
export function useWhenReady<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)) {
return useMemo(() => whenReady(predicate, effect), []);
export function useWhenReady<T>(predicate: Selector<T>): Promise<T>;
export function useWhenReady<T, T2>(predicate: Selector<T>, effect: (value: T) => T2 | (() => T2)): Promise<T2>;
export function useWhenReady<T, T2>(predicate: Selector<T>, effect?: (value: T) => T2 | (() => T2)): Promise<T2> {
return useMemo(() => whenReady<T, T2>(predicate, effect as any), []);
}

0 comments on commit 13ddf51

Please sign in to comment.