-
- Your Cart
- {selectedPosters.map((poster, index) => (
-
-
-
- {`Movie ID: ${poster.movieId}`}
- {poster.posterId}
- {
- const newSelected = [...selectedForDownload];
- newSelected[index] = e.target.checked;
- setSelectedForDownload(newSelected);
- }}
- className={classes.checkbox}
- />
- }
- label="Select for download"
- className={classes.typography}
- />
-
-
-
-
- ))}
-
-
-
- Download Format
- setDownloadFormat(e.target.value)}
- SelectProps={{
- native: true,
- }}
- className={classes.formControl}
- >
-
-
-
-
-
-
-
-
-
-
+ const classes = useStyles();
+ const dispatch = useDispatch();
+ const selectedPosters = useSelector((state) => {
+ const selections = state.posterSelections;
+ return Object.entries(selections).flatMap(([movieId, posters]) =>
+ posters.map((posterId) => ({ movieId, posterId }))
);
+ });
+
+ const [selectedForDownload, setSelectedForDownload] = useState(
+ selectedPosters.map(() => true)
+ );
+ const [downloadFormat, setDownloadFormat] = useState("zip");
+ const [renameDialogOpen, setRenameDialogOpen] = useState(false);
+ const [currentPosterIndex, setCurrentPosterIndex] = useState(null);
+ const [newPosterName, setNewPosterName] = useState("");
+
+ const handleRemovePoster = (index) => {
+ dispatch(
+ removePoster(
+ selectedPosters[index].movieId,
+ selectedPosters[index].posterId
+ )
+ );
+ };
+
+ const handleDownload = async () => {
+ const postersToDownload = selectedPosters
+ .filter((_, index) => selectedForDownload[index])
+ .map((poster) => ({
+ movieId: poster.movieId,
+ posterId: poster.posterId,
+ movieName: poster.movieName,
+ movieYear: poster.movieYear,
+ }));
+
+ console.log("Downloading posters:", postersToDownload);
+
+ try {
+ const response = await axios.post(
+ "http://localhost:5000/api/download-posters",
+ {
+ posters: postersToDownload,
+ format: downloadFormat,
+ },
+ {
+ responseType: "blob",
+ }
+ );
+
+ const blob = new Blob([response.data], {
+ type: response.headers["content-type"],
+ });
+ const link = document.createElement("a");
+ link.href = window.URL.createObjectURL(blob);
+ link.download = `posters.${downloadFormat}`;
+ link.click();
+ } catch (error) {
+ console.error("Failed to download posters:", error);
+ }
+ };
+
+ const handleShare = () => {
+ console.log("Sharing selected posters");
+ };
+
+ const handleRename = (index) => {
+ setCurrentPosterIndex(index);
+ setNewPosterName(selectedPosters[index].posterId);
+ setRenameDialogOpen(true);
+ };
+
+ const handleRenameConfirm = () => {
+ console.log(`Renaming poster ${currentPosterIndex} to ${newPosterName}`);
+ setRenameDialogOpen(false);
+ };
+
+ return (
+