From 502a472ea297e3c170dd74c1a4542f492cf2ea3d Mon Sep 17 00:00:00 2001 From: Caleb Mabry Date: Fri, 25 Mar 2022 00:15:36 -0400 Subject: Added support for saving chatlog --- webAO/client.js | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 6a2947c..10153f6 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -29,7 +29,7 @@ import queryParser from './utils/queryParser.js'; import getAnimLength from './utils/getAnimLength.js'; import getResources from './utils/getResources.js'; import transparentPng from './constants/transparentPng'; - +import downloadFile from './services/downloadFile' const version = process.env.npm_package_version; let client; @@ -559,13 +559,51 @@ class Client extends EventEmitter { } } + saveChatlogHandle = async () => { + const clientLog = document.getElementById('client_log') + const icMessageLogs = clientLog.getElementsByTagName('p') + const messages = [] + + for (let i = 0; i < icMessageLogs.length; i++) { + const SHOWNAME_POSITION = 0 + const TEXT_POSITION = 2 + const showname = icMessageLogs[i].children[SHOWNAME_POSITION].innerHTML + const text = icMessageLogs[i].children[TEXT_POSITION].innerHTML + const message = `${showname}: ${text}` + messages.push(message) + } + const d = new Date(); + let ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d); + let mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d); + let da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d); + + const filename = `chatlog-${da}-${mo}-${ye}`.toLowerCase() + downloadFile(messages.join('\n'), filename) + + // Reset Chatbox to Empty + document.getElementById('client_inputbox').value = ''; + } + /** * Handles an in-character chat message. * @param {*} args packet arguments */ handleMS(args) { + const msMessage = args[5] + const commands = { + '/save_chatlog': this.saveChatlogHandle + } + const commandsMap = new Map(Object.entries(commands)) + + if (msMessage && commandsMap.has(msMessage.toLowerCase())) { + try { + commandsMap.get(msMessage.toLowerCase())() + } catch (e) { + // Command Not Recognized + } + } // TODO: this if-statement might be a bug. - if (args[4] !== viewport.chatmsg.content) { + else if (args[4] !== viewport.chatmsg.content) { document.getElementById('client_inner_chat').innerHTML = ''; const char_id = Number(args[9]); @@ -699,8 +737,7 @@ class Client extends EventEmitter { if (chatmsg.charid === this.charID) { resetICParams(); } - - viewport.say(chatmsg); // no await + viewport.say(chatmsg); // no await } } } -- cgit From 3b697cd8dba78e840e9d85380bf4e8dab0d7c672 Mon Sep 17 00:00:00 2001 From: Caleb Mabry Date: Fri, 25 Mar 2022 13:56:27 -0400 Subject: Moving command check to OOC --- webAO/client.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'webAO/client.js') diff --git a/webAO/client.js b/webAO/client.js index 10153f6..9b11a49 100644 --- a/webAO/client.js +++ b/webAO/client.js @@ -232,7 +232,21 @@ class Client extends EventEmitter { setCookie('OOC_name', document.getElementById('OOC_name').value); const oocName = `${escapeChat(encodeChat(document.getElementById('OOC_name').value))}`; const oocMessage = `${escapeChat(encodeChat(message))}`; - this.sendServer(`CT#${oocName}#${oocMessage}#%`); + + const commands = { + '/save_chatlog': this.saveChatlogHandle + } + const commandsMap = new Map(Object.entries(commands)) + + if (oocMessage && commandsMap.has(oocMessage.toLowerCase())) { + try { + commandsMap.get(oocMessage.toLowerCase())() + } catch (e) { + // Command Not Recognized + } + } else { + this.sendServer(`CT#${oocName}#${oocMessage}#%`); + } } /** @@ -589,21 +603,9 @@ class Client extends EventEmitter { * @param {*} args packet arguments */ handleMS(args) { - const msMessage = args[5] - const commands = { - '/save_chatlog': this.saveChatlogHandle - } - const commandsMap = new Map(Object.entries(commands)) - if (msMessage && commandsMap.has(msMessage.toLowerCase())) { - try { - commandsMap.get(msMessage.toLowerCase())() - } catch (e) { - // Command Not Recognized - } - } // TODO: this if-statement might be a bug. - else if (args[4] !== viewport.chatmsg.content) { + if (args[4] !== viewport.chatmsg.content) { document.getElementById('client_inner_chat').innerHTML = ''; const char_id = Number(args[9]); @@ -754,6 +756,7 @@ class Client extends EventEmitter { oocLog.scrollTop = oocLog.scrollHeight; } } + } /** -- cgit