Several fixes
- Added msg delay on connect to space out commands - Fixed linewrap issue - Added MRC Trust verbs - Added PM local echo - Fixed to_user and from_user uppercase
This commit is contained in:
72
core/mrc.js
72
core/mrc.js
@@ -275,21 +275,7 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
const chatLogView = this.viewControllers.mrcChat.getView(
|
||||
MciViewIds.mrcChat.chatLog
|
||||
);
|
||||
const messageLength = stripMciColorCodes(msg).length;
|
||||
const chatWidth = chatLogView.dimens.width;
|
||||
let padAmount = 0;
|
||||
let spaces = 2;
|
||||
|
||||
if (messageLength > chatWidth) {
|
||||
padAmount = chatWidth - (messageLength % chatWidth) - spaces;
|
||||
} else {
|
||||
padAmount = chatWidth - messageLength - spaces;
|
||||
}
|
||||
|
||||
if (padAmount < 0) padAmount = 0;
|
||||
|
||||
const padding = ' |00' + ' '.repeat(padAmount);
|
||||
chatLogView.addText(pipeToAnsi(msg + padding));
|
||||
chatLogView.addText(pipeToAnsi(msg));
|
||||
|
||||
if (chatLogView.getLineCount() > this.config.maxScrollbackLines) {
|
||||
chatLogView.deleteLine(0);
|
||||
@@ -380,7 +366,7 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
|
||||
// Deliver PrivMsg
|
||||
else if (
|
||||
message.to_user.toLowerCase() == this.state.alias.toLowerCase()
|
||||
message.to_user.toUpperCase() == this.state.alias.toUpperCase()
|
||||
) {
|
||||
const currentTime = moment().format(
|
||||
this.client.currentTheme.helpers.getTimeFormat()
|
||||
@@ -450,6 +436,14 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
} else {
|
||||
// pm
|
||||
formattedMessage = stringFormat(privateMessageFormat, textFormatObj);
|
||||
|
||||
// Echo PrivMSG to chat log (the server does not echo it back)
|
||||
const currentTime =moment().format(
|
||||
this.client.currentTheme.helpers.getTimeFormat()
|
||||
);
|
||||
this.addMessageToChatLog(
|
||||
'|08' + currentTime + '|00 ' + formattedMessage + '|00'
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -562,6 +556,7 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
/**
|
||||
* Process known additional server commands directly
|
||||
*/
|
||||
|
||||
case 'afk':
|
||||
this.sendServerMessage(`AFK ${message.substr(5)}`);
|
||||
break;
|
||||
@@ -594,6 +589,30 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
this.sendServerMessage(cmd[0].toUpperCase());
|
||||
break;
|
||||
|
||||
/**
|
||||
* MRC Trust commands
|
||||
*/
|
||||
|
||||
case 'trust':
|
||||
this.sendServerMessage(`REGISTER ${message.substr(7)}`);
|
||||
break;
|
||||
|
||||
case 'register':
|
||||
this.sendServerMessage(`REGISTER ${message.substr(10)}`);
|
||||
break;
|
||||
|
||||
case 'identify':
|
||||
this.sendServerMessage(`IDENTIFY ${message.substr(10)}`);
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
this.sendServerMessage(`UPDATE ${message.substr(8)}`);
|
||||
break;
|
||||
|
||||
/**
|
||||
* Local client commands
|
||||
*/
|
||||
|
||||
case 'quit':
|
||||
return this.prevMenu();
|
||||
|
||||
@@ -665,13 +684,26 @@ exports.getModule = class mrcModule extends MenuModule {
|
||||
this.sendServerMessage('USERLIST');
|
||||
}
|
||||
|
||||
/**
|
||||
* MRC Server flood protection requires messages to be spaced in time
|
||||
*/
|
||||
msgDelay(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
/**
|
||||
* Things that happen when a local user connects to the MRC multiplexer
|
||||
*/
|
||||
clientConnect() {
|
||||
this.sendServerMessage('MOTD');
|
||||
this.joinRoom('lobby');
|
||||
this.sendServerMessage('STATS');
|
||||
async clientConnect() {
|
||||
this.sendHeartbeat();
|
||||
await this.msgDelay(100);
|
||||
|
||||
this.sendServerMessage('MOTD');
|
||||
await this.msgDelay(100);
|
||||
|
||||
this.joinRoom('lobby');
|
||||
await this.msgDelay(100);
|
||||
|
||||
this.sendServerMessage('STATS');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@ const os = require('os');
|
||||
|
||||
// MRC
|
||||
const clientVersion = '1.3.1';
|
||||
const lineDelimiter = new RegExp('\r\n|\r|\n'); // eslint-disable-line no-control-regex
|
||||
const lineDelimiter = new RegExp('\r\n|\r|\n|\n\r'); // eslint-disable-line no-control-regex
|
||||
|
||||
const ModuleInfo = (exports.moduleInfo = {
|
||||
name: 'MRC',
|
||||
@@ -327,7 +327,7 @@ exports.getModule = class MrcModule extends ServerModule {
|
||||
* Takes an MRC message and parses it into something usable
|
||||
*/
|
||||
parseMessage(line) {
|
||||
const [from_user, from_site, from_room, to_user, to_site, to_room, body] =
|
||||
let [from_user, from_site, from_room, to_user, to_site, to_room, body] =
|
||||
line.split('~');
|
||||
|
||||
// const msg = line.split('~');
|
||||
@@ -335,11 +335,9 @@ exports.getModule = class MrcModule extends ServerModule {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// Make sure to_user is always uppercase
|
||||
try {
|
||||
to_user = to_user.toUpperCase();
|
||||
}
|
||||
catch (e) {}
|
||||
// Make sure to_user and from_user are always uppercase
|
||||
to_user = (to_user || '').toUpperCase();
|
||||
from_user = (from_user || '').toUpperCase();
|
||||
|
||||
return { from_user, from_site, from_room, to_user, to_site, to_room, body };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user