deal with tournament trolls

This commit is contained in:
Thibault Duplessis 2014-02-01 10:05:27 +01:00
parent d2c1323b04
commit ea50250393
3 changed files with 15 additions and 2 deletions

View file

@ -190,5 +190,9 @@ object Tournament extends LilaController {
}
private def chatOf(tour: lila.tournament.Tournament)(implicit ctx: Context) =
ctx.isAuth ?? (Env.chat.api.userChat find tour.id map (_.some))
ctx.isAuth ?? {
Env.chat.api.userChat find tour.id map { chat
ctx.troll.fold(chat, chat.filterTroll).some
}
}
}

View file

@ -4,6 +4,8 @@ sealed trait AnyChat {
def id: ChatId
def lines: List[Line]
def filterTroll: AnyChat
def toJsonString = Line toJsonString lines
}
@ -15,11 +17,18 @@ sealed trait Chat[L <: Line] extends AnyChat {
case class UserChat(
id: ChatId,
lines: List[UserLine]) extends Chat[UserLine] {
def filterTroll = copy(lines = lines filterNot (_.troll))
}
case class MixedChat(
id: ChatId,
lines: List[Line]) extends Chat[Line] {
def filterTroll = copy(lines = lines filter {
case l: UserLine !l.troll
case l: PlayerLine true
})
}
object Chat {

View file

@ -12,7 +12,7 @@ trait Historical[M <: SocketMember] { self: SocketActor[M] ⇒
}
def sendMessage(message: History.Message)(member: M) {
if (!message.troll || member.troll) member.channel push message.msg.pp
if (!message.troll || member.troll) member.channel push message.msg
}
def sendMessage(member: M)(message: History.Message) {
sendMessage(message)(member)