Merge branch 'w2p-127655_fix-submission-form-getting-stuck-in-loop_contribute-7.6'

This commit is contained in:
Alexandre Vryghem
2025-05-06 14:35:20 +02:00
6 changed files with 9 additions and 11 deletions

View File

@@ -48,7 +48,7 @@ export const getFirstDataDefinition = () =>
if (response.hasFailed) {
throw new ErrorResponse({ statusText: response.errorMessage, statusCode: response.statusCode } as RequestError);
} else {
return hasValue(response.payload) ? response.payload.dataDefinition : response.payload;
return hasValue(response?.payload?.dataDefinition) ? response.payload.dataDefinition : [response.payload];
}
}),
distinctUntilChanged(),

View File

@@ -96,6 +96,7 @@ import {
getRemoteDataPayload,
} from '../../../../core/shared/operators';
import { SubmissionObject } from '../../../../core/submission/models/submission-object.model';
import { SUBMISSION_LINKS_TO_FOLLOW } from '../../../../core/submission/resolver/submission-links-to-follow';
import { SubmissionObjectDataService } from '../../../../core/submission/submission-object-data.service';
import { paginatedRelationsToItems } from '../../../../item-page/simple/item-types/shared/item-relationships-utils';
import { SubmissionService } from '../../../../submission/submission.service';
@@ -450,7 +451,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
*/
private setItem() {
const submissionObject$ = this.submissionObjectService
.findById(this.model.submissionId, true, true, followLink('item'), followLink('collection')).pipe(
.findById(this.model.submissionId, true, true, ...SUBMISSION_LINKS_TO_FOLLOW).pipe(
getAllSucceededRemoteData(),
getRemoteDataPayload(),
);

View File

@@ -47,7 +47,7 @@ import { SubmissionFormSectionAddComponent } from './section-add/submission-form
import { SubmissionFormComponent } from './submission-form.component';
import { ThemedSubmissionUploadFilesComponent } from './submission-upload-files/themed-submission-upload-files.component';
describe('SubmissionFormComponent Component', () => {
describe('SubmissionFormComponent', () => {
let comp: SubmissionFormComponent;
let compAsAny: any;
@@ -227,7 +227,6 @@ describe('SubmissionFormComponent Component', () => {
});
scheduler.flush();
expect(comp.collectionId).toEqual(submissionObjectNew.collection.id);
expect(comp.submissionDefinition).toEqual(submissionObjectNew.submissionDefinition);
expect(comp.definitionId).toEqual(submissionObjectNew.submissionDefinition.name);
expect(comp.sections).toEqual(submissionObjectNew.sections);
@@ -265,7 +264,6 @@ describe('SubmissionFormComponent Component', () => {
});
scheduler.flush();
expect(comp.collectionId).toEqual('45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb');
expect(submissionServiceStub.resetSubmissionObject).not.toHaveBeenCalled();
done();
});

View File

@@ -285,13 +285,12 @@ export class SubmissionFormComponent implements OnChanges, OnDestroy {
* new submission object
*/
onCollectionChange(submissionObject: SubmissionObject) {
this.collectionId = (submissionObject.collection as Collection).id;
if (this.definitionId !== (submissionObject.submissionDefinition as SubmissionDefinitionsModel).name) {
this.sections = submissionObject.sections;
this.submissionDefinition = (submissionObject.submissionDefinition as SubmissionDefinitionsModel);
this.definitionId = this.submissionDefinition.name;
this.submissionService.resetSubmissionObject(
this.collectionId,
(submissionObject.collection as Collection).id,
this.submissionId,
submissionObject._links.self.href,
this.submissionDefinition,

View File

@@ -9,8 +9,8 @@ import { Observable } from 'rxjs';
import { RemoteData } from '../core/data/remote-data';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
import { WorkflowItem } from '../core/submission/models/workflowitem.model';
import { SUBMISSION_LINKS_TO_FOLLOW } from '../core/submission/resolver/submission-links-to-follow';
import { WorkflowItemDataService } from '../core/submission/workflowitem-data.service';
import { followLink } from '../shared/utils/follow-link-config.model';
export const workflowItemPageResolver: ResolveFn<RemoteData<WorkflowItem>> = (
route: ActivatedRouteSnapshot,
@@ -21,7 +21,7 @@ export const workflowItemPageResolver: ResolveFn<RemoteData<WorkflowItem>> = (
route.params.id,
true,
false,
followLink('item'),
...SUBMISSION_LINKS_TO_FOLLOW,
).pipe(
getFirstCompletedRemoteData(),
);

View File

@@ -9,8 +9,8 @@ import { Observable } from 'rxjs';
import { RemoteData } from '../core/data/remote-data';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
import { WorkspaceItem } from '../core/submission/models/workspaceitem.model';
import { SUBMISSION_LINKS_TO_FOLLOW } from '../core/submission/resolver/submission-links-to-follow';
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
import { followLink } from '../shared/utils/follow-link-config.model';
/**
* Method for resolving a workflow item based on the parameters in the current route
@@ -28,7 +28,7 @@ export const workspaceItemPageResolver: ResolveFn<RemoteData<WorkspaceItem>> = (
return workspaceItemService.findById(route.params.id,
true,
false,
followLink('item'),
...SUBMISSION_LINKS_TO_FOLLOW,
).pipe(
getFirstCompletedRemoteData(),
);