Send blockpms and blockchallenges status in |updateuser| (#5422)

This commit is contained in:
Kirk Scheibelhut 2019-04-07 10:43:12 -07:00 committed by Guangcong Luo
parent 32a457c808
commit e1356c055b
5 changed files with 44 additions and 33 deletions

View File

@ -227,11 +227,12 @@ represented by a space), and the rest of the string being their username.
> Finish logging in (or renaming) by sending: `/trn USERNAME,0,ASSERTION` > Finish logging in (or renaming) by sending: `/trn USERNAME,0,ASSERTION`
> where `USERNAME` is your desired username and `ASSERTION` is `data.assertion`. > where `USERNAME` is your desired username and `ASSERTION` is `data.assertion`.
`|updateuser|USERNAME|NAMED|AVATAR` `|updateuser|USERNAME|NAMED|AVATAR|SETTINGS`
> Your name or avatar was successfully changed. Your username is now `USERNAME`. > Your name, avatar or settings were successfully changed. Your username is
> `NAMED` will be `0` if you are a guest or `1` otherwise. And your avatar is > now `USERNAME`. `NAMED` will be `0` if you are a guest or `1` otherwise. Your
> now `AVATAR`. > avatar is now `AVATAR`. `SETTINGS` is a JSON object representing the current
> state of various user settings.
`|formats|FORMATSLIST` `|formats|FORMATSLIST`

View File

@ -550,7 +550,7 @@ const commands = {
if (!targetUser || !targetUser.connected) return this.errorReply(`User ${this.targetUsername} is not currently online.`); if (!targetUser || !targetUser.connected) return this.errorReply(`User ${this.targetUsername} is not currently online.`);
if (!(targetUser in room.users) && !user.can('addhtml')) return this.errorReply("You do not have permission to use this command to users who are not in this room."); if (!(targetUser in room.users) && !user.can('addhtml')) return this.errorReply("You do not have permission to use this command to users who are not in this room.");
if (targetUser.ignorePMs && targetUser.ignorePMs !== user.group && !user.can('lock')) return this.errorReply("This user is currently ignoring PMs."); if (targetUser.blockPMs && targetUser.blockPMs !== user.group && !user.can('lock')) return this.errorReply("This user is currently blocking PMs.");
if (targetUser.locked && !user.can('lock')) return this.errorReply("This user is currently locked, so you cannot send them a pminfobox."); if (targetUser.locked && !user.can('lock')) return this.errorReply("This user is currently locked, so you cannot send them a pminfobox.");
// Apply the infobox to the message // Apply the infobox to the message
@ -576,7 +576,7 @@ const commands = {
if (!targetUser || !targetUser.connected) return this.errorReply(`User ${this.targetUsername} is not currently online.`); if (!targetUser || !targetUser.connected) return this.errorReply(`User ${this.targetUsername} is not currently online.`);
if (!(targetUser in room.users) && !user.can('addhtml')) return this.errorReply("You do not have permission to use this command to users who are not in this room."); if (!(targetUser in room.users) && !user.can('addhtml')) return this.errorReply("You do not have permission to use this command to users who are not in this room.");
if (targetUser.ignorePMs && targetUser.ignorePMs !== user.group && !user.can('lock')) return this.errorReply("This user is currently ignoring PMs."); if (targetUser.blockPMs && targetUser.blockPMs !== user.group && !user.can('lock')) return this.errorReply("This user is currently blocking PMs.");
if (targetUser.locked && !user.can('lock')) return this.errorReply("This user is currently locked, so you cannot send them UHTML."); if (targetUser.locked && !user.can('lock')) return this.errorReply("This user is currently locked, so you cannot send them UHTML.");
let message = `|pm|${user.getIdentity()}|${targetUser.getIdentity()}|/uhtml${(cmd === 'pmuhtmlchange' ? 'change' : '')} ${target}`; let message = `|pm|${user.getIdentity()}|${targetUser.getIdentity()}|/uhtml${(cmd === 'pmuhtmlchange' ? 'change' : '')} ${target}`;
@ -589,31 +589,34 @@ const commands = {
pmuhtmlhelp: [`/pmuhtml [user], [name], [html] - PMs [html] that can change to [user]. Requires * ~`], pmuhtmlhelp: [`/pmuhtml [user], [name], [html] - PMs [html] that can change to [user]. Requires * ~`],
pmuhtmlchangehelp: [`/pmuhtmlchange [user], [name], [html] - Changes html that was previously PMed to [user] to [html]. Requires * ~`], pmuhtmlchangehelp: [`/pmuhtmlchange [user], [name], [html] - Changes html that was previously PMed to [user] to [html]. Requires * ~`],
'!ignorepms': true, '!blockpms': true,
blockpm: 'ignorepms', blockpm: 'blockpms',
blockpms: 'ignorepms', ignorepms: 'blockpms',
ignorepm: 'ignorepms', ignorepm: 'blockpms',
ignorepms(target, room, user) { blockpms(target, room, user) {
if (user.ignorePMs === (target || true)) return this.errorReply("You are already blocking private messages! To unblock, use /unblockpms"); if (user.blockPMs === (target || true)) return this.errorReply("You are already blocking private messages! To unblock, use /unblockpms");
user.ignorePMs = true; user.blockPMs = true;
if (target in Config.groups) { if (target in Config.groups) {
user.ignorePMs = target; user.blockPMs = target;
user.update();
return this.sendReply(`You are now blocking private messages, except from staff and ${target}.`); return this.sendReply(`You are now blocking private messages, except from staff and ${target}.`);
} }
user.update();
return this.sendReply("You are now blocking private messages, except from staff."); return this.sendReply("You are now blocking private messages, except from staff.");
}, },
ignorepmshelp: [`/blockpms - Blocks private messages. Unblock them with /unignorepms.`], blockpmshelp: [`/blockpms - Blocks private messages. Unblock them with /unblockpms.`],
'!unignorepms': true, '!unblockpms': true,
unblockpm: 'unignorepms', unblockpm: 'unblockpms',
unblockpms: 'unignorepms', unignorepms: 'unblockpms',
unignorepm: 'unignorepms', unignorepm: 'unblockpms',
unignorepms(target, room, user) { unblockpms(target, room, user) {
if (!user.ignorePMs) return this.errorReply("You are not blocking private messages! To block, use /blockpms"); if (!user.blockPMs) return this.errorReply("You are not blocking private messages! To block, use /blockpms");
user.ignorePMs = false; user.blockPMs = false;
user.update();
return this.sendReply("You are no longer blocking private messages."); return this.sendReply("You are no longer blocking private messages.");
}, },
unignorepmshelp: [`/unblockpms - Unblocks private messages. Block them with /blockpms.`], unblockpmshelp: [`/unblockpms - Unblocks private messages. Block them with /blockpms.`],
'!away': true, '!away': true,
idle: 'away', idle: 'away',
@ -4049,6 +4052,7 @@ const commands = {
blockchallenges(target, room, user) { blockchallenges(target, room, user) {
if (user.blockChallenges) return this.errorReply("You are already blocking challenges!"); if (user.blockChallenges) return this.errorReply("You are already blocking challenges!");
user.blockChallenges = true; user.blockChallenges = true;
user.update();
this.sendReply("You are now blocking all incoming challenge requests."); this.sendReply("You are now blocking all incoming challenge requests.");
}, },
blockchallengeshelp: [`/blockchallenges - Blocks challenges so no one can challenge you. Unblock them with /unblockchallenges.`], blockchallengeshelp: [`/blockchallenges - Blocks challenges so no one can challenge you. Unblock them with /unblockchallenges.`],
@ -4061,6 +4065,7 @@ const commands = {
allowchallenges(target, room, user) { allowchallenges(target, room, user) {
if (!user.blockChallenges) return this.errorReply("You are already available for challenges!"); if (!user.blockChallenges) return this.errorReply("You are already available for challenges!");
user.blockChallenges = false; user.blockChallenges = false;
user.update();
this.sendReply("You are available for challenges from now on."); this.sendReply("You are available for challenges from now on.");
}, },
allowchallengeshelp: [`/unblockchallenges - Unblocks challenges so you can be challenged again. Block them with /blockchallenges.`], allowchallengeshelp: [`/unblockchallenges - Unblocks challenges so you can be challenged again. Block them with /blockchallenges.`],

View File

@ -1127,7 +1127,7 @@ class CommandContext extends MessageContext {
let groupName = Config.groups[Config.pmmodchat] && Config.groups[Config.pmmodchat].name || Config.pmmodchat; let groupName = Config.groups[Config.pmmodchat] && Config.groups[Config.pmmodchat].name || Config.pmmodchat;
return this.errorReply(`On this server, you must be of rank ${groupName} or higher to PM users.`); return this.errorReply(`On this server, you must be of rank ${groupName} or higher to PM users.`);
} }
if (targetUser.ignorePMs && targetUser.ignorePMs !== user.group && !user.can('lock')) { if (targetUser.blockPMs && targetUser.blockPMs !== user.group && !user.can('lock')) {
if (!targetUser.can('lock')) { if (!targetUser.can('lock')) {
return this.errorReply(`This user is blocking private messages right now.`); return this.errorReply(`This user is blocking private messages right now.`);
} else { } else {
@ -1135,7 +1135,7 @@ class CommandContext extends MessageContext {
return this.sendReply(`|html|If you need help, try opening a <a href="view-help-request" class="button">help ticket</a>`); return this.sendReply(`|html|If you need help, try opening a <a href="view-help-request" class="button">help ticket</a>`);
} }
} }
if (user.ignorePMs && user.ignorePMs !== targetUser.group && !targetUser.can('lock')) { if (user.blockPMs && user.blockPMs !== targetUser.group && !targetUser.can('lock')) {
return this.errorReply(`You are blocking private messages right now.`); return this.errorReply(`You are blocking private messages right now.`);
} }
} }

View File

@ -860,8 +860,7 @@ class GlobalRoom extends BasicRoom {
* @param {Connection} connection * @param {Connection} connection
*/ */
onConnect(user, connection) { onConnect(user, connection) {
let initdata = '|updateuser|' + user.name + '|' + (user.named ? '1' : '0') + '|' + user.avatar + '\n'; connection.send(user.getUpdateuserText() + '\n' + this.configRankList + this.formatListText);
connection.send(initdata + this.configRankList + this.formatListText);
} }
/** /**
* @param {User} user * @param {User} user

View File

@ -494,7 +494,7 @@ class User extends Chat.MessageContext {
this.isSysop = false; this.isSysop = false;
this.isStaff = false; this.isStaff = false;
this.blockChallenges = false; this.blockChallenges = false;
this.ignorePMs = false; this.blockPMs = false;
this.ignoreTickets = false; this.ignoreTickets = false;
this.lastConnected = 0; this.lastConnected = 0;
this.inviteOnlyNextBattle = false; this.inviteOnlyNextBattle = false;
@ -968,8 +968,7 @@ class User extends Chat.MessageContext {
for (const connection of this.connections) { for (const connection of this.connections) {
//console.log('' + name + ' renaming: socket ' + i + ' of ' + this.connections.length); //console.log('' + name + ' renaming: socket ' + i + ' of ' + this.connections.length);
let initdata = `|updateuser|${this.name}|${this.named ? 1 : 0}|${this.avatar}`; connection.send(this.getUpdateuserText());
connection.send(initdata);
} }
for (const roomid of this.games) { for (const roomid of this.games) {
const room = Rooms(roomid); const room = Rooms(roomid);
@ -987,6 +986,14 @@ class User extends Chat.MessageContext {
if (isForceRenamed) this.trackRename = oldname; if (isForceRenamed) this.trackRename = oldname;
return true; return true;
} }
getUpdateuserText() {
const named = this.named ? 1 : 0;
const settings = {blockPMs: this.blockPMs, blockChallenges: this.blockChallenges};
return `|updateuser|${this.name}|${named}|${this.avatar}|${JSON.stringify(settings)}`;
}
update() {
this.send(this.getUpdateuserText());
}
/** /**
* @param {User} oldUser * @param {User} oldUser
*/ */
@ -1049,8 +1056,7 @@ class User extends Chat.MessageContext {
this.connected = true; this.connected = true;
this.connections.push(connection); this.connections.push(connection);
//console.log('' + this.name + ' merging: connection ' + connection.socket.id); //console.log('' + this.name + ' merging: connection ' + connection.socket.id);
let initdata = `|updateuser|${this.name}|1|${this.avatar}`; connection.send(this.getUpdateuserText());
connection.send(initdata);
connection.user = this; connection.user = this;
for (const roomid of connection.inRooms) { for (const roomid of connection.inRooms) {
let room = Rooms(roomid); let room = Rooms(roomid);
@ -1130,7 +1136,7 @@ class User extends Chat.MessageContext {
this.semilocked = '#dnsbl.'; this.semilocked = '#dnsbl.';
} }
} }
if (this.ignorePMs && this.can('lock') && !this.can('bypassall')) this.ignorePMs = false; if (this.blockPMs && this.can('lock') && !this.can('bypassall')) this.blockPMs = false;
} }
/** /**
* Set a user's group. Pass (' ', true) to force trusted * Set a user's group. Pass (' ', true) to force trusted