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