diff --git a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts index 84c4d93e2..bcbe71a66 100644 --- a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts +++ b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts @@ -200,23 +200,36 @@ export class DatasetJSDataverseRepository implements DatasetRepository { getDatasetSummaryFieldNames.execute(), getPrivateUrlDatasetCitation.execute(privateUrlToken) ]) - .then(([jsDataset, summaryFieldsNames, citation]: [JSDataset, string[], string]) => - JSDatasetMapper.toDataset( + .then(async ([jsDataset, summaryFieldsNames, citation]: [JSDataset, string[], string]) => { + const [permissions, locks, originalSize, archivalSize] = await Promise.all([ + getDatasetUserPermissions.execute(jsDataset.id), + getDatasetLocks.execute(jsDataset.id), + getDatasetFilesTotalDownloadSize.execute( + jsDataset.id, + DatasetNonNumericVersion.DRAFT, + FileDownloadSizeMode.ORIGINAL, + undefined, + includeDeaccessioned + ), + getDatasetFilesTotalDownloadSize.execute( + jsDataset.id, + DatasetNonNumericVersion.DRAFT, + FileDownloadSizeMode.ARCHIVAL, + undefined, + includeDeaccessioned + ) + ]) + + return JSDatasetMapper.toDataset( jsDataset, citation, summaryFieldsNames, - { - canEditDataset: true, - canPublishDataset: true, - canManageDatasetPermissions: true, - canDeleteDatasetDraft: true, - canViewUnpublishedDataset: true - }, // TODO Connect with JS dataset permissions for privateUrl when it is available in js-dataverse - [], // TODO Connect with JS dataset locks for privateUrl when it is available in js-dataverse - 0, // TODO Connect with JS dataset filesTotalDownloadSize for privateUrl when it is available in js-dataverse - 0 // TODO Connect with JS dataset filesTotalDownloadSize for privateUrl when it is available in js-dataverse + permissions, + locks, + originalSize, + archivalSize ) - ) + }) .catch((error: ReadError) => { throw new Error(error.message) })