From 1b6ee31cb346d9bc7811a1c8f36a847c0ba75127 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Fri, 15 May 2020 09:25:05 +0200 Subject: [PATCH] display alert on EditProfile form submit --- src/components/Alert.tsx | 5 +++-- src/pages/EditProfile.tsx | 37 +++++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/components/Alert.tsx b/src/components/Alert.tsx index 0aa6566..e00238c 100644 --- a/src/components/Alert.tsx +++ b/src/components/Alert.tsx @@ -4,10 +4,11 @@ import {faExclamationTriangle} from '@fortawesome/free-solid-svg-icons'; interface IProps { text: string; + color?: string; } -const Alert: FC = ({text}) => ( -
+const Alert: FC = ({text, color = 'danger'}) => ( +
{text}
); diff --git a/src/pages/EditProfile.tsx b/src/pages/EditProfile.tsx index 4af0d58..dc2aba0 100644 --- a/src/pages/EditProfile.tsx +++ b/src/pages/EditProfile.tsx @@ -1,4 +1,4 @@ -import React, {FC, useState, useEffect} from 'react'; +import React, {FC, useState} from 'react'; import {Link} from 'react-router-dom'; import Routes from '../constants/routes'; // Redux @@ -22,6 +22,7 @@ import User from '../models/User'; import Dev from '../models/Dev'; import Links from '../types/Links'; import {useSelector} from 'react-redux'; +import Alert from '../components/Alert'; interface FormData { status: string; @@ -53,7 +54,12 @@ const EditProfile: FC = ({ bio, }) => { const [showLinks, setShowLinks] = useState(false); - const [variable, setVariable] = useState(useSelector(selectProfile)); + const [alert, setAlert] = useState({ + show: false, + color: 'danger', + text: 'Something went wrong', + }); + const initFormData = { status: status ?? 'Developer', company: company, @@ -69,9 +75,8 @@ const EditProfile: FC = ({ youtube: links?.youtube ?? '', }; - const {formData, handleChange, resetForm} = useForm(initFormData); + const {formData, handleChange} = useForm(initFormData); - console.log(company, formData.company, variable, isEmpty(firebase.auth)); /** construct profile object from formData */ const makeProfile = ({ status, @@ -110,10 +115,17 @@ const EditProfile: FC = ({ const handleSubmit = (e: React.FormEvent): void => { e.preventDefault(); const updatedDev = makeProfile(formData); - - firebase.updateProfile(updatedDev, {useSet: true, merge: true}); - console.log(`Submitted ${JSON.stringify(formData, null, 2)}`); - resetForm(); + try { + firebase.updateProfile(updatedDev, {useSet: true, merge: true}); + setAlert({ + show: true, + color: 'success', + text: + 'Profile successfully updated. You may go back to your dashboard.', + }); + } catch (err) { + setAlert({...alert, show: true}); + } }; const isDisabled: boolean = formData.status === '' || formData.skills === ''; @@ -128,7 +140,12 @@ const EditProfile: FC = ({
- {Statuses.map((s: string, i: number) => (
)} - + {alert.show && }