Skip to content

Instantly share code, notes, and snippets.

@hieptl
Created November 14, 2021 06:27
Show Gist options
  • Save hieptl/76b4085a8504014060bcbb524f0619b1 to your computer and use it in GitHub Desktop.
Save hieptl/76b4085a8504014060bcbb524f0619b1 to your computer and use it in GitHub Desktop.
RightSidebars.js - Listen to User Presence - Discord Clone
useEffect(() => {
if (cometChat && selectedChannel) {
listenUserPresense();
return () => {
if (cometChat) {
cometChat.removeUserListener(userPresenseListenerId);
}
}
}
}, [cometChat, selectedChannel]);
...
const updateMembers = (user) => {
if (!user) {
return;
}
setMembers(previousMembers => previousMembers.map(member => {
if (member && member.uid === user.uid) {
return { ...member, status: user.status === 'online' ? 'available' : 'offline' };
}
return { ...member };
}));
};
...
const listenUserPresense = () => {
cometChat.addUserListener(
userPresenseListenerId,
new cometChat.UserListener({
onUserOnline: onlineUser => {
updateMembers(onlineUser);
},
onUserOffline: offlineUser => {
updateMembers(offlineUser);
}
})
);
};
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment