[CST-12043] feature: add primary bitstream switch

This commit is contained in:
Vlad Nouski
2023-10-20 16:07:31 +02:00
parent a55eb97a6a
commit ffdeca69f4
13 changed files with 303 additions and 77 deletions

View File

@@ -8,11 +8,13 @@ import { SubmissionState } from '../../submission.reducers';
import {
DeleteUploadedFileAction,
EditFileDataAction,
EditFilePrimaryBitstreamAction,
NewUploadedFileAction
} from '../../objects/submission-objects.actions';
import { submissionUploadedFileFromUuidSelector, submissionUploadedFilesFromIdSelector } from '../../selectors';
import { submissionSectionDataFromIdSelector, submissionUploadedFileFromUuidSelector, submissionUploadedFilesFromIdSelector } from '../../selectors';
import { isUndefined } from '../../../shared/empty.util';
import { WorkspaceitemSectionUploadFileObject } from '../../../core/submission/models/workspaceitem-section-upload-file.model';
import { WorkspaceitemSectionUploadObject } from 'src/app/core/submission/models/workspaceitem-section-upload.model';
/**
* A service that provides methods to handle submission's bitstream state.
@@ -27,6 +29,22 @@ export class SectionUploadService {
*/
constructor(private store: Store<SubmissionState>) {}
/**
* Return submission's bitstream data from state
*
* @param submissionId
* The submission id
* @param sectionId
* The section id
* @returns {WorkspaceitemSectionUploadObject}
* Returns submission's bitstream data
*/
public getUploadedFilesData(submissionId: string, sectionId: string): Observable<WorkspaceitemSectionUploadObject> {
return this.store.select(submissionSectionDataFromIdSelector(submissionId, sectionId)).pipe(
map((state) => state),
distinctUntilChanged());
}
/**
* Return submission's bitstream list from state
*
@@ -104,6 +122,22 @@ export class SectionUploadService {
);
}
/**
* Update primary bitstream into the state
*
* @param submissionId
* The submission id
* @param sectionId
* The section id
* @param fileUUID
* The bitstream UUID
*/
public updateFilePrimaryBitstream(submissionId: string, sectionId: string, fileUUID: string) {
this.store.dispatch(
new EditFilePrimaryBitstreamAction(submissionId, sectionId, fileUUID)
);
}
/**
* Update bitstream metadata into the state
*