tahamajs/IE / Projects /front /node_modules /@tanstack /react-query /build /modern /useMutationState.js
| "use client"; | |
| // src/useMutationState.ts | |
| import * as React from "react"; | |
| import { notifyManager, replaceEqualDeep } from "@tanstack/query-core"; | |
| import { useQueryClient } from "./QueryClientProvider.js"; | |
| function useIsMutating(filters, queryClient) { | |
| const client = useQueryClient(queryClient); | |
| return useMutationState( | |
| { filters: { ...filters, status: "pending" } }, | |
| client | |
| ).length; | |
| } | |
| function getResult(mutationCache, options) { | |
| return mutationCache.findAll(options.filters).map( | |
| (mutation) => options.select ? options.select(mutation) : mutation.state | |
| ); | |
| } | |
| function useMutationState(options = {}, queryClient) { | |
| const mutationCache = useQueryClient(queryClient).getMutationCache(); | |
| const optionsRef = React.useRef(options); | |
| const result = React.useRef(null); | |
| if (result.current === null) { | |
| result.current = getResult(mutationCache, options); | |
| } | |
| React.useEffect(() => { | |
| optionsRef.current = options; | |
| }); | |
| return React.useSyncExternalStore( | |
| React.useCallback( | |
| (onStoreChange) => mutationCache.subscribe(() => { | |
| const nextResult = replaceEqualDeep( | |
| result.current, | |
| getResult(mutationCache, optionsRef.current) | |
| ); | |
| if (result.current !== nextResult) { | |
| result.current = nextResult; | |
| notifyManager.schedule(onStoreChange); | |
| } | |
| }), | |
| [mutationCache] | |
| ), | |
| () => result.current, | |
| () => result.current | |
| ); | |
| } | |
| export { | |
| useIsMutating, | |
| useMutationState | |
| }; | |
| //# sourceMappingURL=useMutationState.js.map |
Xet Storage Details
- Size:
- 1.54 kB
- Xet hash:
- 35714c7761ef9633390eaea38937eea1dec0401c1520b418140896737cd167a8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.