diff --git a/swh/web/assets/src/bundles/vault/index.js b/swh/web/assets/src/bundles/vault/index.js --- a/swh/web/assets/src/bundles/vault/index.js +++ b/swh/web/assets/src/bundles/vault/index.js @@ -10,3 +10,4 @@ import './vault.css'; export * from './vault-ui'; export * from './vault-create-tasks'; +export * from './vault-utils.js'; diff --git a/swh/web/assets/src/bundles/vault/vault-create-tasks.js b/swh/web/assets/src/bundles/vault/vault-create-tasks.js --- a/swh/web/assets/src/bundles/vault/vault-create-tasks.js +++ b/swh/web/assets/src/bundles/vault/vault-create-tasks.js @@ -6,6 +6,48 @@ */ import {handleFetchError, csrfPost} from 'utils/functions'; +import {checkUrlHandler} from "./vault-utils"; + +function existCookingTask(cookingTask) { + let vaultCookingTasks = JSON.parse(localStorage.getItem('swh-vault-cooking-tasks')); + if (!vaultCookingTasks) { + vaultCookingTasks = []; + } + + return vaultCookingTasks.find(val => { + return val.object_type === cookingTask.object_type && + val.object_id === cookingTask.object_id; + }) +} + +export function checkDirectoryArchive(id) { + checkVaultCookingTask('directory', id); +} + +export function checkRevisionArchive(id) { + checkVaultCookingTask('revision', id); +} + +function checkVaultCookingTask(type, id) { + const cookingTask = { + object_type: type, + object_id: id + }; + + const exists_task = existCookingTask(cookingTask); + + if (!exists_task) { + let vaultUrl = checkUrlHandler[cookingTask.object_type](cookingTask.object_id); + fetch(vaultUrl) + .then(({ body }) => { + if (body.status !== 'done') { + $(`#vault-cook-${cookingTask.object_type}-modal`).modal('show'); + } else { + window.location = Urls.browse_vault(); + } + }); + } +} function addVaultCookingTask(cookingTask) { let vaultCookingTasks = JSON.parse(localStorage.getItem('swh-vault-cooking-tasks')); diff --git a/swh/web/assets/src/bundles/vault/vault-utils.js b/swh/web/assets/src/bundles/vault/vault-utils.js new file mode 100644 --- /dev/null +++ b/swh/web/assets/src/bundles/vault/vault-utils.js @@ -0,0 +1,5 @@ + +export const checkUrlHandler = { + directory: (object_id) => Urls.api_1_vault_cook_directory(object_id), + revision: (object_id) => Urls.api_1_vault_cook_revision_gitfast(object_id), +}; diff --git a/swh/web/templates/includes/vault-create-tasks.html b/swh/web/templates/includes/vault-create-tasks.html --- a/swh/web/templates/includes/vault-create-tasks.html +++ b/swh/web/templates/includes/vault-create-tasks.html @@ -16,12 +16,12 @@