client-web/build/static/js/980.27d29068.chunk.js.map
{"version":3,"file":"static/js/980.27d29068.chunk.js","mappings":"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","sources":["helpers/chat/createPrivateChat.ts","pages/Profile/QrModal.tsx","pages/Profile/ChangeImage.tsx","pages/Profile/EditProfileModal.tsx","pages/Profile/UserCard.tsx","pages/Profile/ItemsTable.tsx","pages/Profile/DocumentsTable.tsx","firebase.ts","pages/Profile/MyProfile.tsx","pages/Profile/OtherProfile.tsx","pages/Profile/index.tsx","pages/Transactions/Transactions.tsx"],"sourcesContent":["import xmpp from \"../../xmpp\";\nimport {useStoreState} from \"../../store\";\nimport { CONFERENCEDOMAIN } from \"../../constants\";\n\nexport const underscoreManipulation = (str:string) => {\n if(str){\n return str.replace(/([A-Z])/g, '_$1').toLowerCase()\n }else{\n return 'invalid string passed'\n }\n};\n\nexport const createPrivateChat = async (\n myWalletAddress: string,\n otherUserWalletAddress: string,\n myFirstName: string,\n otherFirstName: string,\n userJID?: string\n) => {\n const combinedWalletAddress = [myWalletAddress, otherUserWalletAddress]\n .sort()\n .join('.');\n\n const roomJid = combinedWalletAddress.toLowerCase() + CONFERENCEDOMAIN;\n const combinedUsersName = [myFirstName, otherFirstName].sort().join(' and ');\n\n const currentChatRooms = useStoreState.getState().userChatRooms;\n\n let isNewRoom = false;\n if(currentChatRooms.filter((el) => el.jid === roomJid).length === 0){\n isNewRoom = true;\n xmpp.createNewRoom(combinedWalletAddress.toLowerCase());\n xmpp.setOwner(combinedWalletAddress.toLowerCase());\n xmpp.roomConfig(\n combinedWalletAddress.toLowerCase(),\n {roomName: combinedUsersName},\n );\n xmpp.subsribe(roomJid);\n xmpp.presenceInRoom(roomJid);\n\n setTimeout(() => {\n xmpp.sendInvite(\n underscoreManipulation(myWalletAddress),\n roomJid.toLowerCase(),\n underscoreManipulation(otherUserWalletAddress),\n );\n }, 1000);\n }\n\n return {roomJid, roomName: combinedUsersName, isNewRoom};\n};\n","import React from \"react\";\nimport { Button, Dialog, DialogTitle, IconButton } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport QRCode from \"react-qr-code\";\nimport { truncateString } from \"../../utils\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nexport interface IQrModal {\n open: boolean;\n link: string;\n onClose: () => void;\n title?: string;\n}\n\nexport const QrModal: React.FC<IQrModal> = ({ title, open, link, onClose }) => {\n return (\n <Dialog maxWidth={false} open={open} onClose={onClose}>\n {!!title && (\n <DialogTitle sx={{ padding: \"0 24px\", paddingTop: \"20px\" }}>\n {title}\n </DialogTitle>\n )}\n <Box sx={{ padding: \"20px\" }}>\n <QRCode\n size={256}\n style={{ height: \"50vh\", maxWidth: \"100%\", width: \"100%\" }}\n value={link}\n viewBox={`0 0 256 256`}\n />\n <Box\n sx={{\n boxShadow: \"0px 0px 10px -5px rgba(0,0,0,0.75)\",\n borderRadius: \"10px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n pl: \"10px\",\n my: \"10px\",\n }}\n >\n <span>{truncateString(link, 50)}</span>\n <Button\n variant=\"contained\"\n sx={{ borderRadius: \"10px\", marginLeft: '5px' }}\n onClick={() => navigator.clipboard.writeText(link)}\n >\n Copy\n </Button>\n </Box>\n <IconButton\n onClick={onClose}\n sx={{\n color: \"black\",\n position: \"absolute\",\n top: 10,\n right: 10,\n fontSize: \"30px\",\n }}\n >\n <CloseIcon fontSize=\"inherit\" />\n </IconButton>\n </Box>\n </Dialog>\n );\n};\n","import React, { useState, useRef } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Button } from \"@mui/material\";\nimport ReactCrop, { centerCrop, makeAspectCrop, Crop } from \"react-image-crop\";\nimport * as http from \"../../http\";\nimport { useStoreState } from \"../../store\";\nimport \"react-image-crop/dist/ReactCrop.css\";\n\ntype TProps = {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nfunction centerAspectCrop(\n mediaWidth: number,\n mediaHeight: number,\n aspect: number\n) {\n return centerCrop(\n makeAspectCrop(\n {\n unit: \"%\",\n width: 90,\n },\n aspect,\n mediaWidth,\n mediaHeight\n ),\n mediaWidth,\n mediaHeight\n );\n}\n\nexport default function ChangeImage({ open, setOpen }: TProps) {\n const user = useStoreState((state) => state.user);\n const setUser = useStoreState((state) => state.setUser);\n const fileRef = useRef<HTMLInputElement>(null);\n const [imgSrc, setImgSrc] = useState(\"\");\n const imgRef = useRef<HTMLImageElement>(null);\n const [crop, setCrop] = useState<Crop>();\n const [blob, setBlob] = useState<Blob>();\n const aspect = 2;\n\n function onSelectFile(e: React.ChangeEvent<HTMLInputElement>) {\n if (e.target.files && e.target.files.length > 0) {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () =>\n setImgSrc(reader.result?.toString() || \"\")\n );\n reader.readAsDataURL(e.target.files[0]);\n }\n }\n\n function onImageLoad(e: React.SyntheticEvent<HTMLImageElement>) {\n if (aspect) {\n const { width, height } = e.currentTarget;\n setCrop(centerAspectCrop(width, height, aspect));\n }\n }\n\n function onSave() {\n const form = new FormData();\n form.append(\"file\", blob, \"profileImg\");\n http\n .updateProfile(form)\n .then((response) => {\n // response.data.user\n setUser({\n ...user,\n profileImage: response.data.user.profileImage,\n });\n setOpen(false);\n })\n .catch((e) => console.log(e));\n }\n\n function onCropComplete(crop) {\n const canvas = document.createElement(\"canvas\");\n const pixelRatio = window.devicePixelRatio;\n const scaleX = imgRef.current.naturalWidth / imgRef.current.width;\n const scaleY = imgRef.current.naturalHeight / imgRef.current.height;\n const ctx = canvas.getContext(\"2d\");\n\n canvas.width = crop.width * pixelRatio * scaleX;\n canvas.height = crop.height * pixelRatio * scaleY;\n\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n ctx.imageSmoothingQuality = \"high\";\n\n ctx.drawImage(\n imgRef.current,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n 0,\n 0,\n crop.width * scaleX,\n crop.height * scaleY\n );\n\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n //reject(new Error('Canvas is empty'));\n console.error(\"Canvas is empty\");\n return;\n }\n\n setBlob(blob);\n },\n \"image/jpeg\",\n 1\n );\n }\n\n return (\n <Dialog onClose={() => {}} open={open}>\n <Box>\n <DialogTitle\n style={{ display: \"flex\", justifyContent: \"space-between\" }}\n >\n Change Image\n <IconButton\n onClick={() => {\n setImgSrc(\"\");\n setOpen(false);\n }}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <Box sx={{ typography: \"body1\", padding: 1 }}>\n <Box style={{ width: \"400px\" }}>\n {!imgSrc && (\n <Box\n style={{\n height: \"200px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <input\n type=\"file\"\n ref={fileRef}\n style={{ display: \"none\" }}\n accept=\"image/*\"\n onChange={onSelectFile}\n />\n <Button onClick={() => fileRef.current.click()}>Upload</Button>\n </Box>\n )}\n {!!imgSrc && (\n <Box>\n <ReactCrop\n crop={crop}\n onChange={(_, percentCrop) => setCrop(percentCrop)}\n onComplete={onCropComplete}\n minWidth={100}\n minHeight={100}\n >\n <img\n style={{ width: \"400px\", height: \"auto\" }}\n ref={imgRef}\n alt=\"Crop me\"\n src={imgSrc}\n onLoad={onImageLoad}\n />\n </ReactCrop>\n <Box style={{ display: \"flex\" }}>\n <Button onClick={onSave} style={{ marginLeft: \"auto\" }}>\n Save\n </Button>\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </Dialog>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Button, Tooltip } from \"@mui/material\";\nimport { useFormik } from \"formik\";\nimport TextField from \"@mui/material/TextField\";\nimport { useStoreState } from \"../../store\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport { httpWithAuth } from \"../../http\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport ChageImage from \"./ChangeImage\";\nimport defUserImage from \"../../assets/images/def-ava.png\";\n\ntype TProps = {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n user: any;\n};\n\nexport default function EditProfileModal({ open, setOpen, user }: TProps) {\n const [change, setChange] = useState(false);\n const [loading, setLoading] = useState(false);\n const setUser = useStoreState((state) => state.setUser);\n\n const formik = useFormik({\n initialValues: {\n firstName: user.firstName,\n lastName: user.lastName,\n description: user.description ? user.description : \"\",\n isProfileOpen: user.isProfileOpen,\n isAssetsOpen: user.isAssetsOpen,\n },\n validate: (values) => {\n const errors: Record<string, string> = {};\n\n if (!values.firstName) {\n errors.firstName = \"Required\";\n }\n\n if (!values.lastName) {\n errors.lastName = \"Required\";\n }\n\n return errors;\n },\n onSubmit: (values) => {\n const fd = new FormData();\n fd.append(\"firstName\", values.firstName);\n fd.append(\"lastName\", values.lastName);\n\n if (values.description) {\n fd.append(\"description\", values.description);\n }\n\n fd.append(\"isProfileOpen\", values.isProfileOpen);\n fd.append(\"isAssetsOpen\", values.isAssetsOpen);\n setLoading(true);\n httpWithAuth()\n .put(\"/users\", fd)\n .then((response) => {\n const respUser = response.data.user;\n setUser({\n ...user,\n firstName: respUser.firstName,\n lastName: respUser.lastName,\n description: respUser.description,\n isProfileOpen: respUser.isProfileOpen,\n isAssetsOpen: respUser.isAssetsOpen,\n });\n setOpen(false);\n })\n .finally(() => setLoading(false));\n },\n });\n\n return (\n <Dialog onClose={() => {}} open={open}>\n <Box>\n <DialogTitle\n style={{ display: \"flex\", justifyContent: \"space-between\" }}\n >\n Edit Profile\n <IconButton onClick={() => setOpen(false)}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <Box sx={{ width: \"100%\", typography: \"body1\", padding: 1 }}>\n <Box style={{ display: \"flex\" }}>\n <Box\n sx={{ marginRight: \"10px\" }}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n cursor: \"pointer\",\n }}\n >\n <div onClick={() => setChange(true)}>\n <img\n style={{ width: \"150px\", borderRadius: \"10px\" }}\n alt=\"\"\n src={user.profileImage ? user.profileImage : defUserImage}\n />\n </div>\n </Box>\n <Box>\n <form\n style={{ display: \"flex\", flexDirection: \"column\" }}\n onSubmit={formik.handleSubmit}\n >\n <TextField\n margin=\"dense\"\n label=\"First Name\"\n name=\"firstName\"\n variant=\"standard\"\n error={\n formik.touched.firstName && formik.errors.firstName\n ? true\n : false\n }\n helperText={\n formik.touched.firstName && formik.errors.firstName\n ? (formik.errors.firstName as string)\n : \"\"\n }\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.firstName}\n />\n <TextField\n margin=\"dense\"\n label=\"Last Name\"\n name=\"lastName\"\n variant=\"standard\"\n error={\n formik.touched.lastName && formik.errors.lastName\n ? true\n : false\n }\n helperText={\n formik.touched.lastName && formik.errors.lastName\n ? (formik.errors.lastName as string)\n : \"\"\n }\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.lastName}\n />\n <TextField\n margin=\"dense\"\n label=\"Profile Description\"\n name=\"description\"\n variant=\"standard\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.description}\n />\n <Tooltip\n placement={\"top\"}\n title={\n \"When enabled, your profile and documents will be visible by all visitors. When disabled, your profile will only be seen by those who received a direct sharing link from you.\"\n }\n >\n <FormControlLabel\n checked={formik.values.isProfileOpen}\n name=\"isProfileOpen\"\n control={\n <Checkbox\n onChange={(e) => {\n formik.setFieldValue(\n \"isProfileOpen\",\n e.target.checked\n );\n }}\n />\n }\n label=\"Profile is public\"\n labelPlacement=\"end\"\n />\n </Tooltip>\n <Tooltip\n placement={\"bottom\"}\n title={\n \"When this is enabled, all of your documents will be visible to those who have access to your profile. When this is disabled, you will need to share your documents individually so others can see them.\"\n }\n >\n <FormControlLabel\n checked={formik.values.isAssetsOpen || formik.values.isProfileOpen}\n name=\"isAssetsOpen\"\n control={\n <Checkbox\n disabled={formik.values.isProfileOpen}\n onChange={(e) => {\n formik.setFieldValue(\n \"isAssetsOpen\",\n e.target.checked\n );\n }}\n />\n }\n label=\"Documents are public\"\n labelPlacement=\"end\"\n />\n </Tooltip>\n <LoadingButton\n type=\"submit\"\n loading={loading}\n variant=\"contained\"\n >\n Save\n </LoadingButton>\n </form>\n </Box>\n </Box>\n </Box>\n </Box>\n {change && <ChageImage open={change} setOpen={setChange} />}\n </Dialog>\n );\n}\n","import React, { useState } from \"react\";\nimport Container from \"@mui/material/Container\";\nimport Card from \"@mui/material/Card\";\nimport Box from \"@mui/material/Box\";\nimport { TProfile } from \"./types\";\nimport defUserImage from \"../../assets/images/def-ava.png\";\nimport { useStoreState } from \"../../store\";\nimport EditProfileModal from \"./EditProfileModal\";\nimport { Button, IconButton } from \"@mui/material\";\nimport { createPrivateChat } from \"../../helpers/chat/createPrivateChat\";\nimport xmpp, { walletToUsername } from \"../../xmpp\";\nimport { useHistory } from \"react-router-dom\";\nimport { CONFERENCEDOMAIN } from \"../../constants\";\nimport { generateProfileLink } from \"../../utils\";\nimport QrCodeIcon from \"@mui/icons-material/QrCode\";\nimport { QrModal } from \"./QrModal\";\n\ntype TProps = {\n profile?: TProfile;\n walletAddress?: string;\n};\n\nexport default function UserCard({ profile, walletAddress }: TProps) {\n const [edit, setEdit] = useState(false);\n const user = useStoreState((state) => state.user);\n const [showQrModal, setShowQrModal] = useState(false);\n\n const history = useHistory();\n const openDirectChat = () => {\n createPrivateChat(\n user.walletAddress,\n walletAddress,\n user.firstName,\n profile.firstName,\n )\n .then((result) => {\n if (result.isNewRoom) {\n const temporaryRoomData = {\n jid: result.roomJid,\n name: result.roomName,\n room_background: \"none\",\n room_thumbnail: \"none\",\n users_cnt: \"2\",\n unreadMessages: 0,\n composing: \"\",\n toUpdate: true,\n description: \"\",\n };\n useStoreState.getState().setNewUserChatRoom(temporaryRoomData);\n history.push(\"/chat/\" + result.roomJid);\n } else {\n history.push(\"/chat/\" + result.roomJid);\n }\n })\n .catch((error) => {\n console.log(\"openPrivateRoom Error: \", error);\n });\n };\n if (profile) {\n return (\n <Box style={{ marginTop: \"10px\", marginRight: \"10px\" }}>\n <Card\n sx={{\n display: \"flex\",\n padding: \"10px\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"100%\",\n }}\n >\n <Box sx={{ marginRight: \"10px\" }}>\n {!!profile.firstName && (\n <img\n style={{ width: \"150px\", borderRadius: \"10px\" }}\n alt=\"\"\n src={profile.profileImage || defUserImage}\n />\n )}\n </Box>\n <Box>\n <Box sx={{ fontWeight: \"bold\" }}>\n {profile?.firstName} {profile?.lastName}\n </Box>\n {profile?.description && (\n <Box>Description: {profile?.description}</Box>\n )}\n {!!user.walletAddress && (\n <Button onClick={openDirectChat} variant=\"contained\" size=\"small\">\n Direct message\n </Button>\n )}\n </Box>\n </Card>\n </Box>\n );\n }\n return (\n <Box style={{ marginTop: \"10px\", marginRight: \"10px\" }}>\n <Card\n sx={{\n display: \"flex\",\n padding: \"10px\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"100%\",\n }}\n >\n <Box sx={{ marginRight: \"10px\" }}>\n <img\n style={{ width: \"150px\", borderRadius: \"10px\" }}\n alt=\"\"\n src={user.profileImage || defUserImage}\n />\n </Box>\n <Box>\n {!!user.firstName && (\n <>\n <Box\n sx={{\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n {user?.firstName} {user?.lastName}\n <IconButton\n sx={{ color: \"black\" }}\n onClick={() => setShowQrModal(true)}\n >\n <QrCodeIcon />\n </IconButton>\n </Box>\n {user?.description && <Box>Description: {user?.description}</Box>}\n </>\n )}\n </Box>\n\n {user.firstName && (\n <Button\n onClick={(e) => {\n setEdit(true);\n }}\n >\n Edit\n </Button>\n )}\n </Card>\n {edit && <EditProfileModal open={edit} setOpen={setEdit} user={user} />}\n <QrModal\n open={showQrModal}\n link={generateProfileLink({\n firstName: user.firstName,\n lastName: user.lastName,\n walletAddress: user.walletAddress,\n xmppId: walletToUsername(user.walletAddress) + CONFERENCEDOMAIN,\n })}\n onClose={() => setShowQrModal(false)}\n />\n </Box>\n );\n}\n","import React from \"react\";\n\nimport { TBalance } from \"../../store\";\nimport {\n Avatar,\n Chip,\n List,\n ListItem,\n ListItemAvatar,\n ListItemButton,\n ListItemText,\n useTheme,\n Box,\n} from \"@mui/material\";\nimport { produceNfmtItems } from \"../../utils\";\nimport { NFMT_TRAITS } from \"../../constants\";\nimport { useHistory } from \"react-router\";\n\nconst NftItem = ({\n item,\n walletAddress,\n}: {\n item: TBalance;\n walletAddress: string;\n}) => {\n const theme = useTheme();\n const history = useHistory();\n const onItemClick = () => {\n history.push({\n pathname: \"/provenance\",\n state: { nftItem: item, walletAddress },\n });\n };\n return (\n <ListItem key={item.nftId}>\n <ListItemButton onClick={onItemClick}>\n <ListItemAvatar>\n <Avatar\n style={{ backgroundColor: theme.palette.primary.main }}\n src={item.imagePreview}\n />\n </ListItemAvatar>\n <ListItemText primary={item.tokenName} />\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <span style={{ textAlign: \"left\", width: 50 }}>\n {item.balance}/{item.total}\n </span>\n </Box>\n </ListItemButton>\n </ListItem>\n );\n};\nconst NfmtItem = ({\n item,\n walletAddress,\n}: {\n item: TBalance;\n walletAddress: string;\n}) => {\n const theme = useTheme();\n const history = useHistory();\n const onItemClick = () => {\n history.push({\n pathname: \"/provenance\",\n state: { nftItem: item, walletAddress },\n });\n };\n return (\n <ListItem key={item.nftId}>\n <ListItemButton onClick={onItemClick}>\n <ListItemAvatar>\n <Avatar\n style={{ backgroundColor: theme.palette.primary.main }}\n src={item.nftFileUrl}\n />\n </ListItemAvatar>\n <ListItemText primary={item.tokenName} />\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n <Box\n sx={{\n // marginRight: \"10px\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n }}\n >\n {item.traits.map((trait) => {\n if (NFMT_TRAITS[trait]) {\n return (\n <Chip\n sx={{\n backgroundColor: NFMT_TRAITS[trait].color,\n marginRight: \"5px\",\n }}\n label={trait}\n key={trait}\n />\n );\n } else {\n return null;\n }\n })}\n </Box>\n <span style={{ textAlign: \"left\", width: 50 }}>\n {item.balance}/{item.total}\n </span>\n </Box>\n </ListItemButton>\n </ListItem>\n );\n};\n\nexport default function ItemsTable({\n balance,\n walletAddress,\n}: {\n balance: TBalance[];\n walletAddress: string;\n}) {\n const nftItems = balance.filter((item) => item.tokenType === \"NFT\");\n const nfmtItems = produceNfmtItems(balance);\n\n console.log({ nfmtItems });\n return (\n <List sx={{ width: \"100%\", bgcolor: \"background.paper\" }}>\n {nftItems.map((item, i) => {\n return (\n <NftItem walletAddress={walletAddress} item={item} key={item.nftId} />\n );\n })}\n {nfmtItems.map((item, i) => {\n return (\n <NfmtItem\n walletAddress={walletAddress}\n item={item}\n key={item.nftId + i}\n />\n );\n })}\n </List>\n );\n}\n","import * as React from \"react\";\n\nimport { Box } from \"@mui/system\";\nimport * as http from \"../../http\";\n\nimport QrCodeIcon from \"@mui/icons-material/QrCode\";\nimport {\n Avatar,\n Chip,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemButton,\n ListItemText,\n useTheme,\n} from \"@mui/material\";\nimport { format } from \"date-fns\";\nimport { useHistory } from \"react-router\";\n\nconst DocumentItem = ({\n item,\n walletAddress,\n}: {\n item: http.IDocument;\n walletAddress: string;\n}) => {\n const theme = useTheme();\n const history = useHistory();\n const onItemClick = () => {\n history.push({\n pathname: \"/provenance\",\n state: { nftItem: item, walletAddress },\n });\n };\n return (\n <ListItem key={item._id}>\n <ListItemButton onClick={onItemClick}>\n <ListItemAvatar>\n <Avatar\n style={{ backgroundColor: theme.palette.primary.main }}\n src={item?.file?.locationPreview || item?.location}\n />\n </ListItemAvatar>\n <ListItemText\n primary={item.documentName}\n secondary={format(new Date(item.createdAt), \"pp PP\")}\n />\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <IconButton sx={{ color: \"black\" }}>\n <QrCodeIcon />\n </IconButton>\n </Box>\n </ListItemButton>\n </ListItem>\n );\n};\n\nexport default function DocumentsTable({\n documents,\n walletAddress,\n}: {\n documents: http.IDocument[];\n walletAddress: string;\n}) {\n return (\n <List sx={{ width: \"100%\", bgcolor: \"background.paper\" }}>\n {documents.map((item) => {\n return (\n <DocumentItem\n walletAddress={walletAddress}\n item={item}\n key={item._id}\n />\n );\n })}\n </List>\n );\n}\n","import { FirebaseApp, initializeApp } from \"firebase/app\";\nimport { getMessaging, getToken as _getToken } from \"firebase/messaging\";\nimport { getAnalytics } from \"firebase/analytics\";\n\nconst firebaseConfig = {\n apiKey: \"AIzaSyDQdkvvxKKx4-WrjLQoYf08GFARgi_qO4g\",\n authDomain: \"ethora-668e9.firebaseapp.com\",\n projectId: \"ethora-668e9\",\n storageBucket: \"ethora-668e9.appspot.com\",\n messagingSenderId: \"972933470054\",\n appId: \"1:972933470054:web:d4682e76ef02fd9b9cdaa7\",\n measurementId: \"G-WHM7XRZ4C8\",\n};\n\nexport const firebaseApp = initializeApp(firebaseConfig);\nexport const analytics = getAnalytics(firebaseApp);\n\nexport function getToken() {\n const messaging = getMessaging(firebaseApp);\n return _getToken(messaging, {\n vapidKey:\n \"BCzcT7yzF8F188maOgPAISXqWCTDavGzWW0SWLOBx9vX2mYFjBXMaTMBDR3HXlmXOduyE253sblF9HP6aEBbx38\",\n });\n}\n","import React, { useState, useEffect } from \"react\";\nimport Container from \"@mui/material/Container\";\nimport Box from \"@mui/material/Box\";\nimport { ExplorerRespose, ITransaction, TProfile } from \"./types\";\nimport UserCard from \"./UserCard\";\nimport { getTransactions, getBalance } from \"../../http\";\nimport { useStoreState } from \"../../store\";\nimport ItemsTable from \"./ItemsTable\";\nimport { Transactions } from \"../Transactions/Transactions\";\nimport { Typography } from \"@mui/material\";\nimport DocumentsTable from \"./DocumentsTable\";\nimport { FullPageSpinner } from \"../../components/FullPageSpinner\";\nimport { filterNftBalances } from \"../../utils\";\nimport { getToken } from \"../../firebase\";\n\nconst styles = {\n craeteNewLink: {\n textDecoration: \"none\",\n color: \"inherit\",\n fontSize: \"14px\",\n },\n};\n\nexport function MyProfile() {\n const [loading, setLoading] = useState(false);\n const [transactions, setTransactions] =\n useState<ExplorerRespose<ITransaction[]>>();\n const user = useStoreState((store) => store.user);\n const items = useStoreState((state) => state.balance);\n const documents = useStoreState((state) => state.documents);\n const setBalance = useStoreState((state) => state.setBalance);\n\n useEffect(() => {\n console.log(\"MyProfile init\");\n setLoading(true);\n getBalance(user.walletAddress).then((resp) => {\n setBalance(resp.data.balance);\n });\n getTransactions(user.walletAddress)\n .then((result) => {\n setTransactions(result.data);\n })\n .finally(() => setLoading(false));\n\n if (Notification.permission === \"denied\") {\n alert(\"Please enable notifications for this app in your browser\");\n } else {\n if (Notification.permission !== \"granted\") {\n Notification.requestPermission().then((permission) => {\n if (permission === \"granted\") {\n console.log(\"geting token\");\n getToken().then((token) => {\n console.log(\"my fb token \", token);\n });\n return;\n }\n });\n } else {\n console.log(\"geting token\");\n getToken().then((token) => {\n console.log(\"my fb token \", token);\n });\n return;\n }\n }\n }, []);\n\n if (loading) return <FullPageSpinner />;\n return (\n <Container maxWidth=\"xl\" style={{ height: \"calc(100vh - 80px)\" }}>\n <Box sx={{ margin: \"auto\", width: \"200px\" }}>\n <UserCard />\n </Box>\n <Typography\n variant=\"h6\"\n style={{\n margin: \"16px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span>Items</span>\n </Typography>\n <ItemsTable\n balance={items.filter(filterNftBalances)}\n walletAddress={user.walletAddress}\n />\n {!!documents.length && (\n <>\n <Typography\n variant=\"h6\"\n style={{\n margin: \"16px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span>Documents</span>\n </Typography>\n <DocumentsTable\n walletAddress={user.walletAddress}\n documents={documents}\n />\n </>\n )}\n\n {!!transactions && (\n <Box>\n <Typography variant=\"h6\" style={{ margin: \"16px\" }}>\n Transactions\n </Typography>\n <Transactions transactions={transactions.items} />\n </Box>\n )}\n </Container>\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport Container from \"@mui/material/Container\";\nimport Box from \"@mui/material/Box\";\nimport { ExplorerRespose, ITransaction, TProfile } from \"./types\";\nimport UserCard from \"./UserCard\";\nimport {\n getPublicProfile,\n getTransactions,\n getBalance,\n IDocument,\n} from \"../../http\";\nimport { Transactions } from \"../Transactions/Transactions\";\nimport { FullPageSpinner } from \"../../components/FullPageSpinner\";\nimport ItemsTable from \"./ItemsTable\";\nimport { filterNftBalances } from \"../../utils\";\nimport { TBalance } from \"../../store\";\nimport { Typography } from \"@mui/material\";\nimport DocumentsTable from \"./DocumentsTable\";\nimport * as http from \"../../http\";\n\ntype TProps = {\n walletAddress: string;\n};\n\nexport function OtherProfile(props: TProps) {\n const [loading, setLoading] = useState(true);\n const [profile, setProfile] = useState<TProfile>();\n const [transactions, setTransactions] =\n useState<ExplorerRespose<ITransaction[]>>();\n const [balances, setBalances] = useState<TBalance[]>([]);\n const [documents, setDocuments] = useState<IDocument[]>([]);\n const getDocuments = async (documents: IDocument[]) => {\n const mappedDocuments = [];\n for (const item of documents) {\n try {\n // const { data: file } = await http\n // .httpWithAuth()\n // .get<http.IFile>(\"/files/\" + item.files[0]);\n // item.file = file;\n item.location = item.locations[0]\n mappedDocuments.push(item);\n } catch (error) {\n console.log( item.files[0],\"sdjfkls\");\n }\n }\n setDocuments(mappedDocuments);\n };\n useEffect(() => {\n setLoading(true);\n getPublicProfile(props.walletAddress).then((result) => {\n setProfile(result.data);\n setBalances(result.data.balances.balance);\n getDocuments(result.data.documents);\n });\n // .finally(() => setLoading(false));\n setLoading(false);\n getTransactions(props.walletAddress).then((result) => {\n setTransactions(result.data);\n });\n }, []);\n\n if (loading) {\n return <FullPageSpinner />;\n }\n return (\n <Container maxWidth=\"xl\" style={{ height: \"calc(100vh - 80px)\" }}>\n <Box>\n {!!profile?.firstName && (\n <Box sx={{ width: \"200px\", margin: \"auto\", padding: \"10px\" }}>\n <UserCard profile={profile} walletAddress={props.walletAddress} />\n </Box>\n )}\n {!!balances.filter(filterNftBalances).length && (\n <>\n <Typography variant=\"h6\" style={{ margin: \"16px\" }}>\n Items\n </Typography>\n <ItemsTable\n balance={balances.filter(filterNftBalances)}\n walletAddress={props.walletAddress}\n />\n </>\n )}\n </Box>\n {!!documents.length && (\n <>\n <Typography variant=\"h6\" style={{ margin: \"16px\" }}>\n Documents\n </Typography>\n <DocumentsTable\n walletAddress={props.walletAddress}\n documents={documents}\n />\n </>\n )}\n {!!transactions && (\n <>\n <Typography variant=\"h6\" style={{ margin: \"16px\" }}>\n Transactions\n </Typography>\n <Transactions transactions={transactions.items} />\n </>\n )}\n {/* <DocumentsTable walletAddress={props.walletAddress} /> */}\n </Container>\n );\n}\n","import React from \"react\";\nimport { useStoreState } from \"../../store\";\nimport { useParams } from \"react-router-dom\";\nimport { MyProfile } from \"./MyProfile\";\nimport { OtherProfile } from \"./OtherProfile\";\n\nexport default function Profile() {\n const user = useStoreState((state) => state.user);\n const params: { wallet: string } = useParams();\n\n if (user.walletAddress === params.wallet) {\n return <MyProfile />;\n } else {\n return <OtherProfile walletAddress={params.wallet} />;\n }\n}\n","import {\n Avatar,\n Box,\n Collapse,\n List,\n ListItem,\n ListItemAvatar,\n ListItemButton,\n ListItemText,\n useTheme,\n} from \"@mui/material\";\nimport React, { useState } from \"react\";\nimport { ITransaction } from \"../Profile/types\";\n\nimport coin from \"../../assets/images/coin.png\";\nimport ArrowDownwardIcon from \"@mui/icons-material/ArrowDownward\";\nimport ArrowUpwardIcon from \"@mui/icons-material/ArrowUpward\";\nimport { format } from \"date-fns\";\nimport { useStoreState } from \"../../store\";\nimport { useHistory } from \"react-router\";\n\nexport interface ITransactions {\n transactions: ITransaction[];\n}\n\nconst TransactionItems: React.FC<{ item: ITransaction }> = ({ item }) => {\n const theme = useTheme();\n const walletAddress = useStoreState((state) => state.user.walletAddress);\n const isSender = item.from === walletAddress;\n const [expanded, setExpanded] = useState(false);\n const history = useHistory();\n\n if (!item.fromFirstName) {\n return null;\n }\n\n return (\n <>\n <ListItem key={item.transactionHash}>\n <ListItemButton onClick={() => setExpanded((prev) => !prev)}>\n <ListItemAvatar>\n <Avatar style={{ backgroundColor: theme.palette.primary.main }}>\n <p>{item.fromFirstName.slice(0, 2).toUpperCase()}</p>\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={item.fromFirstName + \" \" + item.fromLastName}\n secondary={format(new Date(item.timestamp), \"pp PP\")}\n />\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n {isSender ? (\n <ArrowUpwardIcon fontSize={\"small\"} color={\"error\"} />\n ) : (\n <ArrowDownwardIcon color={\"success\"} fontSize={\"small\"} />\n )}\n <span>{item.value}</span>\n <img src={coin} style={{ width: 20, height: 20 }} alt={\"coin\"} />\n </Box>\n </ListItemButton>\n </ListItem>\n\n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\n <List dense>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Block Number:</span>{\" \"}\n {item.blockNumber}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>From:</span>{\" \"}\n <span>\n <span\n onClick={() => history.push(\"/explorer/address/\" + item.from)}\n style={{ textDecoration: \"underline\", cursor: \"pointer\" }}\n >\n {item.from}\n </span>\n </span>\n </ListItem>{\" \"}\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>To:</span>\n <span\n onClick={() => history.push(\"/explorer/address/\" + item.to)}\n style={{ textDecoration: \"underline\", cursor: \"pointer\" }}\n >\n {item.to}\n </span>\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Sender First Name:</span>\n {item.fromFirstName}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Sender Last Name:</span>\n {item.fromLastName}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Timestamp:</span>{\" \"}\n {format(new Date(item.timestamp), \"pp PP\")}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Receiver First Name:</span>\n {item.toFirstName}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Receiver Last Name:</span>\n {item.toLastName}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Token Name:</span>\n {item.tokenName}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Transaction Index:</span>\n {item.transactionIndex}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Type:</span>\n {item.type}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Value:</span>\n {item.value}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Transaction Hash:</span>\n <span\n onClick={() =>\n history.push(\"/explorer/transactions/\" + item.transactionHash)\n }\n style={{ textDecoration: \"underline\", cursor: \"pointer\" }}\n >\n {item.transactionHash}\n </span>\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>Token Id:</span>\n {item.tokenId}\n </ListItem>\n <ListItem disablePadding disableGutters style={{ paddingLeft: 25 }}>\n <span style={{ fontWeight: \"bold\" }}>_id:</span>\n {item._id}\n </ListItem>\n </List>\n </Collapse>\n </>\n );\n};\n\nexport const Transactions: React.FC<ITransactions> = ({ transactions }) => {\n const theme = useTheme();\n const walletAddress = useStoreState((state) => state.user.walletAddress);\n console.log({ transactions });\n return (\n <List sx={{ width: \"100%\", bgcolor: \"background.paper\" }}>\n {transactions.map((item) => {\n return <TransactionItems item={item} key={item._id} />;\n })}\n </List>\n );\n};\n"],"names":["underscoreManipulation","str","replace","toLowerCase","createPrivateChat","myWalletAddress","otherUserWalletAddress","myFirstName","otherFirstName","userJID","combinedWalletAddress","sort","join","roomJid","CONFERENCEDOMAIN","combinedUsersName","currentChatRooms","useStoreState","userChatRooms","isNewRoom","filter","el","jid","length","xmpp","roomName","setTimeout","QrModal","title","open","link","onClose","maxWidth","sx","padding","paddingTop","size","style","height","width","value","viewBox","boxShadow","borderRadius","display","justifyContent","alignItems","pl","my","truncateString","variant","marginLeft","onClick","navigator","clipboard","writeText","color","position","top","right","fontSize","ChangeImage","setOpen","user","state","setUser","fileRef","useRef","useState","imgSrc","setImgSrc","imgRef","crop","setCrop","blob","setBlob","Dialog","Box","DialogTitle","IconButton","Close","typography","type","ref","accept","onChange","e","target","files","reader","FileReader","addEventListener","result","toString","readAsDataURL","Button","current","click","_","percentCrop","onComplete","canvas","document","createElement","pixelRatio","window","devicePixelRatio","scaleX","naturalWidth","scaleY","naturalHeight","ctx","getContext","setTransform","imageSmoothingQuality","drawImage","x","y","toBlob","console","error","minWidth","minHeight","alt","src","onLoad","currentTarget","mediaWidth","mediaHeight","aspect","centerCrop","makeAspectCrop","unit","centerAspectCrop","form","FormData","append","http","then","response","profileImage","data","catch","log","EditProfileModal","change","setChange","loading","setLoading","formik","useFormik","initialValues","firstName","lastName","description","isProfileOpen","isAssetsOpen","validate","values","errors","onSubmit","fd","httpWithAuth","put","respUser","finally","marginRight","flexDirection","cursor","defUserImage","handleSubmit","TextField","margin","label","name","touched","helperText","handleChange","onBlur","handleBlur","Tooltip","placement","FormControlLabel","checked","control","Checkbox","setFieldValue","labelPlacement","disabled","LoadingButton","UserCard","profile","walletAddress","edit","setEdit","showQrModal","setShowQrModal","history","useHistory","marginTop","Card","fontWeight","temporaryRoomData","room_background","room_thumbnail","users_cnt","unreadMessages","composing","toUpdate","setNewUserChatRoom","push","QrCode","generateProfileLink","xmppId","walletToUsername","NftItem","item","theme","useTheme","ListItem","ListItemButton","pathname","nftItem","ListItemAvatar","Avatar","backgroundColor","palette","primary","main","imagePreview","ListItemText","tokenName","textAlign","balance","total","nftId","NfmtItem","nftFileUrl","traits","map","trait","NFMT_TRAITS","Chip","ItemsTable","nftItems","tokenType","nfmtItems","produceNfmtItems","List","bgcolor","i","DocumentItem","file","locationPreview","location","documentName","secondary","format","Date","createdAt","_id","DocumentsTable","documents","firebaseApp","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","getAnalytics","getToken","messaging","getMessaging","_getToken","vapidKey","MyProfile","transactions","setTransactions","store","items","setBalance","useEffect","getBalance","resp","getTransactions","Notification","permission","alert","token","requestPermission","FullPageSpinner","Container","Typography","filterNftBalances","Transactions","OtherProfile","props","setProfile","balances","setBalances","setDocuments","getDocuments","mappedDocuments","locations","getPublicProfile","Profile","params","useParams","wallet","TransactionItems","isSender","from","expanded","setExpanded","fromFirstName","prev","slice","toUpperCase","fromLastName","timestamp","coin","transactionHash","in","timeout","unmountOnExit","dense","disablePadding","disableGutters","paddingLeft","blockNumber","textDecoration","to","toFirstName","toLastName","transactionIndex","tokenId"],"sourceRoot":""}