{"version":3,"file":"AlbumHeader-Cx6Gg-jb.js","sources":["../../../app/javascript/entrypoints/Album/AlbumHeader.jsx"],"sourcesContent":["// AlbumHeader.js\nimport React, { useState } from \"react\";\nimport { Typography, TextField, IconButton, Button, Box } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { colors } from \"../lib/theme\";\nimport RefreshLink from \"../../shared/RefreshLink\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { doc, updateDoc, deleteDoc } from \"firebase/firestore\";\nimport { db } from \"../../shared/firebase\";\nimport ConfirmDialog from '../../shared/ConfirmDialog';\n\nconst AlbumHeader = ({ albumId, title, subtitle, creatorName, userId, currentUserId, privacyLevel }) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editedTitle, setEditedTitle] = useState(title);\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false);\n const [isEditingSubTitle, setIsEditingSubTitle] = useState(false);\n const [editedSubTitle, setEditedSubTitle] = useState(subtitle);\n const navigate = useNavigate();\n\n const handleEditClick = () => {\n setIsEditing(true);\n setEditedTitle(title);\n };\n\n const handleSaveTitle = async () => {\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, {\n title: editedTitle,\n updatedAt: new Date(),\n });\n setIsEditing(false);\n } catch (error) {\n console.error(\"Error updating album title:\", error);\n alert(\"Failed to update album title. Please try again.\");\n }\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n setEditedTitle(title);\n };\n\n const handleDeleteClick = () => {\n setOpenDeleteDialog(true);\n };\n\n const handleCloseDeleteDialog = () => {\n setOpenDeleteDialog(false);\n };\n\n const handleConfirmDelete = async () => {\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await deleteDoc(albumRef);\n handleCloseDeleteDialog();\n navigate(\"/dashboard\"); // Redirect to dashboard after deletion\n } catch (error) {\n console.error(\"Error deleting album:\", error);\n alert(\"Failed to delete album. Please try again.\");\n }\n };\n\n const handleSubTitleChange = async (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n const newSubTitle = event.target.value.trim();\n if (newSubTitle !== subtitle) {\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, {\n subtitle: newSubTitle,\n updatedAt: new Date(),\n });\n setEditedSubTitle(newSubTitle);\n } catch (error) {\n console.error(\"Error updating subtitle:\", error);\n alert(\"Failed to update subtitle. Please try again.\");\n }\n }\n setIsEditingSubTitle(false);\n }\n };\n\n const handleSaveSubTitle = async () => {\n if (editedSubTitle !== subtitle) {\n try {\n const albumRef = doc(db, \"albums\", albumId);\n await updateDoc(albumRef, {\n subtitle: editedSubTitle,\n updatedAt: new Date(),\n });\n } catch (error) {\n console.error(\"Error updating subtitle:\", error);\n alert(\"Failed to update subtitle. Please try again.\");\n }\n }\n setIsEditingSubTitle(false);\n };\n\n const getPrivacyMessage = () => {\n switch (privacyLevel) {\n case 0:\n return 'A private album';\n case 1:\n return 'A shared album';\n case 2:\n return 'A public album';\n default:\n return 'An album';\n }\n };\n\n return (\n <>\n {isEditing ? (\n