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:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user