From aac23f30cf516704bf2b50a2ec7742aade5e6057 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 26 Nov 2018 10:45:42 +0100 Subject: [PATCH] Attach client to chat messages (#10845) * Attach client to chat messages * Word * Design tweaks * Fix potential error --- website/client/components/chat/chatCard.vue | 3 ++- website/server/controllers/api-v3/chat.js | 6 +++++- website/server/models/group.js | 4 ++-- website/server/models/message.js | 4 +++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/website/client/components/chat/chatCard.vue b/website/client/components/chat/chatCard.vue index 0a1dde02c0..e1dfadb0bc 100644 --- a/website/client/components/chat/chatCard.vue +++ b/website/client/components/chat/chatCard.vue @@ -15,7 +15,8 @@ div p.time span.mr-1(v-if="msg.username") @{{ msg.username }} span.mr-1(v-if="msg.username") • - span(v-b-tooltip="", :title="msg.timestamp | date") {{ msg.timestamp | timeAgo }} + span(v-b-tooltip="", :title="msg.timestamp | date") {{ msg.timestamp | timeAgo }}  + span(v-if="msg.client && user.contributor.level >= 4") ({{ msg.client }}) .text(v-html='atHighlight(parseMarkdown(msg.text))', ref='markdownContainer') hr .d-flex(v-if='msg.id') diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index 42a132483e..836d73accb 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -177,7 +177,11 @@ api.postChat = { } const message = await highlightMentions(req.body.message); - const newChatMessage = group.sendChat(message, user); + let client = req.headers['x-client'] || '3rd Party'; + if (client) { + client = client.replace('habitica-', ''); + } + const newChatMessage = group.sendChat(message, user, null, client); let toSave = [newChatMessage.save()]; if (group.type === 'party') { diff --git a/website/server/models/group.js b/website/server/models/group.js index 1bae6115f9..9a0d4c2d29 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -480,8 +480,8 @@ schema.methods.getMemberCount = async function getMemberCount () { return await User.count(query).exec(); }; -schema.methods.sendChat = function sendChat (message, user, metaData) { - let newMessage = messageDefaults(message, user); +schema.methods.sendChat = function sendChat (message, user, metaData, client) { + let newMessage = messageDefaults(message, user, client); let newChatMessage = new Chat(); newChatMessage = Object.assign(newChatMessage, newMessage); newChatMessage.groupId = this._id; diff --git a/website/server/models/message.js b/website/server/models/message.js index 2ba3235c39..f93d90ccb6 100644 --- a/website/server/models/message.js +++ b/website/server/models/message.js @@ -19,6 +19,7 @@ const defaultSchema = () => ({ flags: {$type: mongoose.Schema.Types.Mixed, default: {}}, flagCount: {$type: Number, default: 0}, likes: {$type: mongoose.Schema.Types.Mixed}, + client: String, _meta: {$type: mongoose.Schema.Types.Mixed}, }); @@ -100,7 +101,7 @@ export function setUserStyles (newMessage, user) { newMessage.markModified('userStyles'); } -export function messageDefaults (msg, user) { +export function messageDefaults (msg, user, client) { const id = uuid(); const message = { id, @@ -110,6 +111,7 @@ export function messageDefaults (msg, user) { likes: {}, flags: {}, flagCount: 0, + client, }; if (user) {