Continuous Integration / config (pull_request) Successful in 12s
Continuous Integration / changes (pull_request) Successful in 22s
Continuous Integration / backend-build (pull_request) Successful in 5m53s
Continuous Integration / vulnerability-scan (pull_request) Successful in 5m46s
Continuous Integration / frontend-prepare (pull_request) Successful in 1m54s
Continuous Integration / backend-test (pull_request) Successful in 7m37s
Continuous Integration / frontend-build (pull_request) Successful in 2m14s
Continuous Integration / frontend-test (pull_request) Successful in 4m59s
Continuous Integration / frontend-lint (pull_request) Successful in 2m2s
Continuous Integration / publish-production (pull_request) Skipped
Continuous Integration / deploy-production (pull_request) Skipped
Continuous Integration / publish-test (pull_request) Successful in 7m34s
Continuous Integration / deploy-test (pull_request) Skipped
Implements Unit 2 "Offerings" (backend module, admin CRUD UI with drag-and-drop reordering, public GET /api/v1/offerings endpoint) and executes the feature's D-15 CI/CD cutover, switching the deploy pipeline's build/publish target from SlpModularCms.Api to SlpModularCms.Api.SlpSoftware. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FWyStNL2ZsjrS7FLd7xvvN
19 lines
765 B
TypeScript
19 lines
765 B
TypeScript
import { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';
|
|
import { api } from '@/lib/api-client';
|
|
import type { MoveDirection } from './types';
|
|
|
|
export function useMoveOffering(
|
|
direction: MoveDirection,
|
|
options?: Pick<UseMutationOptions<void, Error, string>, 'onSuccess' | 'onError'>,
|
|
) {
|
|
const queryClient = useQueryClient();
|
|
return useMutation<void, Error, string>({
|
|
mutationFn: (id) => api.post<void>(`/api/v1/offerings/admin/${id}/move-${direction}`),
|
|
onSuccess: (data, variables, ...rest) => {
|
|
queryClient.invalidateQueries({ queryKey: ['offerings', 'admin'] });
|
|
options?.onSuccess?.(data, variables, ...rest);
|
|
},
|
|
onError: options?.onError,
|
|
});
|
|
}
|