You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.9 KiB
157 lines
4.9 KiB
import React, { useState } from 'react';
|
|
import { useSelector, useDispatch } from 'react-redux';
|
|
import PP from "../../assets/img/unknown.png";
|
|
import PLUS from "../../assets/img/plus.png";
|
|
import { NavLink } from "react-router-dom";
|
|
import axios from "axios";
|
|
import { uploadPicture } from '../../actions/user.actions';
|
|
|
|
|
|
|
|
const ConfigurationDuProfil = ()=>{
|
|
|
|
const userData = useSelector((state) => state.user.user);
|
|
const [pseudo, setPseudo] = useState(userData.pseudo);
|
|
const[userPicture, setUserPicture] = useState(userData.picture)
|
|
const [tmpImage, setTmpImage] =useState('')
|
|
const [displayAdd, setDisplayAdd] = useState(false);
|
|
const dispatch = useDispatch();
|
|
|
|
const handleValidationPopup =(e)=>{
|
|
setUserPicture(tmpImage);
|
|
setDisplayAdd(false);
|
|
}
|
|
const handleLoadFile=(e)=>{
|
|
var image = document.getElementById("output");
|
|
image.src = URL.createObjectURL(e.target.files[0]);
|
|
setTmpImage(image.src);
|
|
};
|
|
|
|
const handleUpdate = async (e) => {
|
|
console.log(userPicture)
|
|
e.preventDefault();
|
|
const data = new FormData();
|
|
data.append("pseudo", pseudo);
|
|
data.append("userId", userData._id);
|
|
data.append("file",userPicture);
|
|
|
|
dispatch(uploadPicture(data,userData._id));
|
|
//const pseudoError = document.querySelector(".pseudo.error");
|
|
/* const pictureError =document.querySelector(".picture.error");
|
|
await axios({
|
|
method: "post",
|
|
url: `${process.env.REACT_APP_API_URL}api/user/upload`,
|
|
data: {
|
|
// pseudo,
|
|
userPicture,
|
|
|
|
}
|
|
,
|
|
})
|
|
.then((res) => {
|
|
console.log(res);
|
|
if (res.data.errors) {
|
|
//pseudoError.innerHTML = res.data.errors.pseudo;
|
|
pictureError.innerHTML = res.data.errors.picture;
|
|
}
|
|
})
|
|
.catch((err) => console.log(err));*/
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return(
|
|
<div className='modificationDuProfilBackgroud'>
|
|
|
|
<h2 className='ligneHorizontal' >Modification des informations du Profil</h2>
|
|
<form action='' onSubmit={handleUpdate} >
|
|
<div className='modificationDuProfil' >
|
|
<>
|
|
<button className='imageDeProfilConfigurationPlus imageDeProfil' >
|
|
<img src={PLUS} className="plusButton "/>
|
|
<img src={userPicture} className="imageDeProfilConfiguration imageDeProfil" onClick={() => setDisplayAdd(true)}/>
|
|
</button>
|
|
<div className='picture error'></div>
|
|
</>
|
|
<div className='modificationDuProfilText alignementText'>
|
|
<span>Pseudo: </span>
|
|
</div>
|
|
<div>
|
|
<div className='modificationDuProfilText'>
|
|
|
|
<input className='inputConfiguration'
|
|
type="pseudo"
|
|
name="pseudo"
|
|
id="pseudo"
|
|
value={pseudo}
|
|
onChange={(e) => setPseudo (e.target.value)}
|
|
/>
|
|
{/* <div className='pseudo error'></div>*/}
|
|
|
|
|
|
</div>
|
|
<button type='submit' className='buttonValidationChangements' id='update' value='update' >Valider</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
<h2 className='ligneHorizontal' >Acces au dossiers personnel</h2>
|
|
<div className='accesDossiersPerso'>
|
|
<div className='accesDossiersPersoValidation'>
|
|
<input type="checkbox" name='cocher' />
|
|
<label for="cocher" className='textAccesDossiersPerso'>Cocher si oui</label>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{displayAdd && (
|
|
<div className='popup-modificationProfil'>
|
|
<div className="modal">
|
|
<div className='imagesPopup'>
|
|
<div className='imageModifSpace'>
|
|
<img src={userPicture} className=" imageDeProfil "/>
|
|
</div>
|
|
<div className='profile-pic '>
|
|
<label className="-label" for="file">
|
|
<span className="camera"></span>
|
|
<span>Changer</span>
|
|
</label>
|
|
<input type="file" id="file" name='file' accept=".jpg, .jpeg, .png" onChange={handleLoadFile}/> {/* onChange={(e)=> setTmpImage(e.target.files[0].name)} */}
|
|
<img src={PLUS} className="imageDeProfil"id="output" />
|
|
</div>
|
|
</div >
|
|
<div className='buttonPopup'>
|
|
<button onClick={()=>setDisplayAdd(false)}>Retour</button>
|
|
<button onClick={handleValidationPopup} >Valider</button>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</div>
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
export default ConfigurationDuProfil; |