From 8050485ecff6ec920d9c10017e719103064e3cff Mon Sep 17 00:00:00 2001 From: 0rigin-c0de Date: Wed, 2 Aug 2023 11:29:15 +0530 Subject: [PATCH] feat: Simplify profile data display and use user.photoURL for profile picture --- src/pages/profilePage.jsx | 551 ++++++++++++++++++++------------------ 1 file changed, 296 insertions(+), 255 deletions(-) diff --git a/src/pages/profilePage.jsx b/src/pages/profilePage.jsx index c32e7fc..d2edea0 100644 --- a/src/pages/profilePage.jsx +++ b/src/pages/profilePage.jsx @@ -1,284 +1,325 @@ -import React from 'react'; +import React from "react"; import { - Container, - Box, - Flex, - Stack, - HStack, - Heading, - Avatar, - Input, - Textarea, - Text, - Button, - useToast, - Modal, - ModalOverlay, - ModalContent, - ModalHeader, - ModalFooter, - ModalBody, - ModalCloseButton, - SimpleGrid, - //UnorderedList + Container, + Box, + Flex, + Stack, + HStack, + Heading, + Avatar, + Input, + Textarea, + Text, + Button, + useToast, + Modal, + ModalOverlay, + ModalContent, + ModalHeader, + ModalFooter, + ModalBody, + ModalCloseButton, + SimpleGrid, + //UnorderedList } from "@chakra-ui/react"; import { - FacebookIcon, - FacebookShareButton, - LinkedinIcon, - LinkedinShareButton, - PinterestIcon, - PinterestShareButton, - RedditIcon, - RedditShareButton, - TelegramIcon, - TelegramShareButton, - TwitterIcon, - TwitterShareButton, - WhatsappIcon, - WhatsappShareButton, - } from "react-share"; + FacebookIcon, + FacebookShareButton, + LinkedinIcon, + LinkedinShareButton, + PinterestIcon, + PinterestShareButton, + RedditIcon, + RedditShareButton, + TelegramIcon, + TelegramShareButton, + TwitterIcon, + TwitterShareButton, + WhatsappIcon, + WhatsappShareButton, +} from "react-share"; -import 'firebase/auth'; -import { useAuth } from '../lib/auth'; -import { addDoc, getDoc, getUserDocs } from '../lib/db'; -import { useParams } from 'react-router-dom' +import "firebase/auth"; +import { useAuth } from "../lib/auth"; +import { addDoc, getDoc, getUserDocs } from "../lib/db"; +import { useParams } from "react-router-dom"; //import { FaBorderNone } from 'react-icons/fa'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faShareAlt } from '@fortawesome/free-solid-svg-icons'; -import { faEdit } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faShareAlt } from "@fortawesome/free-solid-svg-icons"; +import { faEdit } from "@fortawesome/free-solid-svg-icons"; import Poll from "../components/poll"; export default function Profile(props) { - const { user, loadingUser } = useAuth(); - const [userDoc, setUserDoc] = React.useState(); - const [userData, setUserData] = React.useState(); - const { uid } = useParams() + const { user, loadingUser } = useAuth(); + const [userDoc, setUserDoc] = React.useState(); + const [userData, setUserData] = React.useState(); + const { uid } = useParams(); - const [edit, setEdit] = React.useState(false); - const [displayName, setDisplayName] = React.useState(''); //get from firebase - const [desc, setDesc] = React.useState(''); - const [showIconModal, setShowIconModal] = React.useState(false); - const [pfpLink, setPfpLink] = React.useState(''); - const [polls, setPolls] = React.useState([]); - const toast = useToast() - const [OpenShare, setOpenShare] = React.useState(false); + const [edit, setEdit] = React.useState(false); + const [displayName, setDisplayName] = React.useState(""); //get from firebase + const [desc, setDesc] = React.useState(""); + const [showIconModal, setShowIconModal] = React.useState(false); + const [pfpLink, setPfpLink] = React.useState(""); + const [polls, setPolls] = React.useState([]); + const toast = useToast(); + const [OpenShare, setOpenShare] = React.useState(false); - - React.useEffect(() => { - //if (!user && !loadingUser) return window.location.href = '/login'; - if (!user) return; + React.useEffect(() => { + //if (!user && !loadingUser) return window.location.href = '/login'; + if (!user) return; - async function checkUserDoc() { - const userDatas = await getDoc('users', uid? uid : user.uid); - if (!userDatas) { - await addDoc('users', { - displayName: "", - description: "", - logo: "" - }, user.uid); - } - setUserData(userDatas) - console.log(userDatas) - } - checkUserDoc(); - - async function getPolls() { - const userDocs = await getUserDocs('polls', uid? uid : user.uid); - setPolls(userDocs); - // setDisplayName(user.displayName ? user.displayName : ""); - setUserDoc(user) - // setPfpLink(user.pfpLink) - setPolls(userDocs); - // setDesc(user.description) - console.log(userDocs) - } - getPolls(); - }, [user, loadingUser]); - - async function saveData() { - let newDoc - console.log(pfpLink, displayName, desc); - newDoc = { - logo: pfpLink ? pfpLink : userData?.logo, - displayName: displayName ? displayName : userData?.displayName, - description: desc ? desc : userData?.description - } - - delete newDoc.id; - await addDoc('users', newDoc, user.uid); - setUserDoc({ newDoc }); - setShowIconModal(false) - setUserData({ - ...userData, - logo: pfpLink ? pfpLink : userData?.logo, - displayName: displayName ? displayName : userData?.displayName, - description: desc ? desc : userData?.description - }) + async function checkUserDoc() { + const userDatas = await getDoc("users", uid ? uid : user.uid); + if (!userDatas) { + await addDoc( + "users", + { + displayName: "", + description: "", + logo: "", + }, + user.uid + ); + } + setUserData(userDatas); + console.log(userDatas); } + checkUserDoc(); + async function getPolls() { + const userDocs = await getUserDocs("polls", uid ? uid : user.uid); + setPolls(userDocs); + // setDisplayName(user.displayName ? user.displayName : ""); + setUserDoc(user); + // setPfpLink(user.pfpLink) + setPolls(userDocs); + // setDesc(user.description) + console.log(userDocs); + } + getPolls(); + }, [user, loadingUser]); - let share = () => { - let copyText = `${window.location.href}/` + user.uid; + async function saveData() { + let newDoc; + console.log(pfpLink, displayName, desc); + newDoc = { + logo: pfpLink ? pfpLink : userData?.logo, + displayName: displayName ? displayName : userData?.displayName, + description: desc ? desc : userData?.description, + }; + delete newDoc.id; + await addDoc("users", newDoc, user.uid); + setUserDoc({ newDoc }); + setShowIconModal(false); + setUserData({ + ...userData, + logo: pfpLink ? pfpLink : userData?.logo, + displayName: displayName ? displayName : userData?.displayName, + description: desc ? desc : userData?.description, + }); + } + let share = () => { + let copyText = `${window.location.href}/` + user.uid; - try { - navigator.clipboard.writeText(copyText); + try { + navigator.clipboard.writeText(copyText); - toast({ - title: "Copied to Clipboard", - description: "The sharing link is copied to clipboard", - status: "success", - isClosable: true, - }) - } - catch { - toast({ - title: "Error", - description: "Error copying to clipboard", - status: "error", - isClosable: true, - }) - } + toast({ + title: "Copied to Clipboard", + description: "The sharing link is copied to clipboard", + status: "success", + isClosable: true, + }); + } catch { + toast({ + title: "Error", + description: "Error copying to clipboard", + status: "error", + isClosable: true, + }); } + }; - return ( - <> - + return ( + <> + + setShowIconModal(false)}> + + + Update Profile + + + setPfpLink(e.target.value)} + /> + setDisplayName(e.target.value)} + /> +