53 lines
1.1 KiB
CoffeeScript
53 lines
1.1 KiB
CoffeeScript
{_} = require 'underscore'
|
|
|
|
class @User
|
|
constructor: (attributes) ->
|
|
if _.isObject(attributes)
|
|
{@id, @name, @authority} = attributes
|
|
else
|
|
@id = attributes
|
|
@name ?= @id
|
|
@sparks = []
|
|
|
|
addSpark: (spark) ->
|
|
unless @hasSpark(spark)
|
|
@sparks.push(spark)
|
|
spark.user = this
|
|
|
|
removeSpark: (spark) ->
|
|
index = @sparks.indexOf(spark)
|
|
@sparks.splice(index, 1) if index != -1
|
|
|
|
hasSpark: (spark) ->
|
|
spark in @sparks
|
|
|
|
hasSparks: ->
|
|
@sparks.length >= 1
|
|
|
|
toJSON: (options = {}) ->
|
|
displayedName = options.alt ? @name
|
|
isAlt = (displayedName != @name)
|
|
json = {
|
|
'id': displayedName
|
|
}
|
|
if isAlt
|
|
json['isAlt'] = true
|
|
else
|
|
json['authority'] = @authority if @authority
|
|
json
|
|
|
|
send: ->
|
|
spark.send.apply(spark, arguments) for spark in @sparks
|
|
|
|
error: (args...) ->
|
|
@send("errorMessage", args...)
|
|
|
|
message: (roomId, msg) ->
|
|
@send("rawMessage", roomId, msg)
|
|
|
|
announce: (roomId, klass, msg) ->
|
|
@send("announce", roomId, klass, msg)
|
|
|
|
close: ->
|
|
spark.end() for spark in @sparks
|