Persil/src/Users.js

46 lines
1.0 KiB
JavaScript

import messages from './Messages.js'
import UserComponent from './components/user.js'
customElements.define('c-user', UserComponent)
class Users {
constructor () {
this.parent = document.getElementById('users')
this.users = {}
}
add (user, client) {
if(user.channel?.name === client.self.channel.name)
{
if(! this.users[user.username])
{
messages.addInfo(`${user.username} is connected`)
const element = document.createElement('c-user')
element.setAttribute('username', user.username)
this.parent.appendChild(element)
this.users[user.username] = element
user.on('remove', () => this.remove(user))
}
}
else
{
this.remove(user)
}
user.on('update', () => this.add(user,client))
}
remove(user)
{
if(this.users[user.username])
{
messages.addInfo(`${user.username} has gone`)
this.users[user.username].remove()
delete this.users[user.username]
}
}
}
const users = new Users()
export default users