From f64030f631d929bc15cba74db578608d2a48b1c4 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 5 May 2021 09:14:51 +0200 Subject: [PATCH] allow simul hosts to timeout chat users - closes #8855 --- app/views/simul/show.scala | 3 ++- modules/simul/src/main/SimulRepo.scala | 3 +++ modules/simul/src/main/SimulSocket.scala | 11 ++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/views/simul/show.scala b/app/views/simul/show.scala index 42c54fb77c..cb9ed81e8c 100644 --- a/app/views/simul/show.scala +++ b/app/views/simul/show.scala @@ -35,7 +35,8 @@ object show { name = trans.chatRoom.txt(), timeout = c.timeout, public = true, - resourceId = lila.chat.Chat.ResourceId(s"simul/${c.chat.id}") + resourceId = lila.chat.Chat.ResourceId(s"simul/${c.chat.id}"), + localMod = ctx.userId has sim.hostId ) } ) diff --git a/modules/simul/src/main/SimulRepo.scala b/modules/simul/src/main/SimulRepo.scala index 6124c87ecd..9a994f4a6c 100644 --- a/modules/simul/src/main/SimulRepo.scala +++ b/modules/simul/src/main/SimulRepo.scala @@ -80,6 +80,9 @@ final private[simul] class SimulRepo(val coll: Coll)(implicit ec: scala.concurre .cursor[Simul]() .list() + def hostId(id: Simul.ID): Fu[Option[User.ID]] = + coll.primitiveOne[User.ID]($id(id), "hostId") + private val featurableSelect = $doc("featurable" -> true) def allCreatedFeaturable: Fu[List[Simul]] = diff --git a/modules/simul/src/main/SimulSocket.scala b/modules/simul/src/main/SimulSocket.scala index 724821ae6d..3a8bb396d2 100644 --- a/modules/simul/src/main/SimulSocket.scala +++ b/modules/simul/src/main/SimulSocket.scala @@ -59,7 +59,16 @@ final private class SimulSocket( subscribeChat(rooms, _.Simul) private lazy val handler: Handler = - roomHandler(rooms, chat, logger, roomId => _.Simul(roomId.value).some, chatBusChan = _.Simul) + roomHandler( + rooms, + chat, + logger, + roomId => _.Simul(roomId.value).some, + chatBusChan = _.Simul, + localTimeout = Some { (roomId, modId, _) => + repo.hostId(roomId.value).map(_ has modId) + } + ) private lazy val send: String => Unit = remoteSocketApi.makeSender("simul-out").apply _