import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; import { useDropzone } from "react-dropzone"; import { Link, useParams } from "react-router-dom"; import Button from "react-bootstrap/esm/Button"; import { actionFindUsers } from "../actions"; import { CSearchAvatar } from "../components/Avatar"; import { actionSetChatInfo } from "../actions"; import { CChatAvatar } from "../components/Avatar"; import { history } from "../App"; const ChatEditing = ({ chatId, onChat, myProfile, create, onGetUser, foundUsers, }) => { const useDebounce = (cb, depArray, delay) => { let timeoutRef = useRef(); useEffect(() => { clearInterval(timeoutRef.current); timeoutRef.current === undefined ? (timeoutRef.current = -1) : (timeoutRef.current = setTimeout(cb, delay)); }, depArray); }; const [login, setLogin] = useState(); useDebounce(() => onGetUser(login), [login], 2000); let { _id } = useParams(); const [chat] = useState(); const [img, setImg] = useState(null); const [newTitle, setNewTitle] = useState(chatId[_id]?.title || ""); const { getRootProps, getInputProps, isDragActive } = useDropzone({ accept: "image/*", maxFiles: 1, onDrop: (acceptedFiles) => { setImg(acceptedFiles[0]); }, }); const [members, setMembers] = useState(chatId[_id]?.members || [myProfile]); useEffect(() => { onChat("media", img, newTitle, prepareMembers(members), _id); }, [members]); function prepareMembers(members) { const newMembers = []; for (const member of members) { if (create) { if (member._id !== myProfile?._id) { newMembers.push({ _id: member._id }); } } else { newMembers.push({ _id: member?._id }); } } return newMembers; } function checkMembers(members, user) { for (var i = 0; i < members.length; i++) { if (members[i]?._id === user?._id) { return null; } } return onAddMember(user); } const onAddMember = (newMember) => { setMembers([...members, newMember]); }; const onDelMember = (i) => { setMembers( members.filter((el, index) => members[index]._id !== members[i]._id) ); }; return (
{isDragActive ? (

Drop the files here ...

) : ( )}
{ setNewTitle(e.target.value); }} />
{/* */}
setLogin(e.target.value) } />
{foundUsers ? foundUsers.map((user, i) => { return (
{user?.avatar !== null ? ( ) : (
)}
{user?.login ? user.login : "anon"}
); }) : null}
Back to chat
{members.map((login, i) => { return ( <>
{login?.avatar !== null ? ( ) : (
)}
{login?.login ? login.login : "anon"}
); })}
); }; export const CChatEditing = connect( (state) => ({ myProfile: state.promise.myProfile?.payload || {}, chatId: state.chats, foundUsers: state?.promise?.findUsers?.payload, }), { onChat: actionSetChatInfo, onGetUser: actionFindUsers, } )(ChatEditing);