edit image implemented
continuous-integration/drone/push Build is failing Details

d_yanis 1 year ago
parent 7877fb6e33
commit 09a387f472

@ -6,4 +6,4 @@ export const API = import.meta.env.VITE_API_ENDPOINT
/** /**
* This constant defines the base app's endpoint. * This constant defines the base app's endpoint.
*/ */
export const BASE = import.meta.env.VITE_BASE export const BASE = import.meta.env.VITE_BASE

@ -1,3 +1,4 @@
import { BASE } from "../Constants"
import "../style/settings/settings.css" import "../style/settings/settings.css"
import 'bootstrap/dist/css/bootstrap.min.css'; import 'bootstrap/dist/css/bootstrap.min.css';
import { MainTitle, SecondTitle } from "./component/Title" import { MainTitle, SecondTitle } from "./component/Title"
@ -112,6 +113,8 @@ function updateAccountPicture(lien: string) {
function MyVerticallyCenteredModal(props: any) { function MyVerticallyCenteredModal(props: any) {
const urlRef = useRef<HTMLInputElement>(null); const urlRef = useRef<HTMLInputElement>(null);
const [invalidShow, setInvalidShow] = useState(false);
return ( return (
<Modal <Modal
{...props} {...props}
@ -126,41 +129,68 @@ function MyVerticallyCenteredModal(props: any) {
</Modal.Header> </Modal.Header>
<Modal.Body> <Modal.Body>
<Form.Label>Nouvelle image</Form.Label> <Form.Label>Nouvelle image</Form.Label>
<Form.Control ref={urlRef} type="input" /> <Form.Control isInvalid={invalidShow} ref={urlRef} type="input" />
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button onClick={props.onHide}>Annuler</Button> <Button onClick={props.onHide}>Annuler</Button>
<Button onClick={() => handleNewImage(urlRef.current!.value)}>Valider</Button> <Button onClick={() => handleNewImage(urlRef.current!.value, setInvalidShow)}>Valider</Button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>
); );
} }
async function handleNewImage(lien: string) { async function handleNewImage(lien: string, invalidRef : React.Dispatch<React.SetStateAction<boolean>>) {
let exist = await testImage(lien); let exist = await testImage(lien);
console.log(exist); console.log(exist);
if (exist) { if (exist) {
invalidRef(false);
updateAccountPicture(lien); updateAccountPicture(lien);
} }
else {
invalidRef(true);
}
} }
async function testImage(lien: string) { async function testImage(lien: string) {
// try { try {
// const response = await axios.head(lien); const response = await axios.head(lien);
// console.log(response); console.log(response);
// // Vérifier le statut de la réponse (200 OK est considéré comme valide) // Vérifier le statut de la réponse (200 OK est considéré comme valide)
// if (response.status === 200) { if (response.status === 200) {
// // Vérifier le type de contenu pour s'assurer qu'il s'agit d'une image // Vérifier le type de contenu pour s'assurer qu'il s'agit d'une image
// const contentType = response.headers['content-type']; const contentType = response.headers['content-type'];
// if (contentType && contentType.startsWith('image/')) { if (contentType && contentType.startsWith('image/')) {
// return true; return true;
// } }
// return true; return true;
// } }
// return false; return false;
// } catch (error) { } catch (error) {
// console.error("Erreur lors de la requête HEAD:", error); console.error("Erreur lors de la requête HEAD: ", error);
// return false; return false;
// } }
return true; // return true;
} }
// async function testImage(imageUrl: string) {
// try {
// const response = await axios.head(`${BASE.PROXY}?url=${encodeURIComponent(imageUrl)}`);
// console.log(response);
// // Check the response status (200 OK is considered valid)
// if (response.status === 200) {
// // Check the content type to ensure it's an image
// const contentType = response.headers['content-type'];
// if (contentType && contentType.startsWith('image/')) {
// return true;
// }
// return false;
// }
// return false;
// } catch (error) {
// console.error("Error during HEAD request: ", error);
// return false;
// }
// }

@ -12,6 +12,7 @@
"@types/react-dom": "^18.2.14", "@types/react-dom": "^18.2.14",
"axios": "^1.6.7", "axios": "^1.6.7",
"bootstrap": "^5.3.2", "bootstrap": "^5.3.2",
"express": "^4.18.2",
"node-fetch": "^3.3.2", "node-fetch": "^3.3.2",
"react": "^18.2.0", "react": "^18.2.0",
"react-bootstrap": "^2.10.0", "react-bootstrap": "^2.10.0",
@ -26,7 +27,8 @@
"build": "vite build", "build": "vite build",
"test": "vite test", "test": "vite test",
"format": "prettier --config .prettierrc 'front' --write", "format": "prettier --config .prettierrc 'front' --write",
"tsc": "tsc" "tsc": "tsc",
"proxy" : "node src/Proxy/server-proxy.js"
}, },
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [

@ -0,0 +1,22 @@
const express = require('express');
const axios = require('axios');
const app = express();
const PORT = 8080;
app.use(express.json());
app.use('/proxy', async (req, res) => {
try {
const response = await axios.head(req.query.url);
res.status(response.status).send(response.headers);
} catch (error) {
console.log("test");
console.error("Error during HEAD request: ", error);
res.status(500).send("Internal Server Error");
}
});
app.listen(PORT, () => {
console.log(`Proxy server listening on port ${PORT}`);
});
Loading…
Cancel
Save