mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
127655: Fixed getFirstDataDefinition not always returning a correct SubmitDataResponseDefinitionObject, leading to an infinite loading screen
- Also fixed an issue where the collection switcher could accidentally show the old collection name instead of the new one - Also updated the WorkspaceItemPageResolver & WorkflowItemPageResolver to embed the collection to use fewer requests
This commit is contained in:
@@ -33,7 +33,7 @@ export const getFirstDataDefinition = () =>
|
|||||||
if (response.hasFailed) {
|
if (response.hasFailed) {
|
||||||
throw new Error(response.errorMessage);
|
throw new Error(response.errorMessage);
|
||||||
} else {
|
} else {
|
||||||
return hasValue(response.payload) ? response.payload.dataDefinition : response.payload;
|
return hasValue(response?.payload?.dataDefinition) ? response.payload.dataDefinition : [response.payload];
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
|
@@ -27,7 +27,7 @@ import { TestScheduler } from 'rxjs/testing';
|
|||||||
import { SectionsService } from '../sections/sections.service';
|
import { SectionsService } from '../sections/sections.service';
|
||||||
import { VisibilityType } from '../sections/visibility-type';
|
import { VisibilityType } from '../sections/visibility-type';
|
||||||
|
|
||||||
describe('SubmissionFormComponent Component', () => {
|
describe('SubmissionFormComponent', () => {
|
||||||
|
|
||||||
let comp: SubmissionFormComponent;
|
let comp: SubmissionFormComponent;
|
||||||
let compAsAny: any;
|
let compAsAny: any;
|
||||||
@@ -197,7 +197,6 @@ describe('SubmissionFormComponent Component', () => {
|
|||||||
});
|
});
|
||||||
scheduler.flush();
|
scheduler.flush();
|
||||||
|
|
||||||
expect(comp.collectionId).toEqual(submissionObjectNew.collection.id);
|
|
||||||
expect(comp.submissionDefinition).toEqual(submissionObjectNew.submissionDefinition);
|
expect(comp.submissionDefinition).toEqual(submissionObjectNew.submissionDefinition);
|
||||||
expect(comp.definitionId).toEqual(submissionObjectNew.submissionDefinition.name);
|
expect(comp.definitionId).toEqual(submissionObjectNew.submissionDefinition.name);
|
||||||
expect(comp.sections).toEqual(submissionObjectNew.sections);
|
expect(comp.sections).toEqual(submissionObjectNew.sections);
|
||||||
@@ -235,7 +234,6 @@ describe('SubmissionFormComponent Component', () => {
|
|||||||
});
|
});
|
||||||
scheduler.flush();
|
scheduler.flush();
|
||||||
|
|
||||||
expect(comp.collectionId).toEqual('45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb');
|
|
||||||
expect(submissionServiceStub.resetSubmissionObject).not.toHaveBeenCalled();
|
expect(submissionServiceStub.resetSubmissionObject).not.toHaveBeenCalled();
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
@@ -249,13 +249,12 @@ export class SubmissionFormComponent implements OnChanges, OnDestroy {
|
|||||||
* new submission object
|
* new submission object
|
||||||
*/
|
*/
|
||||||
onCollectionChange(submissionObject: SubmissionObject) {
|
onCollectionChange(submissionObject: SubmissionObject) {
|
||||||
this.collectionId = (submissionObject.collection as Collection).id;
|
|
||||||
if (this.definitionId !== (submissionObject.submissionDefinition as SubmissionDefinitionsModel).name) {
|
if (this.definitionId !== (submissionObject.submissionDefinition as SubmissionDefinitionsModel).name) {
|
||||||
this.sections = submissionObject.sections;
|
this.sections = submissionObject.sections;
|
||||||
this.submissionDefinition = (submissionObject.submissionDefinition as SubmissionDefinitionsModel);
|
this.submissionDefinition = (submissionObject.submissionDefinition as SubmissionDefinitionsModel);
|
||||||
this.definitionId = this.submissionDefinition.name;
|
this.definitionId = this.submissionDefinition.name;
|
||||||
this.submissionService.resetSubmissionObject(
|
this.submissionService.resetSubmissionObject(
|
||||||
this.collectionId,
|
(submissionObject.collection as Collection).id,
|
||||||
this.submissionId,
|
this.submissionId,
|
||||||
submissionObject._links.self.href,
|
submissionObject._links.self.href,
|
||||||
this.submissionDefinition,
|
this.submissionDefinition,
|
||||||
|
@@ -27,6 +27,7 @@ export class WorkflowItemPageResolver implements Resolve<RemoteData<WorkflowItem
|
|||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
followLink('item'),
|
followLink('item'),
|
||||||
|
followLink('collection'),
|
||||||
).pipe(
|
).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
);
|
);
|
||||||
|
@@ -4,14 +4,14 @@ import { Observable } from 'rxjs';
|
|||||||
import { RemoteData } from '../core/data/remote-data';
|
import { RemoteData } from '../core/data/remote-data';
|
||||||
import { followLink } from '../shared/utils/follow-link-config.model';
|
import { followLink } from '../shared/utils/follow-link-config.model';
|
||||||
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
||||||
import { WorkflowItem } from '../core/submission/models/workflowitem.model';
|
import { WorkspaceItem } from '../core/submission/models/workspaceitem.model';
|
||||||
import { getFirstCompletedRemoteData } from '../core/shared/operators';
|
import { getFirstCompletedRemoteData } from '../core/shared/operators';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class represents a resolver that requests a specific workflow item before the route is activated
|
* This class represents a resolver that requests a specific workflow item before the route is activated
|
||||||
*/
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WorkspaceItemPageResolver implements Resolve<RemoteData<WorkflowItem>> {
|
export class WorkspaceItemPageResolver implements Resolve<RemoteData<WorkspaceItem>> {
|
||||||
constructor(private workspaceItemService: WorkspaceitemDataService) {
|
constructor(private workspaceItemService: WorkspaceitemDataService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,11 +22,12 @@ export class WorkspaceItemPageResolver implements Resolve<RemoteData<WorkflowIte
|
|||||||
* @returns Observable<<RemoteData<Item>> Emits the found workflow item based on the parameters in the current route,
|
* @returns Observable<<RemoteData<Item>> Emits the found workflow item based on the parameters in the current route,
|
||||||
* or an error if something went wrong
|
* or an error if something went wrong
|
||||||
*/
|
*/
|
||||||
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<WorkflowItem>> {
|
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<WorkspaceItem>> {
|
||||||
return this.workspaceItemService.findById(route.params.id,
|
return this.workspaceItemService.findById(route.params.id,
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
followLink('item'),
|
followLink('item'),
|
||||||
|
followLink('collection'),
|
||||||
).pipe(
|
).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user