Differential D2412 Diff 10323 binaries/data/mods/public/gui/lobby/LobbyPage/Chat/ChatMessageEvents.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/lobby/LobbyPage/Chat/ChatMessageEvents.js
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
/** | |||||
* Properties of this prototype are classes that subscribe to one or more events and | |||||
* construct a formatted chat message to be displayed on that event. | |||||
*/ | |||||
class ChatMessageEvents | |||||
{ | |||||
} | |||||
ChatMessageEvents.Room = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
xmppMessages.registerHandler("chat", "room-message", chat.addChatMessage.bind(chat)); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Private = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "private-message", this.onPrivateMessage.bind(this)); | |||||
} | |||||
onPrivateMessage(message) | |||||
{ | |||||
// We intend to not support private messages between users | |||||
if (!message.from || Engine.LobbyGetPlayerRole(message.from) == "moderator") | |||||
// some XMPP clients send trailing whitespace | |||||
this.chat.addChatMessage(message); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Disconnected = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("system", "disconnected", this.onDisconnected.bind(this)); | |||||
} | |||||
onDisconnected(message) | |||||
{ | |||||
// TODO if (!this.kicked) certificate_status? | |||||
this.chat.addChatMessage({ | |||||
"from": "system", | |||||
"time": message.time, | |||||
"text": translate("Disconnected.") + " " + message.reason + escapeText(message.certificate_status) | |||||
}); | |||||
} | |||||
}; | |||||
ChatMessageEvents.SystemError = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("system", "error", this.onSystemError.bind(this)); | |||||
} | |||||
onSystemError(message) | |||||
{ | |||||
this.chat.addChatMessage({ | |||||
"from": "system", | |||||
"time": message.time, | |||||
"text": message.text, | |||||
}); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Join = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "join", this.onClientJoin.bind(this)); | |||||
} | |||||
onClientJoin(message) | |||||
{ | |||||
this.chat.addChatStatusMessage(sprintf(this.Format, message), message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Join.prototype.Format = translate("%(nick)s has joined."); | |||||
ChatMessageEvents.Leave = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "leave", this.onClientLeave.bind(this)); | |||||
} | |||||
onClientLeave(message) | |||||
{ | |||||
this.chat.addChatStatusMessage(sprintf(this.Format, message), message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Leave.prototype.Format = translate("%(nick)s has left."); | |||||
ChatMessageEvents.Kicked = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.kickStrings = new KickStrings(); | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "kicked", this.onClientKicked.bind(this, false)); | |||||
xmppMessages.registerHandler("chat", "banned", this.onClientKicked.bind(this, true)); | |||||
} | |||||
onClientKicked(banned, message) | |||||
{ | |||||
let kickString = this.kickStrings.get(banned, message); | |||||
if (message.nick == g_Username) | |||||
this.chat.addChatMessage({ | |||||
"text": kickString, | |||||
"from": "system", | |||||
"time": message.time | |||||
}); | |||||
else | |||||
this.chat.addChatStatusMessage(kickString, message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Nick = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "nick", this.onNickChange.bind(this)); | |||||
} | |||||
onNickChange(message) | |||||
{ | |||||
this.chat.addChatStatusMessage(sprintf(this.String, message), message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Nick.prototype.String = translate("%(oldnick)s is now known as %(newnick)s."); | |||||
ChatMessageEvents.Role = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "role", this.onRoleChange.bind(this)); | |||||
} | |||||
onRoleChange(message) | |||||
{ | |||||
let me = g_Username == message.nick; | |||||
let txt = | |||||
message.newrole == "visitor" ? | |||||
me ? | |||||
translate("You have been muted.") : | |||||
translate("%(nick)s has been muted.") : | |||||
message.newrole == "moderator" ? | |||||
me ? | |||||
translate("You are now a moderator.") : | |||||
translate("%(nick)s is now a moderator.") : | |||||
message.oldrole == "visitor" ? | |||||
me ? | |||||
translate("You have been unmuted.") : | |||||
translate("%(nick)s has been unmuted.") : | |||||
me ? | |||||
translate("You are not a moderator anymore.") : | |||||
translate("%(nick)s is not a moderator anymore."); | |||||
this.chat.addChatStatusMessage(sprintf(txt, message), message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Subject = class | |||||
{ | |||||
constructor(xmppMessages, chat) | |||||
{ | |||||
this.chat = chat; | |||||
xmppMessages.registerHandler("chat", "subject", this.onSubjectChange.bind(this)); | |||||
} | |||||
onSubjectChange(message) | |||||
{ | |||||
if (!message.nick) | |||||
{ | |||||
warn(uneval(message)) | |||||
return; | |||||
} | |||||
let subject = message.subject.trim() | |||||
this.chat.addChatStatusMessage( | |||||
subject ? | |||||
sprintf(this.SubjectChange, message) + "\n" + subject : | |||||
sprintf(this.SubjectDelete, message), | |||||
message.time); | |||||
} | |||||
}; | |||||
ChatMessageEvents.Subject.prototype.SubjectChange = translate("%(nick)s changed the lobby subject to:"); | |||||
ChatMessageEvents.Subject.prototype.SubjectDelete = translate("%(nick)s deleted the lobby subject."); |
Wildfire Games · Phabricator