From 00be017de003fff859146035a03215b95ee56d77 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio.bekerle@tugraz.at>
Date: Tue, 10 Sep 2019 15:02:21 +0200
Subject: [PATCH] Add generic XHR error handling

---
 packages/common/error.js                 | 19 +++++++++++++++++++
 packages/common/i18n.js                  |  6 ++++++
 packages/common/i18n/de/translation.json |  6 ++++++
 packages/common/i18n/en/translation.json |  6 ++++++
 4 files changed, 37 insertions(+)
 create mode 100644 packages/common/error.js
 create mode 100644 packages/common/i18n.js
 create mode 100644 packages/common/i18n/de/translation.json
 create mode 100644 packages/common/i18n/en/translation.json

diff --git a/packages/common/error.js b/packages/common/error.js
new file mode 100644
index 00000000..0bc393a6
--- /dev/null
+++ b/packages/common/error.js
@@ -0,0 +1,19 @@
+import {send as notify} from './notification';
+import {i18n} from "./i18n";
+
+export const xhrError = (jqXHR, textStatus, errorThrown) => {
+    if (textStatus !== "abort") {
+        let body = jqXHR.responseJSON !== undefined && jqXHR.responseJSON["hydra:description"] !== undefined ?
+            jqXHR.responseJSON["hydra:description"] : textStatus;
+
+        if (jqXHR.status === 0) {
+            body = i18n.t('error.connection-to-server-refused');
+        }
+
+        notify({
+            "summary": i18n.t('error.summary'),
+            "body": body,
+            "type": "danger",
+        });
+    }
+};
diff --git a/packages/common/i18n.js b/packages/common/i18n.js
new file mode 100644
index 00000000..dc0125f7
--- /dev/null
+++ b/packages/common/i18n.js
@@ -0,0 +1,6 @@
+import {createInstance} from './i18next.js';
+
+import de from './i18n/de/translation.json';
+import en from './i18n/en/translation.json';
+
+export const i18n = createInstance({en: en, de: de}, 'de', 'en');
\ No newline at end of file
diff --git a/packages/common/i18n/de/translation.json b/packages/common/i18n/de/translation.json
new file mode 100644
index 00000000..3664695d
--- /dev/null
+++ b/packages/common/i18n/de/translation.json
@@ -0,0 +1,6 @@
+{
+  "error": {
+    "summary": "Ein Fehler ist aufgetreten",
+    "connection-to-server-refused": "Verbindungs zum Server verweigert!"
+  }
+}
diff --git a/packages/common/i18n/en/translation.json b/packages/common/i18n/en/translation.json
new file mode 100644
index 00000000..57a8fb3e
--- /dev/null
+++ b/packages/common/i18n/en/translation.json
@@ -0,0 +1,6 @@
+{
+  "error": {
+    "summary": "An error occurred",
+    "connection-to-server-refused": "Connection to server refused!"
+  }
+}
-- 
GitLab