mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-25 14:50:29 +00:00
add delete button to image previwer in gallery (#7170)
* add delete button to image previwer in gallery * delete the last image and display the first one * fix bug - delete the last image * feat: optimize code --------- Co-authored-by: zhouwenxuan <aries@Mac.local> Co-authored-by: 杨国璇 <ygx@192.168.1.7>
This commit is contained in:
@@ -275,15 +275,17 @@ const Main = ({ isLoadingMore, metadata, onDelete, onLoadMore }) => {
|
|||||||
setSelectedImages(prev => prev.length < 2 ? [image] : [...prev]);
|
setSelectedImages(prev => prev.length < 2 ? [image] : [...prev]);
|
||||||
}, [imageItems]);
|
}, [imageItems]);
|
||||||
|
|
||||||
const moveToPrevImage = () => {
|
const moveToPrevImage = useCallback(() => {
|
||||||
const imageItemsLength = imageItems.length;
|
const imageItemsLength = imageItems.length;
|
||||||
setImageIndex((prevState) => (prevState + imageItemsLength - 1) % imageItemsLength);
|
setImageIndex((prevState) => (prevState + imageItemsLength - 1) % imageItemsLength);
|
||||||
};
|
setSelectedImages([imageItems[(imageIndex + imageItemsLength - 1) % imageItemsLength]]);
|
||||||
|
}, [imageItems, imageIndex]);
|
||||||
|
|
||||||
const moveToNextImage = () => {
|
const moveToNextImage = useCallback(() => {
|
||||||
const imageItemsLength = imageItems.length;
|
const imageItemsLength = imageItems.length;
|
||||||
setImageIndex((prevState) => (prevState + 1) % imageItemsLength);
|
setImageIndex((prevState) => (prevState + 1) % imageItemsLength);
|
||||||
};
|
setSelectedImages([imageItems[(imageIndex + 1) % imageItemsLength]]);
|
||||||
|
}, [imageItems, imageIndex]);
|
||||||
|
|
||||||
const handleImageSelection = useCallback((selectedImages) => {
|
const handleImageSelection = useCallback((selectedImages) => {
|
||||||
setSelectedImages(selectedImages);
|
setSelectedImages(selectedImages);
|
||||||
@@ -340,6 +342,28 @@ const Main = ({ isLoadingMore, metadata, onDelete, onLoadMore }) => {
|
|||||||
}
|
}
|
||||||
}, [handleImageSelection, updateSelectedImage]);
|
}, [handleImageSelection, updateSelectedImage]);
|
||||||
|
|
||||||
|
const deleteImage = useCallback(() => {
|
||||||
|
const image = selectedImages[0];
|
||||||
|
const index = imageItems.findIndex(item => item.id === image.id);
|
||||||
|
onDelete(selectedImages);
|
||||||
|
|
||||||
|
const newImageItems = imageItems.filter(item => item.id !== image.id);
|
||||||
|
let newSelectedImage;
|
||||||
|
|
||||||
|
if (newImageItems.length === 0) {
|
||||||
|
setSelectedImages([]);
|
||||||
|
setIsImagePopupOpen(false);
|
||||||
|
setImageIndex(0);
|
||||||
|
} else {
|
||||||
|
const newIndex = index >= newImageItems.length ? 0 : index;
|
||||||
|
newSelectedImage = newImageItems[newIndex];
|
||||||
|
setImageIndex(newIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelectedImages(newSelectedImage ? [newSelectedImage] : []);
|
||||||
|
updateSelectedImage(newSelectedImage);
|
||||||
|
}, [selectedImages, imageItems, onDelete, updateSelectedImage]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
@@ -385,6 +409,7 @@ const Main = ({ isLoadingMore, metadata, onDelete, onLoadMore }) => {
|
|||||||
closeImagePopup={closeImagePopup}
|
closeImagePopup={closeImagePopup}
|
||||||
moveToPrevImage={moveToPrevImage}
|
moveToPrevImage={moveToPrevImage}
|
||||||
moveToNextImage={moveToNextImage}
|
moveToNextImage={moveToNextImage}
|
||||||
|
onDeleteImage={deleteImage}
|
||||||
/>
|
/>
|
||||||
</ModalPortal>
|
</ModalPortal>
|
||||||
)}
|
)}
|
||||||
|
Reference in New Issue
Block a user