Merge remote-tracking branch 'origin/main' into fix-versioning-button

This commit is contained in:
Yury Bondarenko
2024-04-12 11:48:37 +02:00
2842 changed files with 75920 additions and 52931 deletions

View File

@@ -1,27 +1,59 @@
import {Injectable} from '@angular/core';
import {Actions, createEffect, ofType} from '@ngrx/effects';
import {Store} from '@ngrx/store';
import {TranslateService} from '@ngx-translate/core';
import { Injectable } from '@angular/core';
import {
Actions,
createEffect,
ofType,
} from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
import findKey from 'lodash/findKey';
import isEqual from 'lodash/isEqual';
import union from 'lodash/union';
import {
from as observableFrom,
Observable,
of as observableOf,
} from 'rxjs';
import {
catchError,
filter,
map,
mergeMap,
switchMap,
take,
tap,
withLatestFrom,
} from 'rxjs/operators';
import {from as observableFrom, Observable, of as observableOf} from 'rxjs';
import {catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom} from 'rxjs/operators';
import {SubmissionObject} from '../../core/submission/models/submission-object.model';
import {WorkflowItem} from '../../core/submission/models/workflowitem.model';
import {WorkspaceitemSectionUploadObject} from '../../core/submission/models/workspaceitem-section-upload.model';
import {WorkspaceitemSectionsObject} from '../../core/submission/models/workspaceitem-sections.model';
import {WorkspaceItem} from '../../core/submission/models/workspaceitem.model';
import {SubmissionJsonPatchOperationsService} from '../../core/submission/submission-json-patch-operations.service';
import {isEmpty, isNotEmpty, isNotUndefined} from '../../shared/empty.util';
import {NotificationsService} from '../../shared/notifications/notifications.service';
import {SectionsType} from '../sections/sections-type';
import {SectionsService} from '../sections/sections.service';
import {SubmissionState} from '../submission.reducers';
import {SubmissionService} from '../submission.service';
import { environment } from '../../../environments/environment';
import { RemoteData } from '../../core/data/remote-data';
import { Item } from '../../core/shared/item.model';
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
import { SubmissionObject } from '../../core/submission/models/submission-object.model';
import { WorkflowItem } from '../../core/submission/models/workflowitem.model';
import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model';
import { WorkspaceitemSectionDuplicatesObject } from '../../core/submission/models/workspaceitem-section-duplicates.model';
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
import { WorkspaceitemSectionsObject } from '../../core/submission/models/workspaceitem-sections.model';
import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service';
import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service';
import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service';
import {
isEmpty,
isNotEmpty,
isNotUndefined,
} from '../../shared/empty.util';
import { FormState } from '../../shared/form/form.reducer';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { followLink } from '../../shared/utils/follow-link-config.model';
import { SectionsService } from '../sections/sections.service';
import { SectionsType } from '../sections/sections-type';
import { SubmissionState } from '../submission.reducers';
import { SubmissionService } from '../submission.service';
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
import parseSectionErrors from '../utils/parseSectionErrors';
import {
CleanDuplicateDetectionAction,
CompleteInitSubmissionFormAction,
DepositSubmissionAction,
DepositSubmissionErrorAction,
@@ -44,21 +76,10 @@ import {
SubmissionObjectActionTypes,
UpdateSectionDataAction,
UpdateSectionDataSuccessAction,
CleanDuplicateDetectionAction
} from './submission-objects.actions';
import { SubmissionObjectEntry } from './submission-objects.reducer';
import { Item } from '../../core/shared/item.model';
import { RemoteData } from '../../core/data/remote-data';
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service';
import { followLink } from '../../shared/utils/follow-link-config.model';
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
import { FormState } from '../../shared/form/form.reducer';
import { SubmissionSectionObject } from './submission-section-object.model';
import { SubmissionSectionError } from './submission-section-error.model';
import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service';
import { WorkspaceitemSectionDuplicatesObject } from '../../core/submission/models/workspaceitem-section-duplicates.model';
import { environment } from '../../../environments/environment';
import { SubmissionSectionObject } from './submission-section-object.model';
@Injectable()
export class SubmissionObjectEffects {
@@ -99,8 +120,8 @@ export class SubmissionObjectEffects {
sectionDefinition.visibility,
enabled,
sectionData,
sectionErrors
)
sectionErrors,
),
);
});
return { action: action, definition: definition, mappedActions: mappedActions };
@@ -108,7 +129,7 @@ export class SubmissionObjectEffects {
mergeMap((result) => {
return observableFrom(
result.mappedActions.concat(
new CompleteInitSubmissionFormAction(result.action.payload.submissionId)
new CompleteInitSubmissionFormAction(result.action.payload.submissionId),
));
})));
@@ -125,7 +146,7 @@ export class SubmissionObjectEffects {
action.payload.submissionDefinition,
action.payload.sections,
action.payload.item,
null
null,
))));
/**
@@ -138,8 +159,8 @@ export class SubmissionObjectEffects {
this.submissionService.getSubmissionObjectLinkName(),
action.payload.submissionId,
'sections').pipe(
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
})));
/**
@@ -152,8 +173,8 @@ export class SubmissionObjectEffects {
this.submissionService.getSubmissionObjectLinkName(),
action.payload.submissionId,
'sections').pipe(
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
})));
/**
@@ -193,8 +214,8 @@ export class SubmissionObjectEffects {
action.payload.submissionId,
'sections',
action.payload.sectionId).pipe(
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
})));
/**
@@ -221,7 +242,7 @@ export class SubmissionObjectEffects {
} else {
response$ = this.submissionObjectService.findById(action.payload.submissionId, false, true, followLink('item'), followLink('collection')).pipe(
getFirstSucceededRemoteDataPayload(),
map((submissionObject: SubmissionObject) => [submissionObject])
map((submissionObject: SubmissionObject) => [submissionObject]),
);
}
return response$.pipe(
@@ -233,7 +254,7 @@ export class SubmissionObjectEffects {
null,
this.translate.instant('submission.sections.general.cannot_deposit'),
null,
true
true,
);
return new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, false, true);
}
@@ -250,7 +271,7 @@ export class SubmissionObjectEffects {
switchMap(([action, state]: [DepositSubmissionAction, any]) => {
return this.submissionService.depositSubmission(state.submission.objects[action.payload.submissionId].selfUrl).pipe(
map(() => new DepositSubmissionSuccessAction(action.payload.submissionId)),
catchError((error) => observableOf(new DepositSubmissionErrorAction(action.payload.submissionId))));
catchError((error: unknown) => observableOf(new DepositSubmissionErrorAction(action.payload.submissionId))));
})));
/**
@@ -302,7 +323,7 @@ export class SubmissionObjectEffects {
if (section.sectionType === SectionsType.SubmissionForm) {
const submissionObject$ = this.submissionObjectService
.findById(action.payload.submissionId, true, false, followLink('item')).pipe(
getFirstSucceededRemoteDataPayload()
getFirstSucceededRemoteDataPayload(),
);
const item$ = submissionObject$.pipe(
@@ -313,7 +334,7 @@ export class SubmissionObjectEffects {
return item$.pipe(
map((item: Item) => item.metadata),
filter((metadata) => !isEqual(action.payload.data, metadata)),
map((metadata: any) => new UpdateSectionDataAction(action.payload.submissionId, action.payload.sectionId, metadata, action.payload.errorsToShow, action.payload.serverValidationErrors, action.payload.metadata))
map((metadata: any) => new UpdateSectionDataAction(action.payload.submissionId, action.payload.sectionId, metadata, action.payload.errorsToShow, action.payload.serverValidationErrors, action.payload.metadata)),
);
} else {
return observableOf(new UpdateSectionDataSuccessAction());