reactjrx 1.105.1 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +16 -5
- package/dist/index.js +16 -5
- package/dist/lib/queries/useMutation$.d.ts +74 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -71,6 +71,9 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
|
|
|
71
71
|
);
|
|
72
72
|
const sourceRef = useLiveRef(source$);
|
|
73
73
|
const optionsRef = useLiveRef(options);
|
|
74
|
+
const getSnapshot = React.useCallback(() => {
|
|
75
|
+
return valueRef.current;
|
|
76
|
+
}, []);
|
|
74
77
|
const subscribe = React.useCallback(
|
|
75
78
|
(next) => {
|
|
76
79
|
const source = sourceRef.current;
|
|
@@ -100,10 +103,7 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
|
|
|
100
103
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
104
|
[...deps]
|
|
102
105
|
);
|
|
103
|
-
const
|
|
104
|
-
return valueRef.current;
|
|
105
|
-
}, []);
|
|
106
|
-
const result = React.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
106
|
+
const result = React.useSyncExternalStore(subscribe, getSnapshot);
|
|
107
107
|
return result;
|
|
108
108
|
}
|
|
109
109
|
function useSubscribe(source, deps = []) {
|
|
@@ -709,6 +709,13 @@ function useQuery$(options, queryClient) {
|
|
|
709
709
|
return result;
|
|
710
710
|
}
|
|
711
711
|
function useMutation$(options, queryClient) {
|
|
712
|
+
const stateSubject = useBehaviorSubject({
|
|
713
|
+
status: "idle",
|
|
714
|
+
isPending: false,
|
|
715
|
+
isError: false,
|
|
716
|
+
isSuccess: false,
|
|
717
|
+
isIdle: true
|
|
718
|
+
});
|
|
712
719
|
const mutationFnAsync = (variables) => {
|
|
713
720
|
let lastData;
|
|
714
721
|
return new Promise((resolve, reject) => {
|
|
@@ -735,7 +742,11 @@ function useMutation$(options, queryClient) {
|
|
|
735
742
|
},
|
|
736
743
|
queryClient
|
|
737
744
|
);
|
|
738
|
-
|
|
745
|
+
const { status, isPending, isError, isSuccess, isIdle } = result;
|
|
746
|
+
React.useEffect(() => {
|
|
747
|
+
stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
|
|
748
|
+
}, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
|
|
749
|
+
return { ...result, state$: stateSubject.current };
|
|
739
750
|
}
|
|
740
751
|
function hasObjectPrototype(o) {
|
|
741
752
|
return Object.prototype.toString.call(o) === "[object Object]";
|
package/dist/index.js
CHANGED
|
@@ -53,6 +53,9 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
|
|
|
53
53
|
);
|
|
54
54
|
const sourceRef = useLiveRef(source$);
|
|
55
55
|
const optionsRef = useLiveRef(options);
|
|
56
|
+
const getSnapshot = useCallback(() => {
|
|
57
|
+
return valueRef.current;
|
|
58
|
+
}, []);
|
|
56
59
|
const subscribe = useCallback(
|
|
57
60
|
(next) => {
|
|
58
61
|
const source = sourceRef.current;
|
|
@@ -82,10 +85,7 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
|
|
|
82
85
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83
86
|
[...deps]
|
|
84
87
|
);
|
|
85
|
-
const
|
|
86
|
-
return valueRef.current;
|
|
87
|
-
}, []);
|
|
88
|
-
const result = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
88
|
+
const result = useSyncExternalStore(subscribe, getSnapshot);
|
|
89
89
|
return result;
|
|
90
90
|
}
|
|
91
91
|
function useSubscribe(source, deps = []) {
|
|
@@ -691,6 +691,13 @@ function useQuery$(options, queryClient) {
|
|
|
691
691
|
return result;
|
|
692
692
|
}
|
|
693
693
|
function useMutation$(options, queryClient) {
|
|
694
|
+
const stateSubject = useBehaviorSubject({
|
|
695
|
+
status: "idle",
|
|
696
|
+
isPending: false,
|
|
697
|
+
isError: false,
|
|
698
|
+
isSuccess: false,
|
|
699
|
+
isIdle: true
|
|
700
|
+
});
|
|
694
701
|
const mutationFnAsync = (variables) => {
|
|
695
702
|
let lastData;
|
|
696
703
|
return new Promise((resolve, reject) => {
|
|
@@ -717,7 +724,11 @@ function useMutation$(options, queryClient) {
|
|
|
717
724
|
},
|
|
718
725
|
queryClient
|
|
719
726
|
);
|
|
720
|
-
|
|
727
|
+
const { status, isPending, isError, isSuccess, isIdle } = result;
|
|
728
|
+
useEffect(() => {
|
|
729
|
+
stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
|
|
730
|
+
}, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
|
|
731
|
+
return { ...result, state$: stateSubject.current };
|
|
721
732
|
}
|
|
722
733
|
function hasObjectPrototype(o) {
|
|
723
734
|
return Object.prototype.toString.call(o) === "[object Object]";
|
|
@@ -1,5 +1,77 @@
|
|
|
1
|
-
import { DefaultError, QueryClient, UseMutationOptions } from '@tanstack/react-query';
|
|
1
|
+
import { DefaultError, QueryClient, UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
export declare function useMutation$<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, "mutationFn"> & {
|
|
4
4
|
mutationFn: ((variables: TVariables) => Observable<TData>) | Observable<TData>;
|
|
5
|
-
}, queryClient?: QueryClient):
|
|
5
|
+
}, queryClient?: QueryClient): {
|
|
6
|
+
state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
|
|
7
|
+
data: undefined;
|
|
8
|
+
variables: undefined;
|
|
9
|
+
error: null;
|
|
10
|
+
isError: false;
|
|
11
|
+
isIdle: true;
|
|
12
|
+
isPending: false;
|
|
13
|
+
isSuccess: false;
|
|
14
|
+
status: "idle";
|
|
15
|
+
mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
|
|
16
|
+
reset: () => void;
|
|
17
|
+
context: TContext | undefined;
|
|
18
|
+
failureCount: number;
|
|
19
|
+
failureReason: TError | null;
|
|
20
|
+
isPaused: boolean;
|
|
21
|
+
submittedAt: number;
|
|
22
|
+
mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
|
|
23
|
+
} | {
|
|
24
|
+
state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
|
|
25
|
+
data: undefined;
|
|
26
|
+
variables: TVariables;
|
|
27
|
+
error: null;
|
|
28
|
+
isError: false;
|
|
29
|
+
isIdle: false;
|
|
30
|
+
isPending: true;
|
|
31
|
+
isSuccess: false;
|
|
32
|
+
status: "pending";
|
|
33
|
+
mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
|
|
34
|
+
reset: () => void;
|
|
35
|
+
context: TContext | undefined;
|
|
36
|
+
failureCount: number;
|
|
37
|
+
failureReason: TError | null;
|
|
38
|
+
isPaused: boolean;
|
|
39
|
+
submittedAt: number;
|
|
40
|
+
mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
|
|
41
|
+
} | {
|
|
42
|
+
state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
|
|
43
|
+
data: undefined;
|
|
44
|
+
error: TError;
|
|
45
|
+
variables: TVariables;
|
|
46
|
+
isError: true;
|
|
47
|
+
isIdle: false;
|
|
48
|
+
isPending: false;
|
|
49
|
+
isSuccess: false;
|
|
50
|
+
status: "error";
|
|
51
|
+
mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
|
|
52
|
+
reset: () => void;
|
|
53
|
+
context: TContext | undefined;
|
|
54
|
+
failureCount: number;
|
|
55
|
+
failureReason: TError | null;
|
|
56
|
+
isPaused: boolean;
|
|
57
|
+
submittedAt: number;
|
|
58
|
+
mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
|
|
59
|
+
} | {
|
|
60
|
+
state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
|
|
61
|
+
data: TData;
|
|
62
|
+
error: null;
|
|
63
|
+
variables: TVariables;
|
|
64
|
+
isError: false;
|
|
65
|
+
isIdle: false;
|
|
66
|
+
isPending: false;
|
|
67
|
+
isSuccess: true;
|
|
68
|
+
status: "success";
|
|
69
|
+
mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
|
|
70
|
+
reset: () => void;
|
|
71
|
+
context: TContext | undefined;
|
|
72
|
+
failureCount: number;
|
|
73
|
+
failureReason: TError | null;
|
|
74
|
+
isPaused: boolean;
|
|
75
|
+
submittedAt: number;
|
|
76
|
+
mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
|
|
77
|
+
};
|