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()
|