{"version":3,"file":"ImageUploader-Dm4-SEB-.js","sources":["../../../app/javascript/shared/ImageUploader.jsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { ref, uploadBytes, getDownloadURL } from \"firebase/storage\";\nimport { updateDoc, doc } from \"firebase/firestore\";\nimport { db, storage } from \"./firebase\";\n\nconst ImageUploader = ({ user, onUploadSuccess, onUploadError, children }) => {\n const fileInputRef = useRef(null);\n\n const handleImageClick = () => {\n fileInputRef.current.click();\n };\n\n const handleImageUpload = async (event) => {\n const file = event.target.files[0];\n if (file && user) {\n try {\n if (file.size > 5 * 1024 * 1024) {\n throw new Error(\"File size exceeds 5MB limit.\");\n }\n\n const allowedTypes = [\"image/jpeg\", \"image/png\", \"image/gif\"];\n if (!allowedTypes.includes(file.type)) {\n throw new Error(\"Invalid file type. Please upload a JPEG, PNG, or GIF image.\");\n }\n\n const fileName = `${Date.now()}_${file.name}`;\n const storageRef = ref(storage, `profile_photos/${user.uid}/${fileName}`);\n\n await uploadBytes(storageRef, file);\n const downloadURL = await getDownloadURL(storageRef);\n await updateDoc(doc(db, \"users\", user.uid), {\n profilePhotoURL: downloadURL,\n });\n onUploadSuccess(downloadURL);\n } catch (error) {\n console.error(\"Error uploading profile photo:\", error);\n onUploadError(error.message);\n }\n }\n };\n\n return (\n <>\n \n
\n {children}\n
\n \n );\n};\n\nexport default ImageUploader;\n"],"names":["ImageUploader","user","onUploadSuccess","onUploadError","children","fileInputRef","useRef","handleImageClick","handleImageUpload","event","file","fileName","storageRef","ref","storage","uploadBytes","downloadURL","getDownloadURL","updateDoc","doc","db","error","React"],"mappings":"yIAKA,MAAMA,EAAgB,CAAC,CAAE,KAAAC,EAAM,gBAAAC,EAAiB,cAAAC,EAAe,SAAAC,KAAe,CACtE,MAAAC,EAAeC,SAAO,IAAI,EAE1BC,EAAmB,IAAM,CAC7BF,EAAa,QAAQ,OAAM,EAGvBG,EAAoB,MAAOC,GAAU,CACzC,MAAMC,EAAOD,EAAM,OAAO,MAAM,CAAC,EACjC,GAAIC,GAAQT,EACN,GAAA,CACF,GAAIS,EAAK,KAAO,EAAI,KAAO,KACnB,MAAA,IAAI,MAAM,8BAA8B,EAIhD,GAAI,CADiB,CAAC,aAAc,YAAa,WAAW,EAC1C,SAASA,EAAK,IAAI,EAC5B,MAAA,IAAI,MAAM,6DAA6D,EAG/E,MAAMC,EAAW,GAAG,KAAK,IAAK,CAAA,IAAID,EAAK,IAAI,GACrCE,EAAaC,EAAIC,EAAS,kBAAkBb,EAAK,GAAG,IAAIU,CAAQ,EAAE,EAElE,MAAAI,EAAYH,EAAYF,CAAI,EAC5B,MAAAM,EAAc,MAAMC,EAAeL,CAAU,EACnD,MAAMM,EAAUC,EAAIC,EAAI,QAASnB,EAAK,GAAG,EAAG,CAC1C,gBAAiBe,CAAA,CAClB,EACDd,EAAgBc,CAAW,QACpBK,EAAO,CACN,QAAA,MAAM,iCAAkCA,CAAK,EACrDlB,EAAckB,EAAM,OAAO,CAC7B,CACF,EAGF,OAEIC,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAAC,QAAA,CACC,KAAK,OACL,IAAKjB,EACL,SAAUG,EACV,OAAO,UACP,MAAO,CAAE,QAAS,MAAO,CAAA,CAAA,EAE1Bc,EAAA,cAAA,MAAA,CAAI,QAASf,CAAA,EACXH,CACH,CACF,CAEJ"}