42 lines
774 B
CoffeeScript
42 lines
774 B
CoffeeScript
{EventEmitter} = require('events')
|
|
{User} = require('./user')
|
|
|
|
class @UserStore extends EventEmitter
|
|
constructor: ->
|
|
super()
|
|
@users = {}
|
|
|
|
add: (json, spark) ->
|
|
id = json.name || json
|
|
user = (@users[@key(id)] ||= new User(json))
|
|
user.addSpark(spark)
|
|
user
|
|
|
|
remove: (spark) ->
|
|
id = @key(spark.user.name)
|
|
user = @users[id]
|
|
if user
|
|
user.removeSpark(spark)
|
|
delete @users[id] unless user.hasSparks()
|
|
return user
|
|
|
|
contains: (id) ->
|
|
@get(id)?
|
|
|
|
get: (id) ->
|
|
@users[@key(id)]
|
|
|
|
getUsers: ->
|
|
(user for key, user of @users)
|
|
|
|
key: (id) ->
|
|
String(id).toLowerCase()
|
|
|
|
send: ->
|
|
for key, user of @users
|
|
user.send.apply(user, arguments)
|
|
|
|
toJSON: ->
|
|
for key, user of @users
|
|
user.toJSON()
|