FIX ajustement gallery demandés

This commit is contained in:
Eddi3_As 2025-03-27 19:18:43 -04:00
parent 78e398ecd8
commit d0328f9ec8
6 changed files with 20 additions and 10 deletions

View file

@ -1,2 +1,3 @@
VITE_BACKEND_URL=http://localhost:4400 VITE_BACKEND_URL=http://localhost:4400
VITE_BACKEND_SOCKET_URL=http://localhost:4400 VITE_BACKEND_SOCKET_URL=http://localhost:4400
VITE_IMG_URL=http://localhost:4400

View file

@ -1,2 +1,3 @@
VITE_BACKEND_URL=http://localhost:4400 VITE_BACKEND_URL=http://localhost:4400
VITE_AZURE_BACKEND_URL=http://localhost:4400 VITE_AZURE_BACKEND_URL=http://localhost:4400
VITE_IMG_URL=http://localhost:4400

View file

@ -22,6 +22,8 @@ import CloseIcon from "@mui/icons-material/Close";
import { ImageType } from "../../Types/ImageType"; import { ImageType } from "../../Types/ImageType";
import ApiService from "../../services/ApiService"; import ApiService from "../../services/ApiService";
import { Upload } from "@mui/icons-material"; import { Upload } from "@mui/icons-material";
import { ENV_VARIABLES } from '../../constants';
import { escapeForGIFT } from "src/utils/giftUtils";
interface ImagesProps { interface ImagesProps {
handleCopy?: (id: string) => void; handleCopy?: (id: string) => void;
@ -63,10 +65,9 @@ const ImageGallery: React.FC<ImagesProps> = ({ handleCopy, handleDelete }) => {
setLoading(false); setLoading(false);
if (isDeleted) { if (isDeleted) {
//setImages(images.filter((image) => image.id !== id));
setImgPage(1); setImgPage(1);
fetchImages(); fetchImages();
setSnackbarMessage("Image supprimée avec succès !"); setSnackbarMessage("Image supprimée avec succès!");
setSnackbarSeverity("success"); setSnackbarSeverity("success");
} else { } else {
setSnackbarMessage("Erreur lors de la suppression de l'image. Veuillez réessayer."); setSnackbarMessage("Erreur lors de la suppression de l'image. Veuillez réessayer.");
@ -82,11 +83,18 @@ const ImageGallery: React.FC<ImagesProps> = ({ handleCopy, handleDelete }) => {
const defaultHandleCopy = (id: string) => { const defaultHandleCopy = (id: string) => {
if (navigator.clipboard) { if (navigator.clipboard) {
navigator.clipboard.writeText(id); const link = `${ENV_VARIABLES.IMG_URL}/api/image/get/${id}`;
const imgTag = `[markdown]![alt_text](${escapeForGIFT(link)} "texte de l'infobulle") {T}`;
setSnackbarMessage("Le lien Markdown de limage a été copié dans le presse-papiers");
setSnackbarSeverity("success");
setSnackbarOpen(true);
navigator.clipboard.writeText(imgTag);
}
if(handleCopy) {
handleCopy(id);
} }
}; };
const handleCopyFunction = handleCopy || defaultHandleCopy;
const handleDeleteFunction = handleDelete || defaultHandleDelete; const handleDeleteFunction = handleDelete || defaultHandleDelete;
const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => { const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => {
@ -121,9 +129,9 @@ const ImageGallery: React.FC<ImagesProps> = ({ handleCopy, handleDelete }) => {
setSnackbarSeverity("success"); setSnackbarSeverity("success");
setSnackbarOpen(true); setSnackbarOpen(true);
// Reset the input field and preview after successful upload
setImportedImage(null); setImportedImage(null);
setPreview(null); setPreview(null);
setTabValue(0);
} catch (error) { } catch (error) {
setSnackbarMessage(`Une erreur est survenue.\n${error}\nVeuillez réessayer plus tard.`); setSnackbarMessage(`Une erreur est survenue.\n${error}\nVeuillez réessayer plus tard.`);
setSnackbarSeverity("error"); setSnackbarSeverity("error");
@ -135,6 +143,7 @@ const ImageGallery: React.FC<ImagesProps> = ({ handleCopy, handleDelete }) => {
setSnackbarOpen(false); setSnackbarOpen(false);
}; };
return ( return (
<Box p={3}> <Box p={3}>
<Tabs value={tabValue} onChange={(_, newValue) => setTabValue(newValue)}> <Tabs value={tabValue} onChange={(_, newValue) => setTabValue(newValue)}>
@ -162,7 +171,7 @@ const ImageGallery: React.FC<ImagesProps> = ({ handleCopy, handleDelete }) => {
<Box display="flex" justifyContent="center" mt={1}> <Box display="flex" justifyContent="center" mt={1}>
<IconButton onClick={(e) => { <IconButton onClick={(e) => {
e.stopPropagation(); e.stopPropagation();
handleCopyFunction(obj.id); defaultHandleCopy(obj.id);
}} }}
color="primary" color="primary"
data-testid={`gallery-tab-copy-${obj.id}`} > data-testid={`gallery-tab-copy-${obj.id}`} >

View file

@ -2,7 +2,7 @@
const ENV_VARIABLES = { const ENV_VARIABLES = {
MODE: process.env.MODE || "production", MODE: process.env.MODE || "production",
VITE_BACKEND_URL: process.env.VITE_BACKEND_URL || "", VITE_BACKEND_URL: process.env.VITE_BACKEND_URL || "",
IMG_URL: process.env.MODE == "development" ? process.env.VITE_BACKEND_URL : process.env.IMG_URL, IMG_URL: process.env.MODE == "development" ? process.env.VITE_BACKEND_URL : process.env.VITE_IMG_URL,
BACKEND_URL: process.env.SITE_URL != undefined ? `${process.env.SITE_URL}${process.env.USE_PORTS ? `:${process.env.BACKEND_PORT}`:''}` : process.env.VITE_BACKEND_URL || '', BACKEND_URL: process.env.SITE_URL != undefined ? `${process.env.SITE_URL}${process.env.USE_PORTS ? `:${process.env.BACKEND_PORT}`:''}` : process.env.VITE_BACKEND_URL || '',
FRONTEND_URL: process.env.SITE_URL != undefined ? `${process.env.SITE_URL}${process.env.USE_PORTS ? `:${process.env.PORT}`:''}` : '' FRONTEND_URL: process.env.SITE_URL != undefined ? `${process.env.SITE_URL}${process.env.USE_PORTS ? `:${process.env.PORT}`:''}` : ''
}; };

View file

@ -171,7 +171,6 @@ const QuizForm: React.FC = () => {
const handleCopyImage = (id: string) => { const handleCopyImage = (id: string) => {
const escLink = `${ENV_VARIABLES.IMG_URL}/api/image/get/${id}`; const escLink = `${ENV_VARIABLES.IMG_URL}/api/image/get/${id}`;
navigator.clipboard.writeText(id);
setImageLinks(prevLinks => [...prevLinks, escLink]); setImageLinks(prevLinks => [...prevLinks, escLink]);
} }

View file

@ -82,7 +82,7 @@ class Images {
if (!total || total === 0) return { images: [], total }; if (!total || total === 0) return { images: [], total };
const result = await imagesCollection.find({ userId: uid }) const result = await imagesCollection.find({ userId: uid })
.sort({ created_at: 1 }) .sort({ created_at: -1 })
.skip((page - 1) * limit) .skip((page - 1) * limit)
.limit(limit) .limit(limit)
.toArray(); .toArray();