send mod messages as lichess - for #2860

This commit is contained in:
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 => @thread.posts.map { post =>
<div class="thread_message embed_analyse" id="message_@post.id"> <div class="thread_message embed_analyse" id="message_@post.id">
<span class="infos"> <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> </span>
<div class="thread_message_body">@autoLink(post.text)</div> <div class="thread_message_body">@autoLink(post.text)</div>
</div> </div>

View file

@ -26,7 +26,7 @@ private[message] final class DataForm(security: MessageSecurity) {
user = fetchUser(username) err "Unknown username " + username, user = fetchUser(username) err "Unknown username " + username,
subject = subject, subject = subject,
text = text, text = text,
mod = mod.isDefined asMod = mod.isDefined
) )
})(_.export.some)) })(_.export.some))
@ -43,9 +43,9 @@ object DataForm {
user: User, user: User,
subject: String, subject: String,
text: 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, name = data.subject,
text = data.text, text = data.text,
creatorId = me.id, creatorId = me.id,
invitedId = data.user.id invitedId = data.user.id,
asMod = data.asMod
) )
muteThreadIfNecessary(t, me, invited, data) flatMap { thread => muteThreadIfNecessary(t, me, invited, data) flatMap { thread =>
sendUnlessBlocked(thread, fromMod) flatMap { sendUnlessBlocked(thread, fromMod) flatMap {
@ -110,7 +111,7 @@ final class MessageApi(
notifyApi addNotification Notification.make( notifyApi addNotification Notification.make(
Notification.Notifies(thread receiverOf post), Notification.Notifies(thread receiverOf post),
PrivateMessage( PrivateMessage(
PrivateMessage.SenderId(thread senderOf post), PrivateMessage.SenderId(thread visibleSenderOf post),
PrivateMessage.Thread(id = thread.id, name = shorten(thread.name, 80)), PrivateMessage.Thread(id = thread.id, name = shorten(thread.name, 80)),
PrivateMessage.Text(shorten(post.text, 80)) PrivateMessage.Text(shorten(post.text, 80))
) )

View file

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