Revert: Pass requiresMigration as hook parameter

- Calculate requiresMigration in SynchronizeStep using useMemo
- Pass requiresMigration to useCreateSyncJob hook
- Remove parameter from createSyncJob function call
This commit is contained in:
Roberto Jimenez Sanchez
2025-12-18 08:41:05 +01:00
parent e242f7c5f0
commit 97e3b7107d
2 changed files with 21 additions and 13 deletions
@@ -1,5 +1,5 @@
import { skipToken } from '@reduxjs/toolkit/query';
import { memo, useEffect, useState } from 'react';
import { memo, useEffect, useMemo, useState } from 'react';
import { useFormContext } from 'react-hook-form';
import { Trans, t } from '@grafana/i18n';
@@ -20,14 +20,29 @@ export interface SynchronizeStepProps {
}
export const SynchronizeStep = memo(function SynchronizeStep({ onCancel, isCancelling }: SynchronizeStepProps) {
const { watch, register, getValues } = useFormContext<WizardFormData>();
const { watch, register } = useFormContext<WizardFormData>();
const { setStepStatusInfo } = useStepStatus();
const repoName = watch('repositoryName') ?? '';
const syncTarget = watch('repository.sync.target');
const migrateResources = watch('migrate.migrateResources');
const { requiresMigration: baseRequiresMigration } = useResourceStats(repoName, syncTarget);
// Calculate final requiresMigration based on sync target and user selection
// For instance sync: use the base requiresMigration
// For folder sync: only migrate if user explicitly opts in via checkbox
const requiresMigration = useMemo(() => {
if (syncTarget === 'instance') {
return baseRequiresMigration;
}
if (syncTarget === 'folder') {
return migrateResources ?? false;
}
return baseRequiresMigration;
}, [syncTarget, baseRequiresMigration, migrateResources]);
const { createSyncJob } = useCreateSyncJob({
repoName,
requiresMigration,
setStepStatusInfo,
});
const [job, setJob] = useState<Job>();
@@ -64,15 +79,7 @@ export const SynchronizeStep = memo(function SynchronizeStep({ onCancel, isCance
const isButtonDisabled = hasError || (checked !== undefined && isRepositoryHealthy === false) || healthStatusNotReady;
const startSynchronization = async () => {
// Calculate final requiresMigration based on sync target and user selection
// For instance sync: use the base requiresMigration
// For folder sync: only migrate if user explicitly opts in via checkbox
let finalRequiresMigration = baseRequiresMigration;
if (syncTarget === 'folder') {
finalRequiresMigration = getValues('migrate.migrateResources') ?? false;
}
const response = await createSyncJob(finalRequiresMigration);
const response = await createSyncJob();
if (response) {
setJob(response);
}
@@ -5,13 +5,14 @@ import { StepStatusInfo } from '../types';
export interface UseCreateSyncJobParams {
repoName: string;
requiresMigration: boolean;
setStepStatusInfo?: (info: StepStatusInfo) => void;
}
export function useCreateSyncJob({ repoName, setStepStatusInfo }: UseCreateSyncJobParams) {
export function useCreateSyncJob({ repoName, requiresMigration, setStepStatusInfo }: UseCreateSyncJobParams) {
const [createJob, { isLoading }] = useCreateRepositoryJobsMutation();
const createSyncJob = async (requiresMigration: boolean) => {
const createSyncJob = async () => {
if (!repoName) {
setStepStatusInfo?.({
status: 'error',