From 5ca76701c2a24ded6181b93511ac9aa13a2387c1 Mon Sep 17 00:00:00 2001
From: Angelina Filippova <linakirsanova@gmail.com>
Date: Tue, 2 Mar 2021 00:22:26 +0300
Subject: [PATCH] Fix displaying messages for multiple errors

---
 src/utils/request.js | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/utils/request.js b/src/utils/request.js
index b7e3d5f1..163ce872 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -6,27 +6,32 @@ const service = axios.create({
   timeout: 60000 // request timeout
 })
 
+const isJson = ({ headers }) => headers['content-type'].includes('application/json')
+
 // response interceptor
 service.interceptors.response.use(
   response => response,
   error => {
-    let errorMessage
     console.log(`Error ${error}`)
 
-    if (error.response) {
-      const edata = error.response.data.error ? error.response.data.error : error.response.data
-      errorMessage = !error.response.headers['content-type'].includes('application/json')
-        ? `${error.message}`
-        : `${error.message} - ${edata}`
+    if (!error.response) {
+      Message({
+        message: error,
+        type: 'error',
+        duration: 5 * 1000
+      })
     } else {
-      errorMessage = error
+      const errors = Array.isArray(error.response.data) ? error.response.data : [error.response.data]
+      errors.forEach(errorData => {
+        const edata = errorData.error || errorData
+        Message({
+          message: isJson(error.response) ? `${error.message} - ${edata}` : `${error.message}`,
+          type: 'error',
+          duration: 5 * 1000
+        })
+      })
     }
 
-    Message({
-      message: errorMessage,
-      type: 'error',
-      duration: 5 * 1000
-    })
     return Promise.reject(error)
   }
 )
-- 
GitLab