Title improvements
- Disallow LM for titles only condition - validate titles before setting on user (@ProgramFox) - mod log format cleanup
This commit is contained in:
parent
e546857221
commit
feff667f78
|
@ -229,7 +229,7 @@
|
|||
@if(history.nonEmpty) {
|
||||
<ul>
|
||||
@history.map { e =>
|
||||
<li>@userIdLink(e.mod.some) <b>@e.showAction</b> @u.username @e.details @momentFromNow(e.date)</li>
|
||||
<li>@userIdLink(e.mod.some, withTitle=false) <b>@e.showAction</b> @e.details @momentFromNow(e.date)</li>
|
||||
}
|
||||
</ul>
|
||||
<br />
|
||||
|
|
|
@ -107,9 +107,18 @@ final class ModApi(
|
|||
}
|
||||
|
||||
def setTitle(mod: String, username: String, title: Option[String]): Funit = withUser(username) { user =>
|
||||
UserRepo.setTitle(user.id, title) >>
|
||||
logApi.setTitle(mod, user.id, title) >>-
|
||||
lightUserApi.invalidate(user.id)
|
||||
title match {
|
||||
case None => {
|
||||
UserRepo.removeTitle(user.id) >>-
|
||||
logApi.removeTitle(mod, user.id) >>-
|
||||
lightUserApi.invalidate(user.id)
|
||||
}
|
||||
case Some(t) => User.titlesMap.get(t) ?? { tFull =>
|
||||
UserRepo.addTitle(user.id, t) >>-
|
||||
logApi.addTitle(mod, user.id, s"$t ($tFull)") >>-
|
||||
lightUserApi.invalidate(user.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def setEmail(mod: String, username: String, email: EmailAddress): Funit = withUser(username) { user =>
|
||||
|
|
|
@ -41,9 +41,12 @@ final class ModlogApi(coll: Coll) {
|
|||
Modlog(mod, user.some, Modlog.reopenAccount)
|
||||
}
|
||||
|
||||
def setTitle(mod: String, user: String, title: Option[String]) = add {
|
||||
val name = title flatMap lila.user.User.titlesMap.get
|
||||
Modlog(mod, user.some, name.isDefined.fold(Modlog.setTitle, Modlog.removeTitle), details = name)
|
||||
def addTitle(mod: String, user: String, title: String) = add {
|
||||
Modlog(mod, user.some, Modlog.setTitle, title.some)
|
||||
}
|
||||
|
||||
def removeTitle(mod: String, user: String) = add {
|
||||
Modlog(mod, user.some, Modlog.removeTitle)
|
||||
}
|
||||
|
||||
def setEmail(mod: String, user: String) = add {
|
||||
|
|
|
@ -32,7 +32,7 @@ object Condition {
|
|||
case object Titled extends Condition with FlatCond {
|
||||
def name(lang: Lang) = "Only titled players"
|
||||
def apply(user: User) =
|
||||
if (user.hasTitle) Accepted
|
||||
if (user.title.exists(_ != "LM")) Accepted
|
||||
else Refused(name _)
|
||||
}
|
||||
|
||||
|
|
|
@ -166,10 +166,11 @@ object UserRepo {
|
|||
$set(F.profile -> Profile.profileBSONHandler.write(profile))
|
||||
).void
|
||||
|
||||
def setTitle(id: ID, title: Option[String]): Funit = title match {
|
||||
case Some(t) => coll.updateField($id(id), F.title, t).void
|
||||
case None => coll.update($id(id), $unset(F.title)).void
|
||||
}
|
||||
def addTitle(id: ID, title: String): Funit =
|
||||
coll.updateField($id(id), F.title, title).void
|
||||
|
||||
def removeTitle(id: ID): Funit =
|
||||
coll.unsetField($id(id), F.title).void
|
||||
|
||||
def setPlayTime(id: ID, playTime: User.PlayTime): Funit =
|
||||
coll.update($id(id), $set(F.playTime -> User.playTimeHandler.write(playTime))).void
|
||||
|
|
Loading…
Reference in a new issue