From 90d61688084fbc1a25ab763e257cebeb6c98707a Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Fri, 16 Feb 2018 15:40:27 +0200
Subject: [PATCH] fix(components): fail safe empty arrays

---
 .../src/components/SortableList.js                        | 2 +-
 .../src/components/AuthorList/AuthorAdder.js              | 8 +++++---
 .../src/components/Dashboard/AbstractModal.js             | 4 ++--
 .../src/components/SortableList/SortableList.js           | 2 +-
 packages/components-faraday/src/redux/files.js            | 6 +++---
 5 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/packages/component-sortable-list/src/components/SortableList.js b/packages/component-sortable-list/src/components/SortableList.js
index e45402063..0858630f0 100644
--- a/packages/component-sortable-list/src/components/SortableList.js
+++ b/packages/component-sortable-list/src/components/SortableList.js
@@ -89,7 +89,7 @@ const DecoratedItem = compose(
 )(Item)
 
 const SortableList = ({
-  items,
+  items = [],
   itemKey = 'id',
   moveItem,
   listItem,
diff --git a/packages/components-faraday/src/components/AuthorList/AuthorAdder.js b/packages/components-faraday/src/components/AuthorList/AuthorAdder.js
index 19a4bda77..f6e389871 100644
--- a/packages/components-faraday/src/components/AuthorList/AuthorAdder.js
+++ b/packages/components-faraday/src/components/AuthorList/AuthorAdder.js
@@ -13,13 +13,15 @@ import classes from './AuthorList.local.scss'
 import { getAuthorFetching } from '../../redux/authors'
 import { MenuItem, ValidatedTextField } from './FormItems'
 
-const emailRegex = new RegExp(/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/)
+const emailRegex = new RegExp(
+  /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i, //eslint-disable-lint
+)
 
 const emailValidator = value =>
   emailRegex.test(value) ? undefined : 'Invalid email'
 
 const AuthorAdder = ({
-  authors,
+  authors = [],
   editMode,
   setEditMode,
   handleSubmit,
@@ -90,7 +92,7 @@ export default compose(
     onSubmit: (
       values,
       dispatch,
-      { authors, addAuthor, setEditMode, setFormAuthors, reset, match },
+      { authors = [], addAuthor, setEditMode, setFormAuthors, reset, match },
     ) => {
       const collectionId = get(match, 'params.project')
       const fragmentId = get(match, 'params.version')
diff --git a/packages/components-faraday/src/components/Dashboard/AbstractModal.js b/packages/components-faraday/src/components/Dashboard/AbstractModal.js
index 07e8e491a..5222f2b11 100644
--- a/packages/components-faraday/src/components/Dashboard/AbstractModal.js
+++ b/packages/components-faraday/src/components/Dashboard/AbstractModal.js
@@ -39,14 +39,14 @@ const Root = styled.div`
   position: relative;
 `
 
-const Title = styled.span`
+const Title = styled.div`
   font-family: Helvetica;
   font-size: 18px;
   text-align: left;
   color: #667080;
 `
 
-const Subtitle = styled.span`
+const Subtitle = styled.div`
   color: #667080;
   font-family: Helvetica;
   font-size: 14px;
diff --git a/packages/components-faraday/src/components/SortableList/SortableList.js b/packages/components-faraday/src/components/SortableList/SortableList.js
index e45402063..0858630f0 100644
--- a/packages/components-faraday/src/components/SortableList/SortableList.js
+++ b/packages/components-faraday/src/components/SortableList/SortableList.js
@@ -89,7 +89,7 @@ const DecoratedItem = compose(
 )(Item)
 
 const SortableList = ({
-  items,
+  items = [],
   itemKey = 'id',
   moveItem,
   listItem,
diff --git a/packages/components-faraday/src/redux/files.js b/packages/components-faraday/src/redux/files.js
index e2679c4df..e1ba5b9d3 100644
--- a/packages/components-faraday/src/redux/files.js
+++ b/packages/components-faraday/src/redux/files.js
@@ -68,7 +68,7 @@ export const getFileError = state => state.files.error
 // thunked actions
 export const uploadFile = (file, type, fragmentId) => dispatch => {
   dispatch(uploadRequest(type))
-  return request('/aws', createFileData(file, type, fragmentId)).then(
+  return request('/file', createFileData(file, type, fragmentId)).then(
     r => {
       dispatch(uploadSuccess())
       return r
@@ -82,7 +82,7 @@ export const uploadFile = (file, type, fragmentId) => dispatch => {
 
 export const deleteFile = fileId => dispatch => {
   dispatch(removeRequest())
-  return remove(`/aws/${fileId}`)
+  return remove(`/file/${fileId}`)
     .then(r => {
       dispatch(removeSuccess())
       return r
@@ -90,7 +90,7 @@ export const deleteFile = fileId => dispatch => {
     .catch(err => dispatch(removeFailure(err.message)))
 }
 
-export const getSignedUrl = fileId => dispatch => get(`/aws/${fileId}`)
+export const getSignedUrl = fileId => dispatch => get(`/file/${fileId}`)
 
 // reducer
 export default (state = initialState, action) => {
-- 
GitLab