From 968327d9eb528c8266389f5ddfaadfc053678f11 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 5 Apr 2019 13:12:43 +0200 Subject: [PATCH] existance of the project is checked on upload (not with additional query) --- frontend-js/src/main/js/ServerConnector.js | 4 ++-- .../src/main/js/gui/admin/AddProjectDialog.js | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index cdc5b74020..29a4e7f14d 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1173,8 +1173,8 @@ ServerConnector.addProject = function (options) { self._projectsById[project.getProjectId()] = project; } return project; - }).then(null, function (error) { - return self._processUpdateError(error); + }).catch(function (error) { + return self.processNetworkError(error); }); }; diff --git a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js index 66c62781a7..1c968e003d 100644 --- a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js @@ -18,6 +18,7 @@ var logger = require('../../logger'); var guiUtils = new (require('../leftPanel/GuiUtils'))(); +var ObjectExistsError = require("../../ObjectExistsError"); var UserPreferences = require("../../map/data/UserPreferences"); var ValidationError = require("../../ValidationError"); @@ -1012,7 +1013,7 @@ AddProjectDialog.prototype.getDisease = function () { /** * - * @returns {string} + * @returns {number} */ AddProjectDialog.prototype.getOrganism = function () { return $("[name='project-organism']", this.getElement()).val(); @@ -1194,6 +1195,11 @@ AddProjectDialog.prototype.onSaveClicked = function () { "zip-entries": self.getZipEntries() }; return ServerConnector.addProject(options); + }).catch(function (error) { + if (error instanceof ObjectExistsError) { + return Promise.reject(new ValidationError("Project with given id already exists")); + } + return Promise.reject(error); }).then(function (project) { self.callListeners("onProjectAdd", project); }).finally(function () { @@ -1233,11 +1239,7 @@ AddProjectDialog.prototype.checkValidity = function () { isValid = false; } GuiConnector.showProcessing(); - return self.getServerConnector().getProject(self.getProjectId()).then(function (project) { - if (project !== null) { - error += "<li>Project with given id already exists</li>"; - isValid = false; - } + return Promise.resolve().then(function () { if (self.getDisease() !== "") { return self.getServerConnector().getMesh({id: self.getDisease()}).catch(function () { error += "<li>Invalid mesh id: " + self.getDisease() + "</li>"; -- GitLab