send mod messages as lichess - for #2860

pull/2861/head
Thibault Duplessis 2017-03-28 13:37:37 +02:00
parent b6b152f965
commit 524c0702a9
4 changed files with 21 additions and 9 deletions

View File

@ -16,7 +16,7 @@ title = thread.name) {
@thread.posts.map { post =>
<div class="thread_message embed_analyse" id="message_@post.id">
<span class="infos">
@userIdLink(thread.senderOf(post), none) <span data-icon="H"></span> @userIdLink(thread.receiverOf(post), "inline".some) - @momentFormat(post.createdAt)
@userIdLink(thread.visibleSenderOf(post), none) <span data-icon="H"></span> @userIdLink(thread.visibleReceiverOf(post), "inline".some) - @momentFormat(post.createdAt)
</span>
<div class="thread_message_body">@autoLink(post.text)</div>
</div>

View File

@ -26,7 +26,7 @@ private[message] final class DataForm(security: MessageSecurity) {
user = fetchUser(username) err "Unknown username " + username,
subject = subject,
text = text,
mod = mod.isDefined
asMod = mod.isDefined
)
})(_.export.some))
@ -43,9 +43,9 @@ object DataForm {
user: User,
subject: String,
text: String,
mod: Boolean
asMod: Boolean
) {
def export = (user.username, subject, text, mod option "1")
def export = (user.username, subject, text, asMod option "1")
}
}

View File

@ -42,7 +42,8 @@ final class MessageApi(
name = data.subject,
text = data.text,
creatorId = me.id,
invitedId = data.user.id
invitedId = data.user.id,
asMod = data.asMod
)
muteThreadIfNecessary(t, me, invited, data) flatMap { thread =>
sendUnlessBlocked(thread, fromMod) flatMap {
@ -110,7 +111,7 @@ final class MessageApi(
notifyApi addNotification Notification.make(
Notification.Notifies(thread receiverOf post),
PrivateMessage(
PrivateMessage.SenderId(thread senderOf post),
PrivateMessage.SenderId(thread visibleSenderOf post),
PrivateMessage.Thread(id = thread.id, name = shorten(thread.name, 80)),
PrivateMessage.Text(shorten(post.text, 80))
)

View File

@ -13,7 +13,8 @@ case class Thread(
posts: List[Post],
creatorId: String,
invitedId: String,
visibleByUserIds: List[String]
visibleByUserIds: List[String],
asMod: Boolean
) {
def +(post: Post) = copy(
@ -54,8 +55,16 @@ case class Thread(
def senderOf(post: Post) = post.isByCreator.fold(creatorId, invitedId)
def visibleSenderOf(post: Post) =
if (post.isByCreator && asMod) "lichess"
else senderOf(post)
def receiverOf(post: Post) = post.isByCreator.fold(invitedId, creatorId)
def visibleReceiverOf(post: Post) =
if (!post.isByCreator && asMod) "lichess"
else receiverOf(post)
def isWrittenBy(post: Post, user: User) = post.isByCreator == isCreator(user)
def nonEmptyName = (name.trim.some filter (_.nonEmpty)) | "No subject"
@ -79,7 +88,8 @@ object Thread {
name: String,
text: String,
creatorId: String,
invitedId: String
invitedId: String,
asMod: Boolean
): Thread = Thread(
_id = Random nextString idSize,
name = name,
@ -91,7 +101,8 @@ object Thread {
)),
creatorId = creatorId,
invitedId = invitedId,
visibleByUserIds = List(creatorId, invitedId)
visibleByUserIds = List(creatorId, invitedId),
asMod = asMod
)
import lila.db.dsl.BSONJodaDateTimeHandler