46 lines
1.0 KiB
JavaScript
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
|