reactjs 创建群聊功能

egdjgwm8  于 2023-01-12  发布在  React
关注(0)|答案(1)|浏览(114)

我对这个问题已经有一段时间感到震惊了,所以我来寻求帮助。我正在创建一个带有群聊功能的私人消息应用程序。我使用的是firebase 7.14.0(是的,我知道这是旧的)当你点击我的应用程序中的联系人,你可以创建一个群聊,这将创建另一个聊天,只有你在它(我知道这不是最优的,我只是想让功能先工作)然后在那个聊天中,你可以添加人到聊天中。
这是我需要帮助的代码。

import React, { useEffect, useState, useCallback } from 'react';
import firebase from "../firebase"
import { NavLink } from 'react-router-dom';
import { Avatar } from '@material-ui/core';
import './Gccontact.css';

const Gccontact = props => {
    const [contact, setContact] = useState()
    const [conversation, setConversation] = useState()

    const getContact = useCallback(async () => {
        const id = props.contact
        const db = firebase.db
        const unsubscribe = db.collection("users").doc(id).onSnapshot(snapshot => {
            setContact(snapshot.data())
        })
        return unsubscribe
    },[props.contact])

    

    useEffect(() => {
        getContact()
 
    }, [props])

    const addtogroup = useCallback(async uid => {
        const members = [contact.uid];
        await firebase.db.collection("conversations").doc('x8DGIeBhW96ziGh0MEGf').update({ members });
    }, []);

   /* db.collection("users").doc(currentUser.uid).update({
        status
    }) */

    return (
      
            <li className="contact">
                {contact && <div className="wrap" onClick={addtogroup}>
                    <span className={`contact-status ${contact.status}`}></span>
                    <div className="img-container">
                        <Avatar src={contact.profilePicture} alt={contact.name + " Profile Picture"} />
                    </div>
                    <div style={{display: "inline-block"}} className="meta">
                        <p className="display-name">{contact.name}</p>
                        {props.recent && <p className="preview">
                            {props.recent?.sender === firebase?.auth?.currentUser?.uid && <span>You: </span>} 
                            {props.recent?.attachments?.length === 0 ? props.recent?.body : "Picture"}
                        </p>}
                    </div>
                </div>}
            </li> 
        
    );
}

export default Gccontact;

这是联系人文件,当你点击联系人时,我希望它将他们添加到群聊中。当我尝试将成员添加到群聊中时,我收到一个错误消息,说contact.uid未定义,所以我尝试了contact.name,但它仍然不起作用。

await firebase.db.collection("conversations").doc('x8DGIeBhW96ziGh0MEGf').update({ members });

我不知道如何获得每个文档的ID,所以我有一个集合来测试。使用.update时,我注意到它会删除所有成员,只添加定义的一个。

yv5phkfx

yv5phkfx1#

或者,您可以使用第三方聊天API来避免许多麻烦。

相关问题