added ConnectedFriends component

This commit is contained in:
srgooglo 2022-10-28 22:07:52 +00:00
parent 918298f89b
commit 163592b21c
3 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,59 @@
import React from "react"
import User from "models/user"
import UserPreview from "components/UserPreview"
import "./index.less"
export default (props) => {
const [connectedUsers, setConnectedUsers] = React.useState([])
const fetchConnectedFriends = async () => {
const result = await User.getConnectedUsersFollowing().catch((err) => {
console.error(err)
app.message.error("Failed to fetch connected friends")
return null
})
if (result) {
console.log(`Connected friends:`, result)
setConnectedUsers(result)
}
}
const wsEvents = {
"friend.connected": (user_id) => {
setConnectedUsers([...connectedUsers, user_id])
},
"friend.disconnected": (user_id) => {
setConnectedUsers(connectedUsers.filter((id) => id !== user_id))
}
}
React.useEffect(() => {
fetchConnectedFriends()
for (const [event, callback] of Object.entries(wsEvents)) {
window.app.api.namespaces["main"].listenEvent(event, callback)
}
return () => {
for (const [event, callback] of Object.entries(wsEvents)) {
window.app.api.namespaces["main"].unlistenEvent(event, callback)
}
}
}, [])
return <div className="connectedFriends">
{
connectedUsers.length === 0 ?
<span>No connected friends</span> :
connectedUsers.map((user_id) => {
return <div className="item">
<UserPreview user_id={user_id} />
</div>
})
}
</div>
}

View File

@ -0,0 +1,8 @@
.connectedFriends {
display: flex;
flex-direction: column;
.item {
margin-bottom: 10px;
}
}

View File

@ -50,6 +50,7 @@ export { default as CommentCreator } from "./CommentCreator"
// USERS
export { default as FollowersList } from "./FollowersList"
export { default as ConnectedFriends } from "./ConnectedFriends"
// OTHERS
export * as AdminTools from "./AdminTools"