diff --git a/specifyweb/frontend/js_src/lib/components/Merging/autoMerge.ts b/specifyweb/frontend/js_src/lib/components/Merging/autoMerge.ts index 0c405b0cb38..480ffdca3cc 100644 --- a/specifyweb/frontend/js_src/lib/components/Merging/autoMerge.ts +++ b/specifyweb/frontend/js_src/lib/components/Merging/autoMerge.ts @@ -54,6 +54,20 @@ export function autoMerge( ); } +export async function buildInitialMergedResource( + table: SpecifyTable, + resources: RA>, + shouldAutoPopulate: boolean, + targetId?: number +): Promise> { + return (shouldAutoPopulate + ? await postMergeResource( + resources, + autoMerge(table, resources, false, targetId) + ) + : autoMerge(table, resources, true, targetId)) as SerializedResource; +} + /** * Sort from newest to oldest */ diff --git a/specifyweb/frontend/js_src/lib/components/Merging/index.tsx b/specifyweb/frontend/js_src/lib/components/Merging/index.tsx index 2c3f280a947..130d9d530fb 100644 --- a/specifyweb/frontend/js_src/lib/components/Merging/index.tsx +++ b/specifyweb/frontend/js_src/lib/components/Merging/index.tsx @@ -22,7 +22,6 @@ import { icons } from '../Atoms/Icons'; import { Link } from '../Atoms/Link'; import { Submit } from '../Atoms/Submit'; import { LoadingContext } from '../Core/Contexts'; -import { addMissingFields } from '../DataModel/addMissingFields'; import { runAllFieldChecks } from '../DataModel/businessRules'; import type { AnySchema, SerializedResource } from '../DataModel/helperTypes'; import type { SpecifyResource } from '../DataModel/legacyTypes'; @@ -35,7 +34,11 @@ import { Dialog, dialogClassNames } from '../Molecules/Dialog'; import { userPreferences } from '../Preferences/userPreferences'; import { formatUrl } from '../Router/queryString'; import { OverlayContext, OverlayLocation } from '../Router/Router'; -import { autoMerge, postMergeResource } from './autoMerge'; +import { + autoMerge, + buildInitialMergedResource, + postMergeResource, +} from './autoMerge'; import { CompareRecords } from './Compare'; import { recordMergingTableSpec } from './definitions'; import { InvalidMergeRecordsDialog } from './InvalidMergeRecords'; @@ -225,15 +228,12 @@ function Merging({ 'autoPopulate' ); - const mergedPayload = shouldAutoPopulate - ? await postMergeResource( - initialRecords.current, - autoMerge(table, initialRecords.current, false, target.id) - ) - : addMissingFields( - table.name, - {} as Partial> - ); + const mergedPayload = await buildInitialMergedResource( + table, + initialRecords.current, + shouldAutoPopulate, + target.id + ); const mergedResource = deserializeResource( mergedPayload as SerializedResource diff --git a/specifyweb/frontend/js_src/lib/hooks/useValidation.tsx b/specifyweb/frontend/js_src/lib/hooks/useValidation.tsx index 511c3f97fa3..0bf10bd8848 100644 --- a/specifyweb/frontend/js_src/lib/hooks/useValidation.tsx +++ b/specifyweb/frontend/js_src/lib/hooks/useValidation.tsx @@ -2,7 +2,10 @@ import React from 'react'; import { InFormEditorContext } from '../components/FormEditor/Context'; import type { Input } from '../components/Forms/validationHelpers'; -import { hasNativeErrors, isInputTouched } from '../components/Forms/validationHelpers'; +import { + hasNativeErrors, + isInputTouched, +} from '../components/Forms/validationHelpers'; import { listen } from '../utils/events'; import type { RA } from '../utils/types';