Files
jp 0917366cdf Separate JSON API backend (vm_api.py) + React+TanStack frontend scaffold
- vm_api.py: pure FastAPI JSON API on :8098 with CORS
- vm-api.service: systemd unit for API (replaces inline HTML vm_web.py for frontend)
- vm_web.py: kept intact as fallback; Apache now proxies /api/ -> :8098
- frontend/: Vite + React + TanStack Query scaffold
- Apache vhost updated: DocumentRoot -> frontend/dist, /api/ proxy, SPA fallback
- All original HTML pages still functional via :8099 during transition
2026-08-13 17:42:33 +01:00

45 lines
1.2 KiB
JavaScript

"use client";
// src/useMutation.ts
import * as React from "react";
import {
MutationObserver,
noop,
notifyManager,
shouldThrowError
} from "@tanstack/query-core";
import { useQueryClient } from "./QueryClientProvider.js";
function useMutation(options, queryClient) {
const client = useQueryClient(queryClient);
const [observer] = React.useState(
() => new MutationObserver(
client,
options
)
);
React.useEffect(() => {
observer.setOptions(options);
}, [observer, options]);
const result = React.useSyncExternalStore(
React.useCallback(
(onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),
[observer]
),
() => observer.getCurrentResult(),
() => observer.getCurrentResult()
);
const mutate = React.useCallback(
(variables, mutateOptions) => {
observer.mutate(variables, mutateOptions).catch(noop);
},
[observer]
);
if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {
throw result.error;
}
return { ...result, mutate, mutateAsync: result.mutate };
}
export {
useMutation
};
//# sourceMappingURL=useMutation.js.map