From a41e557205cc7c5212458dacab393014b7fbccf4 Mon Sep 17 00:00:00 2001 From: "Nodal (Lunera)" Date: Wed, 30 Dec 2020 07:33:57 +0000 Subject: [PATCH 1/2] #533, replace linking code with event beforeInventoryLinkItem --- src/client/ui/templates/inventory/inventory.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/client/ui/templates/inventory/inventory.js b/src/client/ui/templates/inventory/inventory.js index ea632fe5..e76fa15c 100644 --- a/src/client/ui/templates/inventory/inventory.js +++ b/src/client/ui/templates/inventory/inventory.js @@ -143,15 +143,7 @@ define([ if (!forceCtrl && !input.isKeyDown('ctrl', true)) return; - client.request({ - cpn: 'social', - method: 'chat', - data: { - message: '{' + item.name + '}', - item: item, - type: 'global' - } - }); + events.emit('beforeInventoryLinkItem', msg); }, onMouseDown: function (el, item, down, e) { From d90a416b6906e3289a5b2e054930bb604444a181 Mon Sep 17 00:00:00 2001 From: "Nodal (Lunera)" Date: Wed, 30 Dec 2020 07:41:57 +0000 Subject: [PATCH 2/2] #533, move linking code and configure messages to properly handle party messages, and item data --- src/client/ui/templates/messages/messages.js | 25 ++++++++++++++--- src/server/components/social/chat.js | 28 ++++++++++++-------- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/client/ui/templates/messages/messages.js b/src/client/ui/templates/messages/messages.js index 4b88ac2c..ced12594 100644 --- a/src/client/ui/templates/messages/messages.js +++ b/src/client/ui/templates/messages/messages.js @@ -45,7 +45,8 @@ define([ 'onClickFilter', 'onGetCustomChatChannels', 'onKeyDown', - 'onKeyUp' + 'onKeyUp', + 'beforeInventoryLinkItem' ].forEach(e => this.onEvent(e, this[e].bind(this))); this.find('.filter:not(.channel)').on('click', this.onClickFilter.bind(this)); @@ -170,6 +171,20 @@ define([ elInput[0].setSelectionRange(0, 7); }, + beforeInventoryLinkItem: function (msg) { + //code for linking items from inventory + client.request({ + cpn: 'social', + method: 'chat', + data: { + message: '{' + msg.item.name + '}', + item: msg.item, + type: this.currentChannel, + subType: this.currentSubChannel + } + }); + }, + //Remember private and custom channels used trackHistory: function (msg) { const { subType, source, target, channel } = msg; @@ -211,8 +226,12 @@ define([ } if (m.item) { - let source = message.split(':')[0]; - message = source + ': ' + message.replace(source + ': ', '') + ''; + let parts = message.split(':'); + //assuming item names will never have a colon in them + let source = parts.slice(0, -1); + let rest = parts[parts.length - 1]; + + message = source.join(':') + ': ' + rest.trim() + ''; } let el = $('
' + message + '
') diff --git a/src/server/components/social/chat.js b/src/server/components/social/chat.js index 6a5bb32b..4fb203c0 100644 --- a/src/server/components/social/chat.js +++ b/src/server/components/social/chat.js @@ -38,22 +38,25 @@ const sendPartyMessage = ({ party, obj }, msg) => { return; } - let charname = obj.auth.charname; let message = msg.data.message; + const sendMessage = `(party: ${obj.auth.charname}): ${message}`; + const eventData = { + onGetMessages: [{ + messages: [{ + class: 'color-tealC', + message: sendMessage, + item: msg.data.item, + type: 'chat', + source: obj.name + }] + }] + }; + party.forEach(p => { let player = cons.players.find(c => c.id === p); - player.socket.emit('events', { - onGetMessages: [{ - messages: [{ - class: 'color-tealC', - message: '(party: ' + charname + '): ' + message, - type: 'chat', - source: obj.name - }] - }] - }); + player.socket.emit('events', eventData); }); }; @@ -84,6 +87,7 @@ const sendCustomChannelMessage = (cpnSocial, msg) => { messages: [{ class: 'color-grayB', message: sendMessage, + item: msg.data.item, type: 'chat', subType: 'custom', channel: channel.trim(), @@ -116,6 +120,7 @@ const sendPrivateMessage = ({ obj: { name: sourceName, socket } }, msg) => { messages: [{ class: 'color-yellowB', message: '(you to ' + targetName + '): ' + message, + item: msg.data.item, type: 'chat', subType: 'privateOut', target: targetName @@ -129,6 +134,7 @@ const sendPrivateMessage = ({ obj: { name: sourceName, socket } }, msg) => { messages: [{ class: 'color-yellowB', message: '(' + sourceName + ' to you): ' + message, + item: msg.data.item, type: 'chat', subType: 'privateIn', source: sourceName