Skip to content

Commit

Permalink
auto process line flags report after a timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
ornicar committed Feb 6, 2025
1 parent 18cc16c commit 295cb65
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
4 changes: 2 additions & 2 deletions modules/core/src/main/security.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import play.api.mvc.RequestHeader
import lila.core.email.EmailAddress
import lila.core.net.IpAddress
import lila.core.user.User
import lila.core.userId.{ UserId, UserName }
import lila.core.userId.{ UserId, UserName, MyId }

case class GarbageCollect(userId: UserId)
case class CloseAccount(userId: UserId)
case class DeletePublicChats(userId: UserId)
case class DeletePublicChats(userId: UserId)(using val me: MyId)

trait LilaCookie:
import play.api.mvc.*
Expand Down
5 changes: 3 additions & 2 deletions modules/mod/src/main/Env.scala
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,9 @@ final class Env(
"analysisReady" -> { case lila.analyse.actorApi.AnalysisReady(game, analysis) =>
assessApi.onAnalysisReady(game, analysis)
},
"deletePublicChats" -> { case lila.core.security.DeletePublicChats(userId) =>
publicChat.deleteAll(userId)
"deletePublicChats" -> { case d: lila.core.security.DeletePublicChats =>
publicChat.deleteAll(d.userId)
reportApi.autoProcessRecentChatFlags(SuspectId(d.userId))(using d.me)
},
"autoWarning" -> { case lila.core.mod.AutoWarning(userId, subject) =>
logApi.modMessage(userId, subject)(using UserId.lichessAsMe)
Expand Down
24 changes: 18 additions & 6 deletions modules/report/src/main/ReportApi.scala
Original file line number Diff line number Diff line change
Expand Up @@ -283,9 +283,7 @@ final class ReportApi(
deletedAppeal <- deleteIfAppealInquiry(report)
_ <- (!deletedAppeal).so:
doProcessReport($id(report.id), unsetInquiry = true)
yield
maxScoreCache.invalidateUnit()
lila.mon.mod.report.close.increment()
yield onReportClose()

def autoProcess(sus: Suspect, rooms: Set[Room])(using MyId): Funit =
val selector = $doc(
Expand All @@ -294,9 +292,23 @@ final class ReportApi(
"open" -> true
)
for _ <- doProcessReport(selector, unsetInquiry = true)
yield
maxScoreCache.invalidateUnit()
lila.mon.mod.report.close.increment()
yield onReportClose()

def autoProcessRecentChatFlags(sus: SuspectId)(using MyId): Funit = for
opt <- coll.one[Report]:
$doc(
"user" -> sus.value,
"room" -> Room.Comm,
"open" -> true
)
rep = opt.filter(_.atoms.toList.forall(_.isFlag))
_ <- rep.so: r =>
doProcessReport($id(r.id), unsetInquiry = true)
yield if rep.isDefined then onReportClose()

private def onReportClose() =
maxScoreCache.invalidateUnit()
lila.mon.mod.report.close.increment()

private def deleteIfAppealInquiry(report: Report)(using me: MyId): Fu[Boolean] =
if report.isAppealInquiryByMe
Expand Down

0 comments on commit 295cb65

Please sign in to comment.