Autoría | Ultima modificación | Ver Log |
import React, { useCallback, useState } from 'react'import IconButton from '@mui/material/IconButton'import SearchIcon from '@mui/icons-material/Search'import MoreVertIcon from '@mui/icons-material/MoreVert'import ContactsList from './ContactsList'import CreateGroupModal from '../group-modal/CreateGroupModal'import ContactsModal from '../../../chat/chat/components/ContactsModal'const Contacts = ({persons = [],groups = [],selectedConversation,changeConversation,}) => {const TABS = { persons: 1, groups: 2 }const [tab, setTab] = useState(TABS.persons)const [search, setSearch] = useState('')const [isShowGroupModal, setIsShowGroupModal] = useState(false)const [isShowContactsModal, setIsShowContactsModal] = useState(false)const options = [{label: 'Iniciar conversación',action: () => setIsShowContactsModal(true),},{ label: 'Crear grupo', action: () => setIsShowGroupModal(true) },]const onCreateConversation = (url) => {const conversation = persons.find((user) => user.url_send === url)changeConversation(conversation)}const conversations = useCallback(() => {if (tab === TABS.persons) {return persons.filter((conversation) =>conversation.name.toLowerCase().includes(search.toLowerCase()))}return groups.filter((conversation) =>conversation.name.toLowerCase().includes(search.toLowerCase()))}, [TABS, tab])return (<><aside className="chat_contacts"><div className="position-relative"><h1>Chat</h1><Contacts.Options options={options} /></div><div className="tabs"><buttonclassName={`btn ${tab === TABS.persons && 'active-tab'}`}onClick={() => setTab(TABS.persons)}>Personas</button><buttonclassName={`btn ${tab === TABS.groups && 'active-tab'}`}onClick={() => setTab(TABS.groups)}>Grupos</button></div><div className="contact__search show"><SearchIcon /><inputtype="text"placeholder="Buscar"onChange={(e) => setSearch(e.target.value)}/></div><ContactsListconversations={conversations()}selectedConversation={selectedConversation}onClick={changeConversation}/></aside><ContactsModalshow={isShowContactsModal}onClose={() => setIsShowContactsModal(false)}onComplete={onCreateConversation}/><CreateGroupModalisOpen={isShowGroupModal}onClose={() => setIsShowGroupModal(false)}/></>)}const Options = ({ options }) => {const [isShowMenu, setIsShowMenu] = useState(false)const toggleOptions = () => {setIsShowMenu(!isShowMenu)}return (<div className="header-options" style={{ right: '0' }}><IconButton onClick={toggleOptions}><MoreVertIcon /></IconButton><div className="position-relative"><div className={`feed-options ${isShowMenu ? 'active' : ''}`}><ul>{options.map((option, index) => (<li key={index}><buttonclassName="btn option-btn"onClick={() => {toggleOptions()option.action()}}>{option.label}</button></li>))}</ul></div></div></div>)}Contacts.Options = Optionsexport default Contacts