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
|