Skip to content

Instantly share code, notes, and snippets.

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