diff options
| author | stonedDiscord <Tukz@gmx.de> | 2022-03-26 00:52:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-26 00:52:12 +0100 |
| commit | feb7789f9a7988971135ae47a425dafa276008e7 (patch) | |
| tree | 9c4865f30e0b42ee9e85f041fb8b1715865653a1 /webAO/client.js | |
| parent | d1472f152c8ca9de8d790f9cc88e79d1e3b11be6 (diff) | |
| parent | 3b697cd8dba78e840e9d85380bf4e8dab0d7c672 (diff) | |
Merge pull request #131 from AttorneyOnline/saveIcChatlog
Added support for saving chatlog
Diffstat (limited to 'webAO/client.js')
| -rw-r--r-- | webAO/client.js | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/webAO/client.js b/webAO/client.js index 06defa2..7d6caab 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; @@ -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}#%`); + } } /** @@ -559,11 +573,37 @@ 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) { + // TODO: this if-statement might be a bug. if (args[4] !== viewport.chatmsg.content) { document.getElementById('client_inner_chat').innerHTML = ''; @@ -699,8 +739,7 @@ class Client extends EventEmitter { if (chatmsg.charid === this.charID) { resetICParams(); } - - viewport.say(chatmsg); // no await + viewport.say(chatmsg); // no await } } } @@ -717,6 +756,7 @@ class Client extends EventEmitter { oocLog.scrollTop = oocLog.scrollHeight; } } + } /** |
