diff --git a/cypress/e2e/vault.cy.js b/cypress/e2e/vault.cy.js
--- a/cypress/e2e/vault.cy.js
+++ b/cypress/e2e/vault.cy.js
@@ -118,6 +118,25 @@
});
+ it('should report pending cooking task when already submitted', function() {
+ // Browse a directory
+ cy.visit(this.directoryUrl);
+
+ // Stub responses when requesting the vault API to simulate
+ // an internal server error
+ cy.intercept(this.vaultDirectoryUrl, {
+ body: this.genVaultDirCookingResponse('pending', 'Processing...')
+ }).as('checkVaultCookingTask');
+
+ cy.contains('button', 'Download')
+ .click();
+
+ // Check error alert is displayed
+ cy.get('.alert-success')
+ .should('be.visible')
+ .should('contain', 'Archive cooking request already submitted');
+ });
+
it('should report an error when vault service is experiencing issues', function() {
// Browse a directory
cy.visit(this.directoryUrl);
diff --git a/swh/web/vault/assets/vault-create-tasks.js b/swh/web/vault/assets/vault-create-tasks.js
--- a/swh/web/vault/assets/vault-create-tasks.js
+++ b/swh/web/vault/assets/vault-create-tasks.js
@@ -48,7 +48,16 @@
const vaultModalId = `#vault-fetch-${objectType}-modal`;
$(vaultModalId).modal('show');
$('body').on('keyup', vaultModalId, vaultModalHandleEnterKey);
- } else {
+ } else if (data.status === 'pending') {
+ const cookingInProgressAlert =
+ $(htmlAlert('success',
+ 'Archive cooking request already submitted.
' +
+ `Go to the Downloads page ` +
+ 'to get the download link once it is ready.',
+ true));
+ cookingInProgressAlert.css(alertStyle);
+ $('body').append(cookingInProgressAlert);
+ } else if (!response.ok) {
const cookingServiceDownAlert =
$(htmlAlert('danger',
'Archive cooking service is currently experiencing issues.
' +