more chat refactoring

chatRefactor
Thibault Duplessis 2020-04-22 08:59:36 -06:00
parent f3e37779ce
commit b81180b875
4 changed files with 18 additions and 9 deletions

View File

@ -32,15 +32,6 @@ object RoomSocket {
case nv: NotifyVersion[_] =>
version = version.inc
send(Protocol.Out.tellRoomVersion(roomId, nv.msg, version, nv.troll))
case lila.chat.actorApi.ChatLine(_, line) =>
line match {
case line: UserLine => this ! NotifyVersion("message", lila.chat.JsonView(line), line.troll)
case _ =>
}
// case chatApi.OnTimeout(userId) =>
// this ! NotifyVersion("chat_timeout", userId, false)
// case chatApi.OnReinstate(userId) =>
// this ! NotifyVersion("chat_reinstate", userId, false)
}
override def stop() = {
super.stop()
@ -93,6 +84,18 @@ object RoomSocket {
}
}
def subscribeChat(rooms: TrouperMap[RoomState]) = {
import lila.chat.actorApi._
lila.common.Bus.subscribeFun("chat") {
case ChatLine(id, line: UserLine) =>
rooms.tellIfPresent(id.value, NotifyVersion("message", lila.chat.JsonView(line), line.troll))
case OnTimeout(id, userId) =>
rooms.tellIfPresent(id.value, NotifyVersion("chat_timeout", userId, false))
case OnReinstate(id, userId) =>
rooms.tellIfPresent(id.value, NotifyVersion("chat_reinstate", userId, false))
}
}
object Protocol {
object In {

View File

@ -46,6 +46,8 @@ final private class SimulSocket(
lazy val rooms = makeRoomMap(send)
subscribeChat(rooms)
private lazy val handler: Handler = roomHandler(rooms, chat, logger, roomId => _.Simul(roomId.value).some)
private lazy val send: String => Unit = remoteSocketApi.makeSender("simul-out").apply _

View File

@ -28,6 +28,8 @@ final private class StudySocket(
lazy val rooms = makeRoomMap(send)
subscribeChat(rooms)
def isPresent(studyId: Study.Id, userId: User.ID): Fu[Boolean] =
remoteSocketApi.request[Boolean](
id => send(Protocol.Out.getIsPresent(id, studyId, userId)),

View File

@ -67,6 +67,8 @@ final private class TournamentSocket(
lazy val rooms = makeRoomMap(send)
subscribeChat(rooms)
private lazy val handler: Handler =
roomHandler(rooms, chat, logger, roomId => _.Tournament(roomId.value).some)