{"version":3,"file":"static/js/5226.17b8026f.chunk.js","mappings":"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","sources":["components/lightbox/use-light-box.js","components/lightbox/styles.js","components/lightbox/lightbox.js","api/chat.js","sections/chat/chat-nav-item.js","sections/chat/hooks/use-get-nav-item.js","sections/chat/chat-nav-account.js","sections/chat/chat-skeleton.js","sections/chat/chat-nav-search-results.js","sections/chat/chat-nav.js","sections/chat/hooks/use-collapse-nav.js","sections/chat/chat-message-item.js","sections/chat/hooks/use-get-message.js","sections/chat/chat-message-list.js","sections/chat/hooks/use-messages-scroll.js","api/openai.js","sections/chat/chat-message-input.js","sections/chat/chat-header-detail.js","sections/chat/chat-header-compose.js","sections/chat/view/chat-view.js","utils/uuidv4.js"],"sourcesContent":["import { useState, useCallback } from 'react';\n\n// ----------------------------------------------------------------------\n\nexport default function useLightBox(slides) {\n const [selected, setSelected] = useState(-1);\n\n const handleOpen = useCallback(\n (slideUrl) => {\n const slideIndex = slides.findIndex((slide) =>\n slide.type === 'video' ? slide.poster === slideUrl : slide.src === slideUrl\n );\n\n setSelected(slideIndex);\n },\n [slides]\n );\n\n const handleClose = useCallback(() => {\n setSelected(-1);\n }, []);\n\n return {\n selected,\n open: selected >= 0,\n onOpen: handleOpen,\n onClose: handleClose,\n setSelected,\n };\n}\n","// @mui\nimport { useTheme, alpha } from '@mui/material/styles';\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\n// ----------------------------------------------------------------------\n\nexport default function StyledLightbox() {\n const theme = useTheme();\n\n const inputGlobalStyles = (\n <GlobalStyles\n styles={{\n '.yarl__root': {\n '--yarl__thumbnails_thumbnail_padding': 0,\n '--yarl__thumbnails_thumbnail_border': 'transparent',\n '--yarl__color_backdrop': alpha(theme.palette.grey[900], 0.9),\n '--yarl__slide_captions_container_background': alpha(theme.palette.grey[900], 0.48),\n },\n // Caption\n '.yarl__slide_title': {\n fontSize: theme.typography.h5.fontSize,\n fontWeight: theme.typography.h5.fontWeight,\n lineHeight: theme.typography.h5.lineHeight,\n },\n '.yarl__slide_description': {\n fontSize: theme.typography.body2.fontSize,\n fontWeight: theme.typography.body2.fontWeight,\n lineHeight: theme.typography.body2.lineHeight,\n },\n // Button\n '.yarl__button': {\n filter: 'unset',\n },\n // Thumbnails\n '.yarl__thumbnails_thumbnail': {\n opacity: 0.48,\n '&.yarl__thumbnails_thumbnail_active': {\n opacity: 1,\n },\n },\n '.yarl__thumbnails_vignette': {\n '--yarl__thumbnails_vignette_size': 0,\n },\n // Video\n '.yarl__video_container': {\n backgroundColor: theme.palette.common.black,\n },\n }}\n />\n );\n\n return inputGlobalStyles;\n}\n","import PropTypes from 'prop-types';\nimport ReactLightbox, { useLightboxState } from 'yet-another-react-lightbox';\nimport Zoom from 'yet-another-react-lightbox/plugins/zoom';\nimport Video from 'yet-another-react-lightbox/plugins/video';\nimport Captions from 'yet-another-react-lightbox/plugins/captions';\nimport Slideshow from 'yet-another-react-lightbox/plugins/slideshow';\nimport Fullscreen from 'yet-another-react-lightbox/plugins/fullscreen';\nimport Thumbnails from 'yet-another-react-lightbox/plugins/thumbnails';\n// @mui\nimport Box from '@mui/material/Box';\n//\nimport Iconify from '../iconify';\n//\nimport StyledLightbox from './styles';\n\n// ----------------------------------------------------------------------\n\nconst ICON_SIZE = 24;\n\nexport default function Lightbox({\n slides,\n disabledZoom,\n disabledVideo,\n disabledTotal,\n disabledCaptions,\n disabledSlideshow,\n disabledThumbnails,\n disabledFullscreen,\n onGetCurrentIndex,\n ...other\n}) {\n const totalItems = slides ? slides.length : 0;\n\n return (\n <>\n <StyledLightbox />\n\n <ReactLightbox\n slides={slides}\n animation={{ swipe: 240 }}\n carousel={{ finite: totalItems < 5 }}\n controller={{ closeOnBackdropClick: true }}\n plugins={getPlugins({\n disabledZoom,\n disabledVideo,\n disabledCaptions,\n disabledSlideshow,\n disabledThumbnails,\n disabledFullscreen,\n })}\n on={{\n view: ({ index }) => {\n if (onGetCurrentIndex) {\n onGetCurrentIndex(index);\n }\n },\n }}\n toolbar={{\n buttons: [\n <DisplayTotal key={0} totalItems={totalItems} disabledTotal={disabledTotal} />,\n 'close',\n ],\n }}\n render={{\n iconClose: () => <Iconify width={ICON_SIZE} icon=\"carbon:close\" />,\n iconZoomIn: () => <Iconify width={ICON_SIZE} icon=\"carbon:zoom-in\" />,\n iconZoomOut: () => <Iconify width={ICON_SIZE} icon=\"carbon:zoom-out\" />,\n iconSlideshowPlay: () => <Iconify width={ICON_SIZE} icon=\"carbon:play\" />,\n iconSlideshowPause: () => <Iconify width={ICON_SIZE} icon=\"carbon:pause\" />,\n iconPrev: () => <Iconify width={ICON_SIZE + 8} icon=\"carbon:chevron-left\" />,\n iconNext: () => <Iconify width={ICON_SIZE + 8} icon=\"carbon:chevron-right\" />,\n iconExitFullscreen: () => <Iconify width={ICON_SIZE} icon=\"carbon:center-to-fit\" />,\n iconEnterFullscreen: () => <Iconify width={ICON_SIZE} icon=\"carbon:fit-to-screen\" />,\n }}\n {...other}\n />\n </>\n );\n}\n\nLightbox.propTypes = {\n disabledCaptions: PropTypes.bool,\n disabledFullscreen: PropTypes.bool,\n disabledSlideshow: PropTypes.bool,\n disabledThumbnails: PropTypes.bool,\n disabledTotal: PropTypes.bool,\n disabledVideo: PropTypes.bool,\n disabledZoom: PropTypes.bool,\n onGetCurrentIndex: PropTypes.func,\n slides: PropTypes.array,\n};\n\n// ----------------------------------------------------------------------\n\nexport function getPlugins({\n disabledZoom,\n disabledVideo,\n disabledCaptions,\n disabledSlideshow,\n disabledThumbnails,\n disabledFullscreen,\n}) {\n let plugins = [Captions, Fullscreen, Slideshow, Thumbnails, Video, Zoom];\n\n if (disabledThumbnails) {\n plugins = plugins.filter((plugin) => plugin !== Thumbnails);\n }\n if (disabledCaptions) {\n plugins = plugins.filter((plugin) => plugin !== Captions);\n }\n if (disabledFullscreen) {\n plugins = plugins.filter((plugin) => plugin !== Fullscreen);\n }\n if (disabledSlideshow) {\n plugins = plugins.filter((plugin) => plugin !== Slideshow);\n }\n if (disabledZoom) {\n plugins = plugins.filter((plugin) => plugin !== Zoom);\n }\n if (disabledVideo) {\n plugins = plugins.filter((plugin) => plugin !== Video);\n }\n\n return plugins;\n}\n\n// ----------------------------------------------------------------------\n\nexport function DisplayTotal({ totalItems, disabledTotal }) {\n const { currentIndex } = useLightboxState();\n\n if (disabledTotal) {\n return null;\n }\n\n return (\n <Box\n component=\"span\"\n className=\"yarl__button\"\n sx={{\n typography: 'body2',\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'center',\n }}\n >\n <strong> {currentIndex + 1} </strong> / {totalItems}\n </Box>\n );\n}\n\nDisplayTotal.propTypes = {\n disabledTotal: PropTypes.bool,\n totalItems: PropTypes.number,\n};\n","import { useMemo } from 'react';\nimport keyBy from 'lodash/keyBy';\nimport useSWR, { mutate } from 'swr';\n// utils\nimport axios, { endpoints, fetcher } from '../utils/axios';\n\n// ----------------------------------------------------------------------\n\nconst options = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n};\n\n// Define your local conversations data\nconst localConversations = [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n participants: [\n {\n status: 'online',\n id: '8864c717-587d-472a-929a-8e5f298024da-0',\n role: 'admin',\n email: 'demo@minimals.cc',\n name: 'Jaydon Frankie',\n lastActivity: '2023-10-23T14:45:15.279Z',\n address: '90210 Broadway Blvd',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_25.jpg',\n phoneNumber: '+40 777666555',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n role: 'UX/UI Designer',\n email: 'violet.ratke86@yahoo.com',\n name: 'Harrison Stein',\n lastActivity: '2023-10-20T11:45:15.279Z',\n address: '110 Lamar Station Apt. 730 - Hagerstown, OK / 49808',\n avatarUrl: `${process.env.PUBLIC_URL}/assets/images/avatars/frenchie.jpg`,\n phoneNumber: '692-767-2903',\n },\n ],\n type: 'ONE_TO_ONE',\n unreadCount: 0,\n messages: [\n {\n id: '9574ce4a-27ab-4eec-9dd2-ea369f418722',\n body: \"Hi there, Jackie. 🾠I'm signing Fred into Petastic. Please give me a minute to authenticate his Pet Passport.\",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1',\n name: 'cover-2.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n size: 48000000,\n createdAt: '2023-10-23T14:38:44.497Z',\n modifiedAt: '2023-10-23T14:38:44.497Z',\n type: 'jpg',\n },\n ],\n createdAt: '2023-10-23T06:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/dog_fred.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:37:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '9574ce4a-27ab-4eec-9dd2-ea369f418723',\n body: \"All set. Fred is all signed in to Petastic, and I've loaded his life-profile. \\n\\n How can I assist you today?\",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1',\n name: 'cover-2.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n size: 48000000,\n createdAt: '2023-10-23T14:38:44.497Z',\n modifiedAt: '2023-10-23T14:38:44.497Z',\n type: 'jpg',\n },\n ],\n createdAt: '2023-10-23T06:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '356342c6-49be-4d7f-be93-78e89f1f5d97',\n body: \"Hi, I'm very concerned about Fred. He has developed a rash, and our vet suspects it might be due to a chicken allergy. Could you please help me find a suitable alternative food for him?\",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n name: 'expertise-2015-conakry-sao-tome-and-principe-gender.mp4',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n size: 16000000,\n createdAt: '2023-10-21T12:35:44.497Z',\n modifiedAt: '2023-10-21T12:35:44.497Z',\n type: 'mp4',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:35:44.497Z',\n modifiedAt: '2023-10-20T11:35:44.497Z',\n type: 'pdf',\n },\n ],\n createdAt: '2023-10-23T06:46:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '9574ce4a-27ab-4eec-9dd2-ea369f418722',\n body: \"No worries, I've got you covered. Let me check Fred's current food and make sure it is what you have been using. Is this the food below? \",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1',\n name: 'cover-2.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n size: 48000000,\n createdAt: '2023-10-23T14:38:44.497Z',\n modifiedAt: '2023-10-23T14:38:44.497Z',\n type: 'jpg',\n },\n ],\n createdAt: '2023-10-23T14:38:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea61',\n body: '/assets/images/chat/card_food_current.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:37:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '356342c6-49be-4d7f-be93-78e89f1f5d97',\n body: \"Yep, that's the one. It was suggested to me by my friend, but now I feel so guilty that it's causing a rash.\",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n name: 'expertise-2015-conakry-sao-tome-and-principe-gender.mp4',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n size: 16000000,\n createdAt: '2023-10-21T12:35:44.497Z',\n modifiedAt: '2023-10-21T12:35:44.497Z',\n type: 'mp4',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:35:44.497Z',\n modifiedAt: '2023-10-20T11:35:44.497Z',\n type: 'pdf',\n },\n ],\n createdAt: '2023-10-23T14:37:55.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea61',\n body: \"Let's do a quick breed analysis and see what the most compatible protein is based on Fred's breed. French Bulldogs originate from the United Kingdom (England) and France. Based on their breeding region, the most compatible proteins to minimize allergies include the following options:\",\n contentType: 'text',\n createdAt: '2023-10-23T14:38:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/card_food_proteins.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:39:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '356342c6-49be-4d7f-be93-78e89f1f5d97',\n body: \"Oh, that's interesting. I didn't realize Frenchies had a most compatible protein.\",\n\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n name: 'expertise-2015-conakry-sao-tome-and-principe-gender.mp4',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n size: 16000000,\n createdAt: '2023-10-21T12:35:44.497Z',\n modifiedAt: '2023-10-21T12:35:44.497Z',\n type: 'mp4',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:35:44.497Z',\n modifiedAt: '2023-10-20T11:35:44.497Z',\n type: 'pdf',\n },\n ],\n createdAt: '2023-10-23T14:39:40.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea61',\n body: \"Absolutely, now let's explore some food options that fit these criteria and your monthly budget, which I have listed at $35-$40 per month.\",\n contentType: 'text',\n createdAt: '2023-10-23T14:40:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/card_recipe_1.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:41:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/card_recipe_2.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:41:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '356342c6-49be-4d7f-be93-78e89f1f5d97',\n body: \"Thank you. Let's go with recipe 1. 🚚 Please ship it as quickly as possible.\",\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n name: 'expertise-2015-conakry-sao-tome-and-principe-gender.mp4',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n size: 16000000,\n createdAt: '2023-10-21T12:38:44.497Z',\n modifiedAt: '2023-10-21T12:38:44.497Z',\n type: 'mp4',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:38:44.497Z',\n modifiedAt: '2023-10-20T11:38:44.497Z',\n type: 'pdf',\n },\n ],\n createdAt: '2023-10-23T14:42:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '3148665b-1aa3-40f1-b4a0-ee579ce42282',\n body: 'Okay. You will continue to be charged with the credit card below and continue to earn Kibble Rewards. 💳ðŸ¾',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n name: 'design-suriname-2015.mp3',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n size: 24000000,\n createdAt: '2023-10-22T13:38:44.497Z',\n modifiedAt: '2023-10-22T13:38:44.497Z',\n type: 'mp3',\n },\n ],\n createdAt: '2023-10-23T14:42:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/card_cc.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:43:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n\n {\n id: '3148665b-1aa3-40f1-b4a0-ee579ce42282',\n body: 'All set! You will receive a tracking number once your food has been shipped.',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n name: 'design-suriname-2015.mp3',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n size: 24000000,\n createdAt: '2023-10-22T13:38:44.497Z',\n modifiedAt: '2023-10-22T13:38:44.497Z',\n type: 'mp3',\n },\n ],\n createdAt: '2023-10-23T14:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n },\n {\n id: '356342c6-49be-4d7f-be93-78e89f1f5d97',\n body: 'Thank you again!',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n name: 'expertise-2015-conakry-sao-tome-and-principe-gender.mp4',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/expertise_2015_conakry_sao-tome-and-principe_gender.mp4',\n size: 16000000,\n createdAt: '2023-10-21T12:38:44.497Z',\n modifiedAt: '2023-10-21T12:38:44.497Z',\n type: 'mp4',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:38:44.497Z',\n modifiedAt: '2023-10-20T11:38:44.497Z',\n type: 'pdf',\n },\n ],\n createdAt: '2023-10-23T14:42:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n ],\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n participants: [\n {\n status: 'online',\n id: '8864c717-587d-472a-929a-8e5f298024da-0',\n role: 'admin',\n email: 'demo@minimals.cc',\n name: 'Jaydon Frankie',\n lastActivity: '2023-10-23T14:45:15.279Z',\n address: '90210 Broadway Blvd',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_20.jpg',\n phoneNumber: '+40 777666555',\n },\n {\n status: 'Shih Tzu',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n role: '$100 • 1600',\n email: 'Kibble Balance',\n name: 'Gigi • 3yo ',\n lastActivity: '2023-10-22T13:45:15.279Z',\n address: '1147 Rohan Drive Suite 819 - Burlington, VT / 82021',\n avatarUrl: `${process.env.PUBLIC_URL}/assets/images/avatars/shihtzu.jpg`,\n phoneNumber: '904-966-2836',\n },\n ],\n type: 'ONE_TO_ONE',\n unreadCount: 0,\n messages: [\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/dog_gigi.jpg',\n contentType: 'image',\n\n createdAt: '2023-10-23T14:37:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n },\n {\n id: 'ff7ff1e9-a946-4484-8536-3360bb553c3f',\n body: ' eagerly opened the gift, her eyes sparkling with excitement.',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1',\n name: 'cover-2.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_3.jpg',\n size: 48000000,\n createdAt: '2023-10-23T14:38:44.497Z',\n modifiedAt: '2023-10-23T14:38:44.497Z',\n type: 'jpg',\n },\n ],\n createdAt: '2023-10-23T04:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n },\n {\n id: '0acc8a11-3719-4119-a184-eec898e3e80f',\n body: 'The old oak tree stood tall and majestic, its branches swaying gently in the breeze.',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n name: 'design-suriname-2015.mp3',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/design_suriname_2015.mp3',\n size: 24000000,\n createdAt: '2023-10-22T13:38:44.497Z',\n modifiedAt: '2023-10-22T13:38:44.497Z',\n type: 'mp3',\n },\n ],\n createdAt: '2023-10-23T12:45:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n\n {\n id: '71b164de-772f-42e8-964d-b72fce43037f',\n body: 'The children giggled with joy as they ran through the sprinklers on a hot summer day.',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n name: 'money-popup-crack.pdf',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/money-popup-crack.pdf',\n size: 12000000,\n createdAt: '2023-10-20T11:38:44.497Z',\n modifiedAt: '2023-10-20T11:38:44.497Z',\n type: 'pdf',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b5',\n name: 'cover-4.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_4.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_4.jpg',\n size: 9600000,\n createdAt: '2023-10-19T10:38:44.497Z',\n modifiedAt: '2023-10-19T10:38:44.497Z',\n type: 'jpg',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b6',\n name: 'cover-6.jpg',\n path: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_6.jpg',\n preview: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_6.jpg',\n size: 8000000,\n createdAt: '2023-10-18T09:38:44.497Z',\n modifiedAt: '2023-10-18T09:38:44.497Z',\n type: 'jpg',\n },\n ],\n createdAt: '2023-10-23T14:39:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '85877e4c-07f3-4106-84c6-a0bcbaaa67b0',\n body: 'He carefully crafted a beautiful sculpture out of clay, his hands skillfully shaping the intricate details.',\n contentType: 'text',\n attachments: [\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b7',\n name: 'large-news.txt',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/large_news.txt',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/large_news.txt',\n size: 6857142.857142857,\n createdAt: '2023-10-17T08:38:44.497Z',\n modifiedAt: '2023-10-17T08:38:44.497Z',\n type: 'txt',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b8',\n name: 'nauru-6015-small-fighter-left-gender.psd',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/nauru-6015-small-fighter-left-gender.psd',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/nauru-6015-small-fighter-left-gender.psd',\n size: 6000000,\n createdAt: '2023-10-16T07:38:44.497Z',\n modifiedAt: '2023-10-16T07:38:44.497Z',\n type: 'psd',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b9',\n name: 'tv-xs.doc',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/tv-xs.doc',\n preview: 'https://www.cloud.com/s/c218bo6kjuqyv66/tv-xs.doc',\n size: 5333333.333333333,\n createdAt: '2023-10-15T06:38:44.497Z',\n modifiedAt: '2023-10-15T06:38:44.497Z',\n type: 'doc',\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b10',\n name: 'gustavia-entertainment-productivity.docx',\n path: 'https://www.cloud.com/s/c218bo6kjuqyv66/gustavia-entertainment-productivity.docx',\n preview:\n 'https://www.cloud.com/s/c218bo6kjuqyv66/gustavia-entertainment-productivity.docx',\n size: 4800000,\n createdAt: '2023-10-14T05:38:44.498Z',\n modifiedAt: '2023-10-14T05:38:44.498Z',\n type: 'docx',\n },\n ],\n createdAt: '2023-10-23T14:41:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n },\n {\n id: 'a9ae488e-1ad8-4c23-aeb9-ae50a1dd8540',\n attachments: [],\n contentType: 'image',\n body: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_5.jpg',\n createdAt: '2023-10-23T14:43:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n },\n {\n id: 'bee9b0c3-e6a1-495a-a2e2-c916c439b950',\n contentType: 'text',\n attachments: [],\n body: 'The concert was a mesmerizing experience, with the music filling the venue and the crowd cheering in delight.',\n createdAt: '2023-10-23T14:43:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '2d1e8a85-ab1a-4120-9329-a8f84eb10c42',\n body: 'The waves crashed against the shore, creating a soothing symphony of sound.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T14:43:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n ],\n },\n {\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n participants: [\n {\n status: 'online',\n id: '8864c717-587d-472a-929a-8e5f298024da-0',\n role: 'admin',\n email: 'demo@minimals.cc',\n name: 'Jaydon Frankie',\n lastActivity: '2023-10-23T14:45:15.279Z',\n address: '90210 Broadway Blvd',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_25.jpg',\n phoneNumber: '+40 777666555',\n },\n {\n status: 'Persian',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n role: '$100 • 1600',\n email: 'Kibble Balance',\n name: 'Karma • 3yo',\n lastActivity: '2023-10-21T12:45:15.279Z',\n address: '18605 Thompson Circle Apt. 086 - Idaho Falls, WV / 50337',\n avatarUrl: `${process.env.PUBLIC_URL}/assets/images/avatars/persian.jpg`,\n phoneNumber: '399-757-9909',\n },\n ],\n type: 'ONE_TO_ONE',\n unreadCount: 0,\n messages: [\n {\n id: '7ed017d0-ea7c-4545-bed3-1776e482ea60',\n body: '/assets/images/chat/cat_karma.jpg',\n contentType: 'image',\n createdAt: '2023-10-23T14:37:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n },\n {\n id: 'd0ec934a-3dd5-49cb-8149-21989e881e65',\n body: 'The old oak tree stood tall and majestic, its branches swaying gently in the breeze.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T06:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n },\n {\n id: '649c4e19-0fd3-41ea-9b26-63acb6e21ac7',\n body: 'The aroma of freshly brewed coffee filled the air, awakening my senses.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T08:45:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: 'f5694c5f-2ffb-4c10-9202-6210782a185d',\n body: 'The children giggled with joy as they ran through the sprinklers on a hot summer day.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T10:15:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n },\n {\n id: 'e3608894-3df3-4e1c-8dc3-9e48bcb4cec8',\n body: 'He carefully crafted a beautiful sculpture out of clay, his hands skillfully shaping the intricate details.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T12:30:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n {\n id: '3fe52209-8901-4088-981f-8a2dfad388b9',\n body: 'The concert was a mesmerizing experience, with the music filling the venue and the crowd cheering in delight.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T13:30:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n },\n {\n id: '6df63484-4e85-401d-8766-e3eac7450de5',\n body: 'https://api-dev-minimal-v510.vercel.app/assets/images/cover/cover_8.jpg',\n attachments: [],\n contentType: 'image',\n createdAt: '2023-10-23T13:45:15.280Z',\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n },\n {\n id: '9b597571-e63d-41bc-bce0-43601b8e041d',\n body: 'The scent of blooming flowers wafted through the garden, creating a fragrant paradise.',\n contentType: 'text',\n attachments: [],\n createdAt: '2023-10-23T14:00:15.280Z',\n senderId: '8864c717-587d-472a-929a-8e5f298024da-0',\n },\n ],\n },\n];\n\nexport function useGetContacts() {\n // Uncomment this section to fetch data using SWR\n // const URL = [endpoints.chat, { params: { endpoint: 'contacts' } }];\n // const { data, isLoading, error, isValidating } = useSWR(URL, fetcher, options);\n\n // Define your local contacts data\n const localContacts = [\n {\n status: 'busy',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b1',\n role: 'HR Manager',\n email: 'nannie_abernathy70@yahoo.com',\n name: 'Jayvion Simon',\n lastActivity: '2023-10-23T13:09:53.656Z',\n address: '19034 Verna Unions Apt. 164 - Honolulu, RI / 87535',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_1.jpg',\n phoneNumber: '365-374-4961',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2',\n role: 'Data Analyst',\n email: 'ashlynn_ohara62@gmail.com',\n name: 'FetchAi',\n lastActivity: '2023-10-22T12:09:53.656Z',\n address: '1147 Rohan Drive Suite 819 - Burlington, VT / 82021',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_2.jpg',\n phoneNumber: '904-966-2836',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b3',\n role: 'Legal Counsel',\n email: 'milo.farrell@hotmail.com',\n name: 'Karma',\n lastActivity: '2023-10-21T11:09:53.656Z',\n address: '18605 Thompson Circle Apt. 086 - Idaho Falls, WV / 50337',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_3.jpg',\n phoneNumber: '399-757-9909',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4',\n role: 'UX/UI Designer',\n email: 'violet.ratke86@yahoo.com',\n name: 'Harrison Stein',\n lastActivity: '2023-10-20T10:09:53.656Z',\n address: '110 Lamar Station Apt. 730 - Hagerstown, OK / 49808',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_4.jpg',\n phoneNumber: '692-767-2903',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b5',\n role: 'Project Manager',\n email: 'letha_lubowitz24@yahoo.com',\n name: 'Reece Chung',\n lastActivity: '2023-10-19T09:09:53.656Z',\n address: '36901 Elmer Spurs Apt. 762 - Miramar, DE / 92836',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_5.jpg',\n phoneNumber: '990-588-5716',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b6',\n role: 'Account Manager',\n email: 'aditya_greenfelder31@gmail.com',\n name: 'Lainey Davidson',\n lastActivity: '2023-10-18T08:09:53.656Z',\n address: '2089 Runolfsson Harbors Suite 886 - Chapel Hill, TX / 32827',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_6.jpg',\n phoneNumber: '955-439-2578',\n },\n {\n status: 'alway',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b7',\n role: 'Registered Nurse',\n email: 'lenna_bergnaum27@hotmail.com',\n name: 'Cristopher Cardenas',\n lastActivity: '2023-10-17T07:09:53.656Z',\n address: '279 Karolann Ports Apt. 774 - Prescott Valley, WV / 53905',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_7.jpg',\n phoneNumber: '226-924-4058',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b8',\n role: 'Business Analyst',\n email: 'luella.ryan33@gmail.com',\n name: 'Melanie Noble',\n lastActivity: '2023-10-16T06:09:53.656Z',\n address: '96607 Claire Square Suite 591 - St. Louis Park, HI / 40802',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_8.jpg',\n phoneNumber: '552-917-1454',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b9',\n role: 'Creative Director',\n email: 'joana.simonis84@gmail.com',\n name: 'Chase Day',\n lastActivity: '2023-10-15T05:09:53.656Z',\n address: '9388 Auer Station Suite 573 - Honolulu, AK / 98024',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_9.jpg',\n phoneNumber: '285-840-9338',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b10',\n role: 'Financial Planner',\n email: 'marjolaine_white94@gmail.com',\n name: 'Shawn Manning',\n lastActivity: '2023-10-14T04:09:53.656Z',\n address: '47665 Adaline Squares Suite 510 - Blacksburg, NE / 53515',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_10.jpg',\n phoneNumber: '306-269-2446',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b11',\n role: 'Event Coordinator',\n email: 'vergie_block82@hotmail.com',\n name: 'Soren Durham',\n lastActivity: '2023-10-13T03:09:53.656Z',\n address: '989 Vernice Flats Apt. 183 - Billings, NV / 04147',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_11.jpg',\n phoneNumber: '883-373-6253',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b12',\n role: 'Marketing Director',\n email: 'vito.hudson@hotmail.com',\n name: 'Cortez Herring',\n lastActivity: '2023-10-12T02:09:53.656Z',\n address: '91020 Wehner Locks Apt. 673 - Albany, WY / 68763',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_12.jpg',\n phoneNumber: '476-509-8866',\n },\n {\n status: 'busy',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b13',\n role: 'Software Developer',\n email: 'tyrel_greenholt@gmail.com',\n name: 'Brycen Jimenez',\n lastActivity: '2023-10-11T01:09:53.656Z',\n address: '585 Candelario Pass Suite 090 - Columbus, LA / 25376',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_13.jpg',\n phoneNumber: '201-465-1954',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b14',\n role: 'Research Scientist',\n email: 'dwight.block85@yahoo.com',\n name: 'Giana Brandt',\n lastActivity: '2023-10-10T00:09:53.656Z',\n address: '80988 Renner Crest Apt. 000 - Fargo, VA / 24266',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_14.jpg',\n phoneNumber: '538-295-9408',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b15',\n role: 'Content Strategist',\n email: 'mireya13@hotmail.com',\n name: 'Aspen Schmitt',\n lastActivity: '2023-10-08T23:09:53.656Z',\n address: '28307 Shayne Pike Suite 523 - North Las Vegas, AZ / 28550',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_15.jpg',\n phoneNumber: '531-492-6028',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b16',\n role: 'Operations Manager',\n email: 'dasia_jenkins@hotmail.com',\n name: 'Colten Aguilar',\n lastActivity: '2023-10-07T22:09:53.656Z',\n address: '205 Farrell Highway Suite 333 - Rock Hill, OK / 63421',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_16.jpg',\n phoneNumber: '981-699-7588',\n },\n {\n status: 'offline',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b17',\n role: 'Sales Representative',\n email: 'benny89@yahoo.com',\n name: 'Angelique Morse',\n lastActivity: '2023-10-06T21:09:53.656Z',\n address: '253 Kara Motorway Suite 821 - Manchester, SD / 09331',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_17.jpg',\n phoneNumber: '500-268-4826',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b18',\n role: 'Supply Chain Analyst',\n email: 'dawn.goyette@gmail.com',\n name: 'Selina Boyer',\n lastActivity: '2023-10-05T20:09:53.656Z',\n address: '13663 Kiara Oval Suite 606 - Missoula, AR / 44478',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_18.jpg',\n phoneNumber: '205-952-3828',\n },\n {\n status: 'alway',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b19',\n role: 'Operations Coordinator',\n email: 'zella_hickle4@yahoo.com',\n name: 'Lawson Bass',\n lastActivity: '2023-10-04T19:09:53.656Z',\n address: '8110 Claire Port Apt. 703 - Anchorage, TN / 01753',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_19.jpg',\n phoneNumber: '222-255-5190',\n },\n {\n status: 'online',\n id: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b20',\n role: 'Customer Service Associate',\n email: 'avery43@hotmail.com',\n name: 'Ariana Lang',\n lastActivity: '2023-10-03T18:09:53.656Z',\n address: '4642 Demetris Lane Suite 407 - Edmond, AZ / 60888',\n avatarUrl: 'https://api-dev-minimal-v510.vercel.app/assets/images/avatar/avatar_20.jpg',\n phoneNumber: '408-439-8033',\n },\n ];\n\n // Define other variables\n const isLoading = false; // Set to false since you're not fetching data\n const error = null; // Set to null since there's no error with local data\n const isValidating = false; // Set to false since there's no validation\n\n // Check if there's an error, and handle it gracefully\n if (error) {\n console.error('An error occurred while fetching contacts:', error);\n // You can return some default or error state here if needed\n // Example: return { contacts: [], contactsLoading: false, contactsError: true, ... };\n }\n\n // Use local data or fetched data based on your needs\n const contactsData = localContacts; // Use local data\n // const contactsData = data?.contacts || []; // Use fetched data\n\n // Create the memoized value\n const memoizedValue = useMemo(\n () => ({\n contacts: contactsData,\n contactsLoading: isLoading,\n contactsError: error,\n contactsValidating: isValidating,\n contactsEmpty: !isLoading && (!contactsData || !contactsData.length),\n }),\n [contactsData, isLoading, error, isValidating]\n );\n\n return memoizedValue;\n}\n\n// ----------------------------------------------------------------------\n\nexport function useGetConversations() {\n // const URL = [endpoints.chat, { params: { endpoint: 'conversations' } }];\n // const { data, isLoading, error, isValidating } = useSWR(URL, fetcher, options);\n\n // Define other variables\n const isLoading = false; // Set to false since you're not fetching data\n const error = null; // Set to null since there's no error with local data\n const isValidating = false; // Set to false since there's no validation\n\n // Check if there's an error, and handle it gracefully\n if (error) {\n console.error('An error occurred while fetching conversations:', error);\n // You can return some default or error state here if needed\n // Example: return { conversations: {}, conversationsLoading: false, conversationsError: true, ... };\n }\n\n // Use local data or fetched data based on your needs\n const conversationsData = localConversations; // Use local data\n // const conversationsData = data?.conversations || []; // Use fetched data\n\n const memoizedValue = useMemo(() => {\n const byId = keyBy(conversationsData, 'id') || {}; // Use conversationsData here\n const allIds = Object.keys(byId) || [];\n\n return {\n conversations: {\n byId,\n allIds,\n },\n conversationsLoading: isLoading,\n conversationsError: error,\n conversationsValidating: isValidating,\n conversationsEmpty: !isLoading && !allIds.length,\n };\n }, [conversationsData, isLoading, error, isValidating]);\n\n return memoizedValue;\n}\n\n// ----------------------------------------------------------------------\n\nexport function useGetConversation(conversationId) {\n const URL = conversationId\n ? [endpoints.chat, { params: { conversationId, endpoint: 'conversation' } }]\n : null;\n\n const { data, isLoading, error, isValidating } = useSWR(URL, fetcher, options);\n\n // Use local data instead of API data\n const localConversation = localConversations.find(\n (conversation) => conversation.id === conversationId\n );\n\n // Initialize conversation with localConversation if available, or use data?.conversation\n const conversation = localConversation || data?.conversation;\n\n // Move this useMemo hook to the top level\n const memoizedValue = useMemo(\n () => ({\n conversation,\n conversationLoading: isLoading,\n conversationError: error,\n conversationValidating: isValidating,\n }),\n [conversation, error, isLoading, isValidating]\n );\n\n // Check if conversationId matches a specific ID you want to override\n // if (conversationId === 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2') {\n // return {\n // conversation: mockData[0], // Return the mockData entry you want to use\n // conversationLoading: false, // Indicate that loading is complete\n // conversationError: null, // No error in this case\n // conversationValidating: false, // Not validating\n // };\n // }\n\n // If the conversationId doesn't match, return the fetched data\n return memoizedValue;\n}\n\n// ----------------------------------------------------------------------\n\nexport async function sendMessage(conversationId, messageData) {\n const CONVERSATIONS_URL = [endpoints.chat, { params: { endpoint: 'conversations' } }];\n\n const CONVERSATION_URL = [\n endpoints.chat,\n {\n params: { conversationId, endpoint: 'conversation' },\n },\n ];\n\n /**\n * Work on server\n */\n // const data = { conversationId, messageData };\n // await axios.put(endpoints.chat, data);\n\n /**\n * Work in local\n */\n mutate(\n CONVERSATION_URL,\n (currentData) => {\n const { conversation: currentConversation } = currentData;\n\n const conversation = {\n ...currentConversation,\n messages: [...currentConversation.messages, messageData],\n };\n\n return {\n conversation,\n };\n },\n false\n );\n\n /**\n * Work in local\n */\n mutate(\n CONVERSATIONS_URL,\n (currentData) => {\n const { conversations: currentConversations } = currentData;\n\n const conversations = currentConversations.map((conversation) =>\n conversation.id === conversationId\n ? {\n ...conversation,\n messages: [...conversation.messages, messageData],\n }\n : conversation\n );\n\n return {\n conversations,\n };\n },\n false\n );\n}\n\n// ----------------------------------------------------------------------\n\nexport async function createConversation(conversationData) {\n const URL = [endpoints.chat, { params: { endpoint: 'conversations' } }];\n\n /**\n * Work on server\n */\n const data = { conversationData };\n const res = await axios.post(endpoints.chat, data);\n\n /**\n * Work in local\n */\n mutate(\n URL,\n (currentData) => {\n const conversations = [...currentData.conversations, conversationData];\n return {\n ...currentData,\n conversations,\n };\n },\n false\n );\n\n return res.data;\n}\n\n// ----------------------------------------------------------------------\n\nexport async function clickConversation(conversationId) {\n const URL = endpoints.chat;\n\n try {\n // Fetch and assign data to currentData\n const response = await axios.get(URL, { params: { conversationId, endpoint: 'mark-as-seen' } });\n const fetchedData = response.data; // Adjust this based on your actual response structure\n\n // Ensure fetchedData is defined and contains 'conversations' property\n if (fetchedData && fetchedData.conversations) {\n mutate(\n [\n URL,\n {\n params: { endpoint: 'conversations' },\n },\n ],\n (currentData) => {\n const conversations = currentData.conversations.map((conversation) =>\n conversation.id === conversationId ? { ...conversation, unreadCount: 0 } : conversation\n );\n\n return {\n ...currentData,\n conversations,\n };\n },\n false\n );\n } else {\n console.error('Invalid data structure:', fetchedData);\n }\n } catch (error) {\n console.error('Error fetching data:', error);\n }\n}\n","import PropTypes from 'prop-types';\nimport { useCallback } from 'react';\nimport { formatDistanceToNowStrict } from 'date-fns';\n// @mui\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Badge from '@mui/material/Badge';\nimport Avatar from '@mui/material/Avatar';\nimport Typography from '@mui/material/Typography';\nimport AvatarGroup from '@mui/material/AvatarGroup';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemButton from '@mui/material/ListItemButton';\n// routes\nimport { paths } from 'src/routes/paths';\nimport { useRouter } from 'src/routes/hooks';\n// hooks\nimport { useMockedUser } from 'src/hooks/use-mocked-user';\nimport { useResponsive } from 'src/hooks/use-responsive';\n// api\nimport { clickConversation } from 'src/api/chat';\n//\nimport { useGetNavItem } from './hooks';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatNavItem({ selected, collapse, conversation, onCloseMobile }) {\n const { user } = useMockedUser();\n\n const mdUp = useResponsive('up', 'md');\n\n const router = useRouter();\n\n const { group, displayName, displayText, participants, lastActivity, hasOnlineInGroup } =\n useGetNavItem({\n conversation,\n currentUserId: user.id,\n });\n\n const singleParticipant = participants[0];\n\n const { name, avatarUrl, status } = singleParticipant;\n\n const handleClickConversation = useCallback(async () => {\n try {\n if (!mdUp) {\n onCloseMobile();\n }\n\n await clickConversation(conversation.id);\n\n router.push(`${paths.dashboard.chat}?id=${conversation.id}`);\n } catch (error) {\n console.error(error);\n }\n }, [conversation.id, mdUp, onCloseMobile, router]);\n\n const renderGroup = (\n <Badge\n variant={hasOnlineInGroup ? 'online' : 'invisible'}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n >\n <AvatarGroup variant=\"compact\" sx={{ width: 48, height: 48 }}>\n {participants.slice(0, 2).map((participant) => (\n <Avatar key={participant.id} alt={participant.name} src={participant.avatarUrl} />\n ))}\n </AvatarGroup>\n </Badge>\n );\n\n const renderSingle = (\n <Badge key={status} variant={status} anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}>\n <Avatar alt={name} src={avatarUrl} sx={{ width: 32, height: 32 }} />\n </Badge>\n );\n\n return (\n <ListItemButton\n disableGutters\n onClick={handleClickConversation}\n sx={{\n py: 1.5,\n px: 2.5,\n ...(selected && {\n bgcolor: 'action.selected',\n }),\n }}\n >\n <Badge\n color=\"error\"\n overlap=\"circular\"\n badgeContent={collapse ? conversation.unreadCount : 0}\n >\n {group ? renderGroup : renderSingle}\n </Badge>\n\n {!collapse && (\n <>\n <ListItemText\n sx={{ ml: 2 }}\n primary={displayName}\n primaryTypographyProps={{\n noWrap: true,\n variant: 'subtitle2',\n }}\n secondary={displayText}\n secondaryTypographyProps={{\n noWrap: true,\n component: 'span',\n variant: conversation.unreadCount ? 'subtitle2' : 'body2',\n color: conversation.unreadCount ? 'text.primary' : 'text.secondary',\n }}\n />\n\n <Stack alignItems=\"flex-end\" sx={{ ml: 2, height: 44 }}>\n <Typography\n noWrap\n variant=\"body2\"\n component=\"span\"\n sx={{\n mb: 1.5,\n fontSize: 12,\n color: 'text.disabled',\n }}\n >\n {formatDistanceToNowStrict(new Date(lastActivity), {\n addSuffix: false,\n })}\n </Typography>\n\n {!!conversation.unreadCount && (\n <Box\n sx={{\n width: 8,\n height: 8,\n bgcolor: 'info.main',\n borderRadius: '50%',\n }}\n />\n )}\n </Stack>\n </>\n )}\n </ListItemButton>\n );\n}\n\nChatNavItem.propTypes = {\n collapse: PropTypes.bool,\n conversation: PropTypes.object,\n onCloseMobile: PropTypes.func,\n selected: PropTypes.bool,\n};\n","// ----------------------------------------------------------------------\n\nexport default function useGetNavItem({ currentUserId, conversation }) {\n const { messages, participants } = conversation;\n\n const participantsInConversation = participants.filter(\n (participant) => participant.id !== currentUserId\n );\n\n const lastMessage = messages[messages.length - 1];\n\n const group = participantsInConversation.length > 1;\n\n const displayName = participantsInConversation.map((participant) => participant.name).join(', ');\n\n const hasOnlineInGroup = group\n ? participantsInConversation.map((item) => item.status).includes('online')\n : false;\n\n let displayText = '';\n\n if (lastMessage) {\n const sender = lastMessage.senderId === currentUserId ? 'You: ' : '';\n\n const message = lastMessage.contentType === 'image' ? 'Sent a photo' : lastMessage.body;\n\n displayText = `${sender}${message}`;\n }\n\n return {\n group,\n displayName,\n displayText,\n participants: participantsInConversation,\n lastActivity: lastMessage.createdAt,\n hasOnlineInGroup,\n };\n}\n","import { useState, useCallback } from 'react';\n// @mui\nimport Stack from '@mui/material/Stack';\nimport Avatar from '@mui/material/Avatar';\nimport Divider from '@mui/material/Divider';\nimport Tooltip from '@mui/material/Tooltip';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport Badge, { badgeClasses } from '@mui/material/Badge';\nimport Select from '@mui/material/Select';\n// hooks\nimport { useMockedUser } from 'src/hooks/use-mocked-user';\n// components\nimport Iconify from 'src/components/iconify';\nimport CustomPopover, { usePopover } from 'src/components/custom-popover';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatNavAccount() {\n const { user } = useMockedUser();\n\n const popover = usePopover();\n\n const [status, setStatus] = useState('online');\n\n const handleChangeStatus = useCallback((event) => {\n setStatus(event.target.value);\n }, []);\n\n return (\n <>\n <Badge variant={status} anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}>\n <Avatar\n src={user?.photoURL}\n alt={user?.displayName}\n onClick={popover.onOpen}\n sx={{ cursor: 'pointer', width: 48, height: 48 }}\n />\n </Badge>\n\n <CustomPopover open={popover.open} onClose={popover.onClose} arrow=\"top-left\" sx={{ p: 0 }}>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n spacing={2}\n sx={{\n py: 2,\n pr: 1,\n pl: 2.5,\n }}\n >\n <ListItemText\n primary={user?.displayName}\n secondary={user?.email}\n secondaryTypographyProps={{ component: 'span' }}\n />\n\n <Tooltip title=\"Log out\">\n <IconButton color=\"error\">\n <Iconify icon=\"ic:round-power-settings-new\" />\n </IconButton>\n </Tooltip>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack sx={{ p: 1 }}>\n <MenuItem>\n <Badge\n variant={status}\n sx={{\n [`& .${badgeClasses.badge}`]: {\n position: 'static',\n m: 0.75,\n width: 12,\n height: 12,\n flexShrink: 0,\n },\n }}\n />\n\n <Select\n native\n fullWidth\n value={status}\n onChange={handleChangeStatus}\n input={<InputBase sx={{ pl: 2 }} />}\n inputProps={{\n sx: { textTransform: 'capitalize' },\n }}\n >\n {['online', 'alway', 'busy', 'offline'].map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </Select>\n </MenuItem>\n\n <MenuItem>\n <Iconify icon=\"solar:user-id-bold\" width={24} />\n Profile\n </MenuItem>\n\n <MenuItem>\n <Iconify icon=\"eva:settings-2-fill\" width={24} />\n Settings\n </MenuItem>\n </Stack>\n </CustomPopover>\n </>\n );\n}\n","import PropTypes from 'prop-types';\n// @mui\nimport Skeleton from '@mui/material/Skeleton';\nimport Stack from '@mui/material/Stack';\n\n// ----------------------------------------------------------------------\n\nexport function ChatNavItemSkeleton({ sx, ...other }) {\n return (\n <Stack\n spacing={2}\n direction=\"row\"\n alignItems=\"center\"\n sx={{\n px: 2.5,\n py: 1.5,\n ...sx,\n }}\n {...other}\n >\n <Skeleton variant=\"circular\" sx={{ width: 48, height: 48 }} />\n\n <Stack spacing={1} flexGrow={1}>\n <Skeleton sx={{ width: 0.75, height: 10 }} />\n <Skeleton sx={{ width: 0.5, height: 10 }} />\n </Stack>\n </Stack>\n );\n}\n\nChatNavItemSkeleton.propTypes = {\n sx: PropTypes.object,\n};\n","import PropTypes from 'prop-types';\n// @mui\nimport Avatar from '@mui/material/Avatar';\nimport Typography from '@mui/material/Typography';\nimport ListItemButton from '@mui/material/ListItemButton';\n//\nimport SearchNotFound from 'src/components/search-not-found';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatNavSearchResults({ query, results, onClickResult }) {\n const totalResults = results.length;\n\n const notFound = !totalResults && !!query;\n\n return (\n <>\n <Typography\n variant=\"h6\"\n sx={{\n px: 2.5,\n mb: 2,\n }}\n >\n Contacts ({totalResults})\n </Typography>\n\n {notFound ? (\n <SearchNotFound\n query={query}\n sx={{\n p: 3,\n mx: 'auto',\n width: `calc(100% - 40px)`,\n bgcolor: 'background.neutral',\n }}\n />\n ) : (\n <>\n {results.map((result) => (\n <ListItemButton\n key={result.id}\n onClick={() => onClickResult(result)}\n sx={{\n px: 2.5,\n py: 1.5,\n typography: 'subtitle2',\n }}\n >\n <Avatar alt={result.name} src={result.avatarUrl} sx={{ mr: 2 }} />\n {result.name}\n </ListItemButton>\n ))}\n </>\n )}\n </>\n );\n}\n\nChatNavSearchResults.propTypes = {\n query: PropTypes.string,\n results: PropTypes.array,\n onClickResult: PropTypes.func,\n};\n","import PropTypes from 'prop-types';\nimport { useState, useEffect, useCallback } from 'react';\n// @mui\nimport { useTheme } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Drawer from '@mui/material/Drawer';\nimport IconButton from '@mui/material/IconButton';\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\n// hooks\nimport { useResponsive } from 'src/hooks/use-responsive';\n// routes\nimport { paths } from 'src/routes/paths';\nimport { useRouter } from 'src/routes/hooks';\n// components\nimport Iconify from 'src/components/iconify';\nimport Scrollbar from 'src/components/scrollbar';\n//\nimport { useCollapseNav } from './hooks';\nimport ChatNavItem from './chat-nav-item';\nimport ChatNavAccount from './chat-nav-account';\nimport { ChatNavItemSkeleton } from './chat-skeleton';\nimport ChatNavSearchResults from './chat-nav-search-results';\n\n// ----------------------------------------------------------------------\n\nconst NAV_WIDTH = 320;\n\nconst NAV_COLLAPSE_WIDTH = 72;\n\nexport default function ChatNav({ loading, contacts, conversations, selectedConversationId }) {\n const theme = useTheme();\n\n const router = useRouter();\n\n const mdUp = useResponsive('up', 'md');\n\n const {\n collapseDesktop,\n onCloseDesktop,\n onCollapseDesktop,\n //\n openMobile,\n onOpenMobile,\n onCloseMobile,\n } = useCollapseNav();\n\n const [searchContacts, setSearchContacts] = useState({\n query: '',\n results: [],\n });\n\n useEffect(() => {\n if (!mdUp) {\n onCloseDesktop();\n }\n }, [onCloseDesktop, mdUp]);\n\n const handleToggleNav = useCallback(() => {\n if (mdUp) {\n onCollapseDesktop();\n } else {\n onCloseMobile();\n }\n }, [mdUp, onCloseMobile, onCollapseDesktop]);\n\n const handleClickCompose = useCallback(() => {\n if (!mdUp) {\n onCloseMobile();\n }\n router.push(paths.dashboard.chat);\n }, [mdUp, onCloseMobile, router]);\n\n const handleSearchContacts = useCallback(\n (inputValue) => {\n setSearchContacts((prevState) => ({\n ...prevState,\n query: inputValue,\n }));\n\n if (inputValue) {\n const results = contacts.filter((contact) =>\n contact.name.toLowerCase().includes(inputValue)\n );\n\n setSearchContacts((prevState) => ({\n ...prevState,\n results,\n }));\n }\n },\n [contacts]\n );\n\n const handleClickAwaySearch = useCallback(() => {\n setSearchContacts({\n query: '',\n results: [],\n });\n }, []);\n\n const handleClickResult = useCallback(\n (result) => {\n handleClickAwaySearch();\n\n router.push(`${paths.dashboard.chat}?id=${result.id}`);\n },\n [handleClickAwaySearch, router]\n );\n\n // const renderToggleBtn = (\n // <IconButton\n // onClick={onOpenMobile}\n // sx={{\n // left: 0,\n // top: 84,\n // zIndex: 9,\n // width: 32,\n // height: 32,\n // position: 'absolute',\n // borderRadius: `0 12px 12px 0`,\n // bgcolor: theme.palette.primary.main,\n // boxShadow: theme.customShadows.primary,\n // color: theme.palette.primary.contrastText,\n // '&:hover': {\n // bgcolor: theme.palette.primary.darker,\n // },\n // }}\n // >\n // <Iconify width={16} icon=\"solar:users-group-rounded-bold\" />\n // </IconButton>\n // );\n\n const renderSkeleton = (\n <>\n {[...Array(12)].map((_, index) => (\n <ChatNavItemSkeleton key={index} />\n ))}\n </>\n );\n\n const renderList = (\n <>\n {conversations.allIds.map((conversationId) => (\n <ChatNavItem\n key={conversationId}\n collapse={collapseDesktop}\n conversation={conversations.byId[conversationId]}\n selected={conversationId === selectedConversationId}\n onCloseMobile={onCloseMobile}\n />\n ))}\n </>\n );\n\n const renderListResults = (\n <ChatNavSearchResults\n query={searchContacts.query}\n results={searchContacts.results}\n onClickResult={handleClickResult}\n />\n );\n\n const renderSearchInput = (\n <ClickAwayListener onClickAway={handleClickAwaySearch}>\n <TextField\n fullWidth\n value={searchContacts.query}\n onChange={(event) => handleSearchContacts(event.target.value)}\n placeholder=\"Search contacts...\"\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Iconify icon=\"eva:search-fill\" sx={{ color: 'text.disabled' }} />\n </InputAdornment>\n ),\n }}\n sx={{ mt: 2.5 }}\n />\n </ClickAwayListener>\n );\n\n const renderContent = (\n <>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"center\" sx={{ p: 2.5, pb: 0 }}>\n {!collapseDesktop && (\n <>\n <ChatNavAccount />\n <Box sx={{ flexGrow: 1 }} />\n </>\n )}\n\n {/** \n <IconButton onClick={handleToggleNav}>\n <Iconify\n icon={collapseDesktop ? 'eva:arrow-ios-forward-fill' : 'eva:arrow-ios-back-fill'}\n />\n </IconButton>\n */}\n\n <IconButton>\n <Iconify\n icon={collapseDesktop ? 'eva:arrow-ios-forward-fill' : 'eva:arrow-ios-back-fill'}\n />\n </IconButton>\n\n {!collapseDesktop && (\n <IconButton onClick={handleClickCompose}>\n <Iconify width={24} icon=\"solar:user-plus-bold\" />\n </IconButton>\n )}\n </Stack>\n\n <Box sx={{ p: 2.5, pt: 0 }}>{!collapseDesktop && renderSearchInput}</Box>\n\n <Scrollbar sx={{ pb: 1 }}>\n {searchContacts.query && <div style={{ pointerEvents: 'none' }}>{renderListResults}</div>}\n\n {loading && <div style={{ pointerEvents: 'none' }}>{renderSkeleton}</div>}\n\n {!searchContacts.query && !!conversations.allIds.length && (\n <div style={{ pointerEvents: 'none' }}>{renderList}</div>\n )}\n </Scrollbar>\n </>\n );\n\n return (\n <>\n {/* !mdUp && renderToggleBtn */}\n\n {/* mdUp ? ( */}\n {true ? (\n <Stack\n sx={{\n height: 1,\n flexShrink: 0,\n width: NAV_WIDTH,\n borderRight: `solid 1px ${theme.palette.divider}`,\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.shorter,\n }),\n ...(collapseDesktop && {\n width: NAV_COLLAPSE_WIDTH,\n }),\n }}\n >\n {renderContent}\n </Stack>\n ) : (\n <Drawer\n // open={openMobile}\n onClose={onCloseMobile}\n slotProps={{\n backdrop: { invisible: true },\n }}\n PaperProps={{\n sx: { width: NAV_WIDTH },\n }}\n >\n {renderContent}\n </Drawer>\n )}\n </>\n );\n}\n\nChatNav.propTypes = {\n contacts: PropTypes.array,\n conversations: PropTypes.object,\n loading: PropTypes.bool,\n selectedConversationId: PropTypes.string,\n};\n","import { useState, useCallback } from 'react';\n\n// ----------------------------------------------------------------------\n\nexport default function useCollapseNav() {\n const [openMobile, setOpenMobile] = useState(true);\n\n const [collapseDesktop, setCollapseDesktop] = useState(true);\n\n const onCollapseDesktop = useCallback(() => {\n setCollapseDesktop((prev) => !prev);\n }, []);\n\n const onCloseDesktop = useCallback(() => {\n // setCollapseDesktop(false);\n setCollapseDesktop(true);\n }, []);\n\n const onOpenMobile = useCallback(() => {\n setOpenMobile(false);\n }, []);\n\n const onCloseMobile = useCallback(() => {\n setOpenMobile(false);\n }, []);\n\n return {\n openMobile,\n collapseDesktop,\n //\n onOpenMobile,\n onCloseMobile,\n onCloseDesktop,\n onCollapseDesktop,\n };\n}\n","import PropTypes from 'prop-types';\nimport { formatDistanceToNowStrict } from 'date-fns';\n// @mui\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Avatar from '@mui/material/Avatar';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\n// hooks\nimport { useMockedUser } from 'src/hooks/use-mocked-user';\n// components\nimport Iconify from 'src/components/iconify';\n//\nimport { useGetMessage } from './hooks';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatMessageItem({ message, participants, onOpenLightbox }) {\n const { user, fetchai } = useMockedUser();\n\n const { me, senderDetails, hasImage } = useGetMessage({\n message,\n participants,\n currentUserId: user.id,\n });\n\n const { firstName, avatarUrl } = senderDetails;\n\n const { body, createdAt } = message;\n\n let avatarSrc;\n let avatarName;\n\n if (me) {\n avatarSrc = user.photoURL;\n } else if (!hasImage) {\n avatarSrc = fetchai.photoURL;\n } else {\n avatarSrc = fetchai.photoDarkURL;\n }\n\n if (me) {\n avatarName = user.displayName;\n } else if (!hasImage) {\n avatarName = fetchai.displayName;\n } else {\n avatarName = fetchai.displayName;\n }\n\n const renderInfo = (\n <Typography\n noWrap\n variant=\"caption\"\n sx={{\n // mb: 1,\n color: me ? 'black' : 'white',\n fontWeight: '400', // Add this line for bold text\n textTransform: 'uppercase', // Add this line for uppercase text\n ...(hasImage && {\n mr: 'auto',\n mb: 1,\n color: 'grey.700',\n }),\n }}\n >\n {/* !me && `${firstName},` */}\n {`${avatarName}`} \n {/* formatDistanceToNowStrict(new Date(createdAt), {\n addSuffix: true,\n }) */}\n </Typography>\n );\n\n const renderBody = (\n <Stack\n sx={{\n p: 2,\n minWidth: 48,\n maxWidth: 320,\n borderRadius: 2.5,\n typography: 'body2',\n bgcolor: '#345BFF',\n color: 'white',\n display: 'flex',\n alignItems: 'left',\n justifyContent: 'flex-start', // Add this line\n ...(me && {\n color: 'grey.800',\n bgcolor: 'rgba(0, 0, 0, 0.10)',\n }),\n ...(hasImage && {\n p: 0,\n bgcolor: 'transparent',\n }),\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <Avatar\n alt={firstName}\n src={avatarSrc}\n sx={{\n width: 16,\n height: 16,\n mr: 1,\n alignSelf: 'center',\n ...(hasImage && {\n // mr: 'auto',\n mb: 1,\n color: 'black',\n }),\n }}\n />\n {renderInfo}\n </div>\n\n {hasImage ? (\n <Box\n component=\"img\"\n alt=\"attachment\"\n src={body}\n // onClick={() => onOpenLightbox(body)}\n sx={{\n // minHeight: 220,\n borderRadius: 1.5,\n cursor: 'pointer',\n '&:hover': {\n opacity: 0.9,\n },\n }}\n />\n ) : (\n <Box sx={{ paddingTop: 1.5 }}>{body}</Box> // Add padding-top here\n )}\n </Stack>\n );\n\n const renderActions = (\n <Stack\n direction=\"row\"\n className=\"message-actions\"\n sx={{\n pt: 0.5,\n opacity: 0,\n top: '100%',\n left: 0,\n position: 'absolute',\n transition: (theme) =>\n theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.shorter,\n }),\n ...(me && {\n left: 'unset',\n right: 0,\n }),\n }}\n >\n <IconButton size=\"small\">\n <Iconify icon=\"solar:reply-bold\" width={16} />\n </IconButton>\n <IconButton size=\"small\">\n <Iconify icon=\"eva:smiling-face-fill\" width={16} />\n </IconButton>\n <IconButton size=\"small\">\n <Iconify icon=\"solar:trash-bin-trash-bold\" width={16} />\n </IconButton>\n </Stack>\n );\n\n return (\n <Stack direction=\"row\" justifyContent={me ? 'flex-end' : 'unset'} sx={{ mb: 2 }}>\n {/* !me && <Avatar alt={firstName} src={avatarUrl} sx={{ width: 32, height: 32, mr: 2 }} /> */}\n\n <Stack alignItems=\"flex-end\">\n {/* renderInfo */}\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n sx={{\n position: 'relative',\n '&:hover': {\n '& .message-actions': {\n opacity: 1,\n },\n },\n }}\n >\n {renderBody}\n {/* renderActions */}\n </Stack>\n </Stack>\n </Stack>\n );\n}\n\nChatMessageItem.propTypes = {\n message: PropTypes.object,\n onOpenLightbox: PropTypes.func,\n participants: PropTypes.array,\n};\n","// ----------------------------------------------------------------------\n\nexport default function useGetMessage({ message, participants, currentUserId }) {\n const sender = participants.find((participant) => participant.id === message.senderId);\n\n const senderDetails =\n message.senderId === currentUserId\n ? {\n type: 'me',\n }\n : {\n avatarUrl: sender?.avatarUrl,\n firstName: sender?.name.split(' ')[0],\n };\n\n const me = senderDetails.type === 'me';\n\n const hasImage = message.contentType === 'image';\n\n return {\n hasImage,\n me,\n senderDetails,\n };\n}\n","import PropTypes from 'prop-types';\n// @mui\nimport Box from '@mui/material/Box';\n// components\nimport Scrollbar from 'src/components/scrollbar';\nimport Lightbox, { useLightBox } from 'src/components/lightbox';\n//\nimport { useMessagesScroll } from './hooks';\nimport ChatMessageItem from './chat-message-item';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatMessageList({ messages = [], participants }) {\n const { messagesEndRef } = useMessagesScroll(messages);\n\n const slides = messages\n .filter((message) => message.contentType === 'image')\n .map((message) => ({ src: message.body }));\n\n const lightbox = useLightBox(slides);\n\n return (\n <>\n <Scrollbar ref={messagesEndRef} sx={{ px: 3, py: 5, height: 1 }}>\n <Box>\n {messages.map((message) => (\n <ChatMessageItem\n key={message.id}\n message={message}\n participants={participants}\n onOpenLightbox={() => lightbox.onOpen(message.body)}\n />\n ))}\n </Box>\n </Scrollbar>\n\n <Lightbox\n index={lightbox.selected}\n slides={slides}\n open={lightbox.open}\n close={lightbox.onClose}\n />\n </>\n );\n}\n\nChatMessageList.propTypes = {\n messages: PropTypes.array,\n participants: PropTypes.array,\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport default function useMessagesScroll(messages) {\n const messagesEndRef = useRef(null);\n const [websiteScrollTop, setWebsiteScrollTop] = useState(0);\n const scrollSpeedFactor = 0.3; // Adjust the scroll speed factor as needed\n\n const scrollMessagesToStart = useCallback(() => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollTop = 0; // Scroll to the top\n }\n }, []);\n\n useEffect(() => {\n // Delay the scroll to start by 1 second\n const delay = setTimeout(() => {\n scrollMessagesToStart(); // Scroll to the start after 1 second\n }, 1000);\n\n return () => {\n clearTimeout(delay);\n };\n }, [scrollMessagesToStart]);\n\n const handleWebsiteScroll = useCallback(() => {\n setWebsiteScrollTop(window.pageYOffset);\n }, []);\n\n useEffect(() => {\n handleWebsiteScroll(); // Set the initial scroll position\n }, [handleWebsiteScroll]);\n\n // Synchronize chat message list's scroll position with website's scroll position\n useEffect(() => {\n if (messagesEndRef.current) {\n // Adjust the scroll speed using scrollSpeedFactor\n messagesEndRef.current.scrollTop = websiteScrollTop * scrollSpeedFactor;\n }\n }, [websiteScrollTop]);\n\n useEffect(() => {\n const handleScroll = () => {\n handleWebsiteScroll(); // Update the website scroll position\n };\n\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [handleWebsiteScroll]);\n\n const scrollMessagesToBottom = useCallback(() => {\n if (!messages) {\n return;\n }\n\n if (!messagesEndRef.current) {\n return;\n }\n\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollTop = messagesEndRef.current.scrollHeight;\n }\n }, [messages]);\n\n // useEffect(() => {\n // scrollMessagesToBottom();\n // }, [messages]);\n\n return {\n messagesEndRef,\n };\n}\n","import useSWR, { mutate } from 'swr';\nimport uuidv4 from '../utils/uuidv4';\n\nimport axios, { endpoints, fetcher } from '../utils/axios';\n\nconst OPENAI_API_KEY = process.env.REACT_APP_OPENAI_API_KEY;\n// const API_URL = 'http://localhost:3080/api/ai/petastic/chat';\nconst API_URL = process.env.REACT_APP_API_URL;\n\nexport async function sendToOpenAI(conversationId, message, user) {\n try {\n console.log('Message content:', message[0].content);\n\n // Update the conversation with the user's message\n const userMessage = {\n id: uuidv4(),\n body: message[0].content,\n contentType: 'text',\n createdAt: new Date(),\n senderId: user.id,\n };\n\n console.log('userMessage', userMessage);\n\n // First mutate call to update the conversation with the user's message\n mutate(\n [endpoints.chat, { params: { conversationId, endpoint: 'conversation' } }],\n (currentData) => {\n const { conversation: currentConversation } = currentData;\n const conversation = {\n ...currentConversation,\n messages: [...currentConversation.messages, userMessage],\n };\n console.log('convrsation', conversation);\n return {\n conversation,\n };\n },\n false\n );\n\n // Send a request to the OpenAI API\n const response = await axios.post(API_URL, message, {\n headers: {\n Authorization: `Bearer ${OPENAI_API_KEY}`,\n 'Content-Type': 'application/json',\n },\n });\n\n // Check if the response contains a message\n if (response.data.content) {\n console.log(response.data.content);\n\n // Update the conversation messages for the specified conversationId\n const openaiResponseMessage = {\n id: uuidv4(),\n body: response.data.content,\n contentType: 'text',\n createdAt: new Date(),\n senderId: 'e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2', // Lucian Obrien\n };\n\n // Second mutate call to update the conversation with the OpenAI response message\n mutate(\n [endpoints.chat, { params: { conversationId, endpoint: 'conversation' } }],\n (currentData) => {\n const { conversation: currentConversation } = currentData;\n const conversation = {\n ...currentConversation,\n messages: [...currentConversation.messages, openaiResponseMessage],\n };\n return {\n conversation,\n };\n },\n false\n );\n\n return response;\n }\n\n // Return a default value (e.g., null) if no message content is found\n return null;\n } catch (error) {\n console.error('Error sending request to OpenAI:', error);\n throw error;\n }\n}\n","import PropTypes from 'prop-types';\nimport { sub } from 'date-fns';\nimport { useRef, useState, useCallback, useMemo, useEffect } from 'react';\n// @mui\nimport Stack from '@mui/material/Stack';\nimport InputBase from '@mui/material/InputBase';\nimport IconButton from '@mui/material/IconButton';\nimport Box from '@mui/material/Box';\nimport LinearProgress from '@mui/material/LinearProgress';\n// routes\nimport { paths } from 'src/routes/paths';\nimport { useRouter } from 'src/routes/hooks';\n// hooks\nimport { useMockedUser } from 'src/hooks/use-mocked-user';\n// utils\nimport uuidv4 from 'src/utils/uuidv4';\n// components\nimport Iconify from 'src/components/iconify';\n// api\nimport { sendMessage, createConversation } from 'src/api/chat';\nimport { sendToOpenAI } from '../../api/openai'; // Your OpenAI API integration\n\nconst MAX_LINES = 4; // Define your maximum number of lines here\n\n// ----------------------------------------------------------------------\n\nexport default function ChatMessageInput({\n recipients,\n onAddRecipients,\n //\n disabled,\n selectedConversationId,\n // isAiLoading, // Add the loading prop to the propTypes\n}) {\n const router = useRouter();\n\n const { user } = useMockedUser();\n\n const fileRef = useRef(null);\n\n const [message, setMessage] = useState('');\n\n const renderLoading = (\n <Box sx={{ width: '100%' }}>\n <LinearProgress />\n </Box>\n );\n\n const myContact = useMemo(\n () => ({\n id: user.id,\n role: user.role,\n email: user.email,\n address: user.address,\n name: user.displayName,\n lastActivity: new Date(),\n avatarUrl: user.photoURL,\n phoneNumber: user.phoneNumber,\n status: 'online',\n }),\n [user]\n );\n\n const messageData = useMemo(\n () => ({\n id: uuidv4(),\n attachments: [],\n body: message,\n contentType: 'text',\n createdAt: sub(new Date(), { minutes: 1 }),\n senderId: myContact.id,\n }),\n [message, myContact.id]\n );\n\n // const conversationData = useMemo(\n // () => ({\n // id: uuidv4(),\n // messages: [messageData],\n // participants: [...recipients, myContact],\n // type: recipients.length > 1 ? 'GROUP' : 'ONE_TO_ONE',\n // unreadCount: 0,\n // }),\n // [messageData, myContact, recipients]\n // );\n\n const [conversationData, setConversationData] = useState({\n id: uuidv4(),\n messages: [messageData],\n participants: [...recipients, myContact],\n type: recipients.length > 1 ? 'GROUP' : 'ONE_TO_ONE',\n unreadCount: 0,\n });\n\n const handleAttach = useCallback(() => {\n if (fileRef.current) {\n fileRef.current.click();\n }\n }, []);\n\n // const handleChangeMessage = useCallback((event) => {\n // setMessage(event.target.value);\n // }, []);\n\n // const handleSendMessage = useCallback(\n // async (event) => {\n // try {\n // if (event.key === 'Enter') {\n // if (message) {\n // if (selectedConversationId) {\n // await sendMessage(selectedConversationId, messageData);\n // } else {\n // const res = await createConversation(conversationData);\n\n // router.push(`${paths.dashboard.chat}?id=${res.conversation.id}`);\n\n // onAddRecipients([]);\n // }\n // }\n // setMessage('');\n // }\n // } catch (error) {\n // console.error(error);\n // }\n // },\n // [conversationData, message, messageData, onAddRecipients, router, selectedConversationId]\n // );\n\n // New state to store user's input for OpenAI\n const [openaiMessage, setOpenaiMessage] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSendMessage = useCallback(async () => {\n if (openaiMessage && !isLoading) {\n setIsLoading(true);\n\n // Construct the user's message object\n const userMessage = {\n role: 'user',\n content: openaiMessage,\n };\n\n // Simulate user sending a message to OpenAI\n try {\n const response = await sendToOpenAI('e99f09a7-dd88-49d5-b1c8-1daf80c2d7b2', [userMessage], {\n id: '8864c717-587d-472a-929a-8e5f298024da-0',\n });\n\n // Handle the OpenAI response here\n console.log('OpenAI Response:', response);\n } catch (error) {\n // Handle errors here\n console.error('Error sending request to OpenAI:', error);\n } finally {\n setIsLoading(false);\n setOpenaiMessage(''); // Clear the input field after sending the message\n }\n }\n }, [openaiMessage, isLoading]);\n\n const simulateEnterKeyPress = useCallback(() => {\n handleSendMessage(); // Simulate sending the message\n }, [handleSendMessage]);\n\n // useEffect(() => {\n // // Simulate pressing the \"Enter\" key after a 5-second timer\n // const timer = setTimeout(simulateEnterKeyPress, 5000);\n\n // return () => {\n // clearTimeout(timer); // Clear the timer if the component unmounts before the timer expires\n // };\n // }, [simulateEnterKeyPress]);\n\n // Function to handle user input for OpenAI\n const handleOpenaiMessageChange = useCallback((event) => {\n setOpenaiMessage(event.target.value);\n }, []);\n\n useEffect(() => {\n console.log('Updated Conversation Data:', conversationData);\n }, [conversationData]);\n\n const [isAiLoading, setAiIsLoading] = useState(false);\n\n const handleSendOpenaiMessage = useCallback(\n async (event) => {\n try {\n // Set isLoading to true before making the request\n setAiIsLoading(true);\n\n if (event.key === 'Enter') {\n if (openaiMessage) {\n // Construct the user's message object\n const userMessage = {\n id: uuidv4(),\n attachments: [],\n body: openaiMessage,\n contentType: 'text',\n createdAt: new Date(),\n senderId: myContact.id,\n };\n\n // Update the conversation data to include the user's message\n setConversationData((prevConversationData) => ({\n ...prevConversationData,\n messages: [...prevConversationData.messages, userMessage],\n }));\n\n // Wrap the message object in an array with the n property\n const messageArray = [\n {\n role: 'user',\n content: openaiMessage,\n },\n ];\n\n // Send the user's message to the OpenAI API\n const openaiResponse = await sendToOpenAI(selectedConversationId, messageArray, user);\n\n // Handle the OpenAI response\n if (openaiResponse) {\n // Access participants from conversationData\n const participants = conversationData.participants;\n // Determine the ID of the other participant\n // const otherParticipantId = participants.find((participant) => participant.id !== myContact.id).id;\n\n console.log('participants:id', participants[0].id);\n console.log('participants:name', participants[0].name);\n\n // Generate a new unique ID for the response message\n const openaiResponseMessage = {\n id: uuidv4(),\n body: openaiResponse.data.content,\n contentType: 'text',\n createdAt: new Date(),\n senderId: participants[0].id, // TODO: ref fetchai id\n };\n\n // Update the conversation data again to include the OpenAI response\n setConversationData((prevConversationData) => ({\n ...prevConversationData,\n messages: [...prevConversationData.messages, openaiResponseMessage],\n }));\n\n // Clear the input field\n setOpenaiMessage('');\n\n console.log('User Message:', userMessage);\n console.log('OpenAI Response Message:', openaiResponseMessage);\n console.log('Updated Conversation Data:', conversationData);\n\n // Set isLoading to false when you're done\n setAiIsLoading(false);\n }\n }\n }\n } catch (error) {\n console.error(error);\n } finally {\n // Set isLoading to false when you're done\n setAiIsLoading(false);\n }\n },\n [\n openaiMessage,\n setConversationData,\n user,\n conversationData,\n myContact.id,\n selectedConversationId,\n ]\n );\n\n return (\n <>\n {/** \n <InputBase\n value={message}\n onKeyUp={handleSendMessage}\n onChange={handleChangeMessage}\n placeholder=\"Type a message\"\n disabled={disabled}\n startAdornment={\n <IconButton>\n <Iconify icon=\"eva:smiling-face-fill\" />\n </IconButton>\n }\n endAdornment={\n <Stack direction=\"row\" sx={{ flexShrink: 0 }}>\n <IconButton onClick={handleAttach}>\n <Iconify icon=\"solar:gallery-add-bold\" />\n </IconButton>\n <IconButton onClick={handleAttach}>\n <Iconify icon=\"eva:attach-2-fill\" />\n </IconButton>\n <IconButton>\n <Iconify icon=\"solar:microphone-bold\" />\n </IconButton>\n </Stack>\n }\n sx={{\n px: 1,\n height: 56,\n flexShrink: 0,\n borderTop: (theme) => `solid 1px ${theme.palette.divider}`,\n }}\n />\n */}\n\n {/* Show the loading spinner when isAiLoading is true */}\n {isAiLoading && renderLoading}\n\n {/* New input field for OpenAI */}\n <InputBase\n multiline // Set the multiline prop to true\n value={openaiMessage}\n onKeyUp={handleSendOpenaiMessage}\n onChange={handleOpenaiMessageChange}\n placeholder=\"Ask me pet things...\"\n // disabled={disabled}\n disabled=\"true\"\n endAdornment={\n <Stack direction=\"row\" sx={{ flexShrink: 0 }}>\n <IconButton onClick={handleAttach}>\n <Iconify icon=\"solar:gallery-add-bold\" />\n </IconButton>\n <IconButton onClick={handleAttach}>\n <Iconify icon=\"eva:attach-2-fill\" />\n </IconButton>\n </Stack>\n }\n sx={{\n px: 1,\n minHeight: 56,\n flexShrink: 0,\n borderTop: (theme) => `solid 1px ${theme.palette.divider}`,\n maxHeight: `${MAX_LINES * 1.2}em`, // Adjust the line height as needed\n overflowY: 'auto', // Show scrollbar if content exceeds maxHeight\n whiteSpace: 'pre-wrap', // Allow text to wrap to the next line\n }}\n />\n\n <input type=\"file\" ref={fileRef} style={{ display: 'none' }} />\n </>\n );\n}\n\nChatMessageInput.propTypes = {\n disabled: PropTypes.bool,\n onAddRecipients: PropTypes.func,\n recipients: PropTypes.array,\n selectedConversationId: PropTypes.string,\n // isAiLoading: PropTypes.bool,\n};\n","import PropTypes from 'prop-types';\n// @mui\nimport Stack from '@mui/material/Stack';\nimport Badge from '@mui/material/Badge';\nimport Avatar from '@mui/material/Avatar';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport AvatarGroup, { avatarGroupClasses } from '@mui/material/AvatarGroup';\n// utils\nimport { fToNow } from 'src/utils/format-time';\n// components\nimport Iconify from 'src/components/iconify';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatHeaderDetail({ participants }) {\n const group = participants.length > 1;\n\n console.log('participants:', participants);\n\n if (participants[0].name === 'Lucian Obrien') {\n participants[0].name = 'Grilli • 3yo';\n participants[0].status = 'Shih Tzu';\n participants[0].email = 'Kibble Balance';\n participants[0].role = '$100 • 1600';\n } else if (participants[0].name === 'Deja Brady') {\n participants[0].name = 'Skril • 5yo';\n participants[0].status = 'Persian';\n participants[0].email = 'Kibble Balance';\n participants[0].role = '$100 • 1600';\n } else if (participants[0].name === 'Harrison Stein') {\n participants[0].name = 'Bed Again • 4yo';\n participants[0].status = 'French Bullog';\n participants[0].email = 'Kibble Balance';\n participants[0].role = '$100 • 1600';\n }\n\n const singleParticipant = participants[0];\n\n const renderGroup = (\n <AvatarGroup\n max={3}\n sx={{\n [`& .${avatarGroupClasses.avatar}`]: {\n width: 32,\n height: 32,\n },\n }}\n >\n {participants.map((participant) => (\n <Avatar key={participant.id} alt={participant.name} src={participant} />\n ))}\n </AvatarGroup>\n );\n\n const renderSingle = (\n <Stack\n flexGrow={1}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\" // This will space the items apart horizontally\n spacing={2}\n >\n <ListItemText\n primary={singleParticipant.name}\n secondary={\n singleParticipant.status === 'offline'\n ? fToNow(singleParticipant.lastActivity)\n : singleParticipant.status\n }\n primaryTypographyProps={{\n style: {\n fontWeight: 'bold', // Set the font weight to normal (not bold)\n fontSize: '12px',\n },\n }}\n secondaryTypographyProps={{\n component: 'span',\n ...(singleParticipant.status !== 'offline' && {\n textTransform: 'capitalize',\n }),\n style: {\n fontSize: '12px',\n },\n }}\n />\n <ListItemText\n primary={singleParticipant.email}\n primaryTypographyProps={{\n style: {\n fontWeight: 'normal', // Set the font weight to normal (not bold)\n fontSize: '12px',\n },\n }}\n secondary={\n singleParticipant.role === 'offline'\n ? fToNow(singleParticipant.lastActivity)\n : singleParticipant.role\n }\n secondaryTypographyProps={{\n component: 'span',\n ...(singleParticipant.role !== 'offline' && {\n textTransform: 'capitalize',\n }),\n style: {\n fontWeight: 'normal', // Set the font weight to normal (not bold)\n fontSize: '12px',\n },\n }}\n style={{ textAlign: 'right' }}\n />\n </Stack>\n );\n\n return (\n <>\n {group ? renderGroup : renderSingle}\n\n <Stack flexGrow={0.2} />\n\n {/** \n <IconButton>\n <Iconify icon=\"solar:phone-bold\" />\n </IconButton>\n <IconButton>\n <Iconify icon=\"solar:videocamera-record-bold\" />\n </IconButton>\n\n <IconButton>\n <Iconify icon=\"eva:more-vertical-fill\" />\n </IconButton>\n */}\n </>\n );\n}\n\nChatHeaderDetail.propTypes = {\n participants: PropTypes.array,\n};\n","import PropTypes from 'prop-types';\nimport { useState, useCallback } from 'react';\n// @mui\nimport { alpha } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Avatar from '@mui/material/Avatar';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport Autocomplete from '@mui/material/Autocomplete';\n// components\nimport Iconify from 'src/components/iconify';\nimport SearchNotFound from 'src/components/search-not-found';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatHeaderCompose({ contacts, onAddRecipients }) {\n const [searchRecipients, setSearchRecipients] = useState('');\n\n const handleAddRecipients = useCallback(\n (selected) => {\n setSearchRecipients('');\n onAddRecipients(selected);\n },\n [onAddRecipients]\n );\n\n return (\n <>\n <Typography variant=\"subtitle2\" sx={{ color: 'text.primary', mr: 2 }}>\n To:\n </Typography>\n\n <Autocomplete\n sx={{ minWidth: 320 }}\n multiple\n limitTags={3}\n popupIcon={null}\n disableCloseOnSelect\n noOptionsText={<SearchNotFound query={searchRecipients} />}\n onChange={(event, newValue) => handleAddRecipients(newValue)}\n onInputChange={(event, newValue) => setSearchRecipients(newValue)}\n options={contacts}\n getOptionLabel={(recipient) => recipient.name}\n isOptionEqualToValue={(option, value) => option.id === value.id}\n renderInput={(params) => <TextField {...params} placeholder=\"+ Recipients\" />}\n renderOption={(props, recipient, { selected }) => (\n <li {...props} key={recipient.id}>\n <Box\n key={recipient.id}\n sx={{\n mr: 1,\n width: 32,\n height: 32,\n overflow: 'hidden',\n borderRadius: '50%',\n position: 'relative',\n }}\n >\n <Avatar alt={recipient.name} src={recipient.avatarUrl} sx={{ width: 1, height: 1 }} />\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n opacity: 0,\n position: 'absolute',\n bgcolor: (theme) => alpha(theme.palette.grey[900], 0.8),\n transition: (theme) =>\n theme.transitions.create(['opacity'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter,\n }),\n ...(selected && {\n opacity: 1,\n color: 'primary.main',\n }),\n }}\n >\n <Iconify icon=\"eva:checkmark-fill\" />\n </Stack>\n </Box>\n\n {recipient.name}\n </li>\n )}\n renderTags={(selected, getTagProps) =>\n selected.map((recipient, index) => (\n <Chip\n {...getTagProps({ index })}\n key={recipient.id}\n label={recipient.name}\n avatar={<Avatar alt={recipient.name} src={recipient.avatarUrl} />}\n size=\"small\"\n variant=\"soft\"\n />\n ))\n }\n />\n </>\n );\n}\n\nChatHeaderCompose.propTypes = {\n contacts: PropTypes.array,\n onAddRecipients: PropTypes.func,\n};\n","import { useEffect, useState, useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n// @mui\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport Container from '@mui/material/Container';\nimport Paper from '@mui/material/Paper';\n// routes\nimport { paths } from 'src/routes/paths';\nimport { useRouter, useSearchParams } from 'src/routes/hooks';\n// hooks\nimport { useMockedUser } from 'src/hooks/use-mocked-user';\n// api\nimport { useGetContacts, useGetConversation, useGetConversations } from 'src/api/chat';\n// components\nimport { useSettingsContext } from 'src/components/settings';\n//\nimport ChatNav from '../chat-nav';\nimport ChatRoom from '../chat-room';\nimport ChatMessageList from '../chat-message-list';\nimport ChatMessageInput from '../chat-message-input';\nimport ChatHeaderDetail from '../chat-header-detail';\nimport ChatHeaderCompose from '../chat-header-compose';\n\n// ----------------------------------------------------------------------\n\nexport default function ChatView() {\n const router = useRouter();\n const navigate = useNavigate();\n\n const { user } = useMockedUser();\n\n const settings = useSettingsContext();\n\n const searchParams = useSearchParams();\n\n const selectedConversationId = searchParams.get('id') || '';\n\n const [recipients, setRecipients] = useState([]);\n\n const { contacts } = useGetContacts();\n\n const { conversations, conversationsLoading } = useGetConversations();\n\n const { conversation, conversationError } = useGetConversation(`${selectedConversationId}`);\n\n const participants = conversation\n ? conversation.participants.filter((participant) => participant.id !== user.id)\n : [];\n\n useEffect(() => {\n // Navigate to the desired URL when the component loads\n navigate('/?id=e99f09a7-dd88-49d5-b1c8-1daf80c2d7b4');\n }, [navigate]);\n\n // useEffect(() => {\n // if (conversationError || !selectedConversationId) {\n // router.push(paths.dashboard.chat);\n // }\n // }, [conversationError, router, selectedConversationId]);\n\n const handleAddRecipients = useCallback((selected) => {\n setRecipients(selected);\n }, []);\n\n const details = !!conversation;\n\n const renderHead = (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n flexShrink={0}\n sx={{ pr: 1, pl: 2.5, py: 1, minHeight: 72 }}\n >\n {selectedConversationId ? (\n <>{details && <ChatHeaderDetail participants={participants} />}</>\n ) : (\n <ChatHeaderCompose contacts={contacts} onAddRecipients={handleAddRecipients} />\n )}\n </Stack>\n );\n\n const renderNav = (\n <ChatNav\n contacts={contacts}\n conversations={conversations}\n loading={conversationsLoading}\n selectedConversationId={selectedConversationId}\n />\n );\n\n const renderMessages = (\n <Stack\n sx={{\n width: 1,\n height: 1,\n overflow: 'hidden',\n backgroundImage: 'url(/assets/background/chat_bg.svg)',\n }}\n >\n <ChatMessageList messages={conversation?.messages} participants={participants} />\n\n <ChatMessageInput\n recipients={recipients}\n onAddRecipients={handleAddRecipients}\n //\n selectedConversationId={selectedConversationId}\n disabled={!recipients.length && !selectedConversationId}\n />\n </Stack>\n );\n\n return (\n <Container maxWidth={settings.themeStretch ? false : 'xl'}>\n <Stack\n component={Paper}\n variant=\"outlined\"\n alignItems=\"center\"\n // spacing={{ xs: 3, md: 5 }}\n sx={{\n // borderRadius: 2,\n bgcolor: 'unset',\n border: 'none', // Specify the border style here\n p: { xs: 4, md: 12 },\n backgroundImage: 'url(/assets/background/fetch.svg)',\n backgroundSize: '100% 100%', // Make the background image cover the entire Stack\n backgroundRepeat: 'no-repeat', //\n }}\n >\n {' '}\n <Stack\n component={Card}\n direction=\"row\"\n sx={{\n backgroundColor: '#F2E1DE',\n width: '400px',\n height: '750px',\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.3)', // Add your desired shadow settings here\n }}\n >\n {renderNav}\n\n <Stack\n sx={{\n width: 1,\n height: 1,\n overflow: 'hidden',\n }}\n >\n {renderHead}\n\n <Stack\n direction=\"row\"\n sx={{\n width: 1,\n height: 1,\n overflow: 'hidden',\n borderTop: (theme) => `solid 1px ${theme.palette.divider}`,\n // backgroundImage: 'url(/assets/background/chat_bg.svg)',\n }}\n >\n {renderMessages}\n\n {/* details && <ChatRoom conversation={conversation} participants={participants} /> */}\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n </Container>\n );\n}\n","/* eslint-disable */\n// ----------------------------------------------------------------------\n\nexport default function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n"],"names":["useLightBox","slides","_useState","useState","_useState2","_slicedToArray","selected","setSelected","open","onOpen","useCallback","slideUrl","slideIndex","findIndex","slide","type","poster","src","onClose","StyledLightbox","theme","useTheme","_jsx","GlobalStyles","styles","alpha","palette","grey","fontSize","typography","h5","fontWeight","lineHeight","body2","filter","opacity","backgroundColor","common","black","ICON_SIZE","Lightbox","_ref","disabledZoom","disabledVideo","disabledTotal","disabledCaptions","disabledSlideshow","disabledThumbnails","disabledFullscreen","onGetCurrentIndex","other","_objectWithoutProperties","_excluded","totalItems","length","_jsxs","_Fragment","children","ReactLightbox","_objectSpread","animation","swipe","carousel","finite","controller","closeOnBackdropClick","plugins","getPlugins","on","view","_ref2","index","toolbar","buttons","DisplayTotal","render","iconClose","Iconify","width","icon","iconZoomIn","iconZoomOut","iconSlideshowPlay","iconSlideshowPause","iconPrev","iconNext","iconExitFullscreen","iconEnterFullscreen","_ref3","Captions","Fullscreen","Slideshow","Thumbnails","Video","Zoom","plugin","_ref4","currentIndex","useLightboxState","Box","component","className","sx","alignItems","display","justifyContent","options","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","localConversations","id","participants","status","role","email","name","lastActivity","address","avatarUrl","phoneNumber","concat","process","unreadCount","messages","body","contentType","attachments","path","preview","size","createdAt","modifiedAt","senderId","clickConversation","_x4","_clickConversation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee3","conversationId","URL","response","fetchedData","wrap","_context3","prev","next","endpoints","chat","axios","get","params","endpoint","sent","data","conversations","mutate","currentData","map","conversation","console","error","t0","stop","ChatNavItem","collapse","onCloseMobile","user","useMockedUser","mdUp","useResponsive","router","useRouter","_useGetNavItem","currentUserId","participantsInConversation","participant","lastMessage","group","displayName","join","hasOnlineInGroup","item","includes","displayText","sender","message","useGetNavItem","singleParticipant","handleClickConversation","_callee","_context","push","paths","dashboard","renderGroup","Badge","variant","anchorOrigin","vertical","horizontal","AvatarGroup","height","slice","Avatar","alt","renderSingle","ListItemButton","disableGutters","onClick","py","px","bgcolor","color","overlap","badgeContent","ListItemText","ml","primary","primaryTypographyProps","noWrap","secondary","secondaryTypographyProps","Stack","Typography","mb","formatDistanceToNowStrict","Date","addSuffix","borderRadius","ChatNavAccount","popover","usePopover","setStatus","handleChangeStatus","event","target","value","photoURL","cursor","CustomPopover","arrow","p","direction","spacing","pr","pl","Tooltip","title","IconButton","Divider","borderStyle","MenuItem","_defineProperty","badgeClasses","badge","position","m","flexShrink","Select","native","fullWidth","onChange","input","InputBase","inputProps","textTransform","option","ChatNavItemSkeleton","Skeleton","flexGrow","ChatNavSearchResults","query","results","onClickResult","totalResults","notFound","SearchNotFound","mx","result","mr","NAV_WIDTH","NAV_COLLAPSE_WIDTH","ChatNav","loading","contacts","selectedConversationId","_useCollapseNav","openMobile","setOpenMobile","_useState3","_useState4","collapseDesktop","setCollapseDesktop","onCollapseDesktop","onCloseDesktop","onOpenMobile","useCollapseNav","searchContacts","setSearchContacts","useEffect","handleClickCompose","handleSearchContacts","inputValue","prevState","contact","toLowerCase","handleClickAwaySearch","handleClickResult","renderSkeleton","_toConsumableArray","Array","_","renderList","allIds","byId","renderListResults","renderSearchInput","ClickAwayListener","onClickAway","TextField","placeholder","InputProps","startAdornment","InputAdornment","mt","renderContent","pb","pt","Scrollbar","style","pointerEvents","borderRight","divider","transition","transitions","create","duration","shorter","ChatMessageItem","avatarSrc","avatarName","_useMockedUser","onOpenLightbox","fetchai","_useGetMessage","find","senderDetails","firstName","split","me","hasImage","useGetMessage","photoDarkURL","renderInfo","renderBody","minWidth","maxWidth","alignSelf","paddingTop","top","left","right","ChatMessageList","_ref$messages","_useMessagesScroll","messagesEndRef","useRef","websiteScrollTop","setWebsiteScrollTop","scrollMessagesToStart","current","scrollTop","delay","setTimeout","clearTimeout","handleWebsiteScroll","window","pageYOffset","handleScroll","addEventListener","removeEventListener","scrollHeight","useMessagesScroll","lightbox","ref","close","OPENAI_API_KEY","API_URL","sendToOpenAI","_x","_x2","_x3","_sendToOpenAI","userMessage","openaiResponseMessage","log","content","uuidv4","currentConversation","post","headers","Authorization","abrupt","MAX_LINES","ChatMessageInput","recipients","onAddRecipients","disabled","fileRef","renderLoading","LinearProgress","myContact","useMemo","messageData","sub","minutes","conversationData","setConversationData","handleAttach","click","_useState5","_useState6","openaiMessage","setOpenaiMessage","_useState7","_useState8","isLoading","setIsLoading","handleSendMessage","finish","handleOpenaiMessageChange","_useState9","_useState10","isAiLoading","setAiIsLoading","handleSendOpenaiMessage","_callee2","messageArray","openaiResponse","_context2","key","prevConversationData","multiline","onKeyUp","endAdornment","minHeight","borderTop","maxHeight","overflowY","whiteSpace","ChatHeaderDetail","max","avatarGroupClasses","avatar","fToNow","textAlign","ChatHeaderCompose","searchRecipients","setSearchRecipients","handleAddRecipients","Autocomplete","multiple","limitTags","popupIcon","disableCloseOnSelect","noOptionsText","newValue","onInputChange","getOptionLabel","recipient","isOptionEqualToValue","renderInput","renderOption","props","_createElement","overflow","easing","easeInOut","renderTags","getTagProps","Chip","label","ChatView","navigate","useNavigate","settings","useSettingsContext","useSearchParams","setRecipients","contactsData","contactsLoading","contactsError","contactsValidating","contactsEmpty","useGetContacts","_useGetConversations","conversationsData","keyBy","Object","keys","conversationsLoading","conversationsError","conversationsValidating","conversationsEmpty","useGetConversations","_useGetConversation","_useSWR","useSWR","fetcher","isValidating","localConversation","conversationLoading","conversationError","conversationValidating","useGetConversation","details","renderHead","renderNav","renderMessages","backgroundImage","Container","themeStretch","Paper","border","xs","md","backgroundSize","backgroundRepeat","Card","boxShadow","replace","c","r","Math","random","toString"],"sourceRoot":""}