From 15a3771e44c1abd923aee221422e943d1dae421e Mon Sep 17 00:00:00 2001 From: Monalisha Mishra <42746736+mishramonalisha76@users.noreply.github.com> Date: Fri, 8 Mar 2024 12:23:29 +0530 Subject: [PATCH] fix: added modify stream (#1159) --- .../src/app/ChatUITest/ChatViewComponent.tsx | 2 +- .../chat/ChatProfile/GroupInfoModal.tsx | 43 +++++++++++++------ .../src/lib/hooks/chat/usePushChatStream.ts | 9 +++- 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/packages/examples/sdk-frontend-react/src/app/ChatUITest/ChatViewComponent.tsx b/packages/examples/sdk-frontend-react/src/app/ChatUITest/ChatViewComponent.tsx index 72f09c750..d2c2501f6 100644 --- a/packages/examples/sdk-frontend-react/src/app/ChatUITest/ChatViewComponent.tsx +++ b/packages/examples/sdk-frontend-react/src/app/ChatUITest/ChatViewComponent.tsx @@ -20,7 +20,7 @@ const ChatViewComponentTest = () => { console.log("Verification Failed")} - chatId='0x56A734ba4C7c7b117774C9aAcCEf521eBE66d65b' + chatId='bd01307fa75e738842b474e0c0aa00385e9aa886ebd33ed246182141f377be5f' chatProfileLeftHelperComponent={console.debug('clicked')}/>} chatProfileRightHelperComponent={
right component
} diff --git a/packages/uiweb/src/lib/components/chat/ChatProfile/GroupInfoModal.tsx b/packages/uiweb/src/lib/components/chat/ChatProfile/GroupInfoModal.tsx index 84ab6a668..edc84ee61 100644 --- a/packages/uiweb/src/lib/components/chat/ChatProfile/GroupInfoModal.tsx +++ b/packages/uiweb/src/lib/components/chat/ChatProfile/GroupInfoModal.tsx @@ -513,14 +513,13 @@ export const GroupInfoModal = ({ const { chatAcceptStream, chatRejectStream, - chatRequestStream, participantRemoveStream, participantLeaveStream, participantJoinStream, groupUpdateStream, + participantRoleChangeStream, } = usePushChatStream(); - //stream listeners useEffect(() => { if ( @@ -562,7 +561,6 @@ export const GroupInfoModal = ({ })(); }, [participantJoinStream]); - useEffect(() => { if ( Object.keys(groupUpdateStream).length > 0 && @@ -571,6 +569,13 @@ export const GroupInfoModal = ({ transformGroupDetails(groupUpdateStream); }, [groupUpdateStream]); + useEffect(() => { + if ( + Object.keys(participantRoleChangeStream).length > 0 && + participantRoleChangeStream.constructor === Object + ) + transformRoleChange(participantRoleChangeStream); + }, [participantRoleChangeStream]); useEffect(() => { (async () => { const count = await fetchMembersCount({ chatId: groupInfo!.chatId! }); @@ -713,6 +718,14 @@ export const GroupInfoModal = ({ ), })); }; + const memberRoleChange = (item:any): void => { + const acceptedMember:ChatMemberProfile[] = groupMembers?.accepted.map(member => member.address == item.to[0] ? {...member, role:item.newRole} : member); + console.debug(acceptedMember) + setGroupMembers((prevMembers: MembersType) => ({ + ...prevMembers, + accepted: acceptedMember, + })); + }; const transformAcceptedRequest = (item: any): void => { if (item?.meta?.group && groupInfo?.chatId === item?.chatId) { @@ -766,18 +779,24 @@ export const GroupInfoModal = ({ // } // }; + const transformRoleChange = (item: any): void => { + if ( groupInfo?.chatId === item?.chatId) { + memberRoleChange(item) + + } + }; const transformGroupDetails = (item: any): void => { if ( groupInfo?.chatId === item?.chatId) { const updatedGroupInfo = groupInfo; - // console.debug(updatedGroupInfo) - // if(updatedGroupInfo){ - // updatedGroupInfo.groupName= item?.meta?.name; - // updatedGroupInfo.groupDescription=item?.meta?.description; - // updatedGroupInfo.groupImage=item?.meta?.image; - // updatedGroupInfo.groupCreator=item?.meta?.owner; - // updatedGroupInfo.isPublic=!item?.meta?.private; - // setGroupInfo(updatedGroupInfo); - // } + if(updatedGroupInfo){ + updatedGroupInfo.groupName= item?.meta?.name; + updatedGroupInfo.groupDescription=item?.meta?.description; + updatedGroupInfo.groupImage=item?.meta?.image; + updatedGroupInfo.groupCreator=item?.meta?.owner; + updatedGroupInfo.isPublic=!item?.meta?.private; + updatedGroupInfo.rules=item?.meta?.rules; + setGroupInfo(updatedGroupInfo); + } } }; diff --git a/packages/uiweb/src/lib/hooks/chat/usePushChatStream.ts b/packages/uiweb/src/lib/hooks/chat/usePushChatStream.ts index 8eab9f771..c76a137bb 100644 --- a/packages/uiweb/src/lib/hooks/chat/usePushChatStream.ts +++ b/packages/uiweb/src/lib/hooks/chat/usePushChatStream.ts @@ -19,13 +19,14 @@ export const usePushChatStream = () => { const [chatRejectStream, setChatRejectStream] = useState({}); // to track any rejected request const [chatRequestStream, setChatRequestStream] = useState({}); // any message in request + const [participantRoleChangeStream, setParticipantRoleChangeStream] = useState({}); // to track if a participant role is changed in a group + const [participantRemoveStream, setParticipantRemoveStream] = useState({}); // to track if a participant is removed from group const [participantLeaveStream, setParticipantLeaveStream] = useState({}); // to track if a participant leaves a group const [participantJoinStream, setParticipantJoinStream] = useState({}); // to track if a participant joins a group const [groupCreateStream, setGroupCreateStream] = useState({}); // to track if group is created const [groupUpdateStream, setGroupUpdateStream] = useState({}); //group updation stream -console.debug('in stream') const attachListenersAndConnect = async (stream: any) => { stream?.on(CONSTANTS.STREAM.CONNECT, (err: Error) => { console.debug(' stream connected .........',err) @@ -56,6 +57,9 @@ console.debug('in stream') else if (message.event === 'chat.group.participant.join') { setParticipantJoinStream(message); } + else if (message.event === 'chat.group.participant.role'){ + setParticipantRoleChangeStream(message); + } else if (message.event === 'chat.message') { setChatStream(message); @@ -64,13 +68,13 @@ console.debug('in stream') // Listen for group info stream?.on(CONSTANTS.STREAM.CHAT_OPS, (chatops: any) => { - console.debug(chatops) if (chatops.event === 'chat.group.update') { setGroupUpdateStream(chatops); } else if (chatops.event === 'chat.group.create') { setGroupCreateStream(chatops); } + }); console.debug('stream listeners attached'); @@ -138,6 +142,7 @@ console.debug('in stream') participantRemoveStream, participantLeaveStream, participantJoinStream, + participantRoleChangeStream, groupCreateStream }; }; \ No newline at end of file