From e2e76b6cb018843561c361d3e8593b88fcca8cad Mon Sep 17 00:00:00 2001 From: Matias Garcia Date: Tue, 2 Jun 2020 17:36:05 +0200 Subject: [PATCH] update mypage --- src/components/EditMyPageForm/index.js | 72 ++++++++++++++++++++++++++ src/pages/MyPage/index.js | 14 ++++- src/store/homepages/actions.js | 28 ++++++++++ 3 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 src/components/EditMyPageForm/index.js diff --git a/src/components/EditMyPageForm/index.js b/src/components/EditMyPageForm/index.js new file mode 100644 index 0000000..e085f5c --- /dev/null +++ b/src/components/EditMyPageForm/index.js @@ -0,0 +1,72 @@ +import React, { useState } from "react"; +import { Col } from "react-bootstrap"; +import Form from "react-bootstrap/Form"; +import Container from "react-bootstrap/Container"; +import Button from "react-bootstrap/Button"; +import { useDispatch } from "react-redux"; +import { updateHomepage } from "../../store/homepages/actions"; + +const EditMyPageForm = props => { + const [title, setTitle] = useState(props.title); + const [description, setDescription] = useState(props.description); + const [bgColor, setBgColor] = useState(props.backgroundColor); + const [color, setColor] = useState(props.color); + const dispatch = useDispatch(); + + const onSubmit = e => { + e.preventDefault(); + const newPageValues = { title, description, bgColor, color }; + dispatch(updateHomepage(props.id, newPageValues)); + }; + + return ( + +
+

Edit my page

+ + Page title + setTitle(event.target.value)} + type='text' + /> + + + + Description + setDescription(event.target.value)} + type='text' + /> + + + + bg color + setBgColor(event.target.value)} + type='color' + /> + + + + Color + setColor(event.target.value)} + type='color' + /> + + + + + +
+
+ ); +}; + +export default EditMyPageForm; diff --git a/src/pages/MyPage/index.js b/src/pages/MyPage/index.js index 2f84fa8..1de173d 100644 --- a/src/pages/MyPage/index.js +++ b/src/pages/MyPage/index.js @@ -1,16 +1,26 @@ -import React from "react"; +import React, { useState } from "react"; import { useSelector } from "react-redux"; import { getUserHomepage } from "../../store/homepages/selectors"; import HomepageCard from "../../components/HomepageCard"; +import EditMyPageForm from "../../components/EditMyPageForm"; +import Button from "react-bootstrap/Button"; const MyPage = () => { // use a selector to get the homepages from redux. const userHomepage = useSelector(getUserHomepage); + const [editMode, setEditMode] = useState(false); return (

My Page!

- + {editMode ? ( + + ) : ( + + )} +
); }; diff --git a/src/store/homepages/actions.js b/src/store/homepages/actions.js index ba5fe9f..d776897 100644 --- a/src/store/homepages/actions.js +++ b/src/store/homepages/actions.js @@ -21,3 +21,31 @@ export const fetchHomepages = () => async (dispatch, getState) => { console.log(error); } }; + +export const updateHomepage = (id, newHomepage) => async ( + dispatch, + getState +) => { + try { + const { token } = getState().user; + const { title, description, color, bgColor } = newHomepage; + const response = await axios.patch( + `http://localhost:4000/homepages/${id}`, + { + title, + description, + color, + backgroundColor: bgColor, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + dispatch(saveUserHomepage(response.data)); + console.log(response); + } catch (e) { + console.log(e); + } +};