Fix case-sensitivity of /me to match rest of slash commands
also better error handling for attempted runs of unimplemented commandspull/21833/head
parent
94f52c4ee2
commit
fcd3ebe051
|
@ -118,7 +118,7 @@ export class Command {
|
|||
|
||||
run(roomId: string, args: string, cmd: string) {
|
||||
// if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me`
|
||||
if (!this.runFn) return;
|
||||
if (!this.runFn) return reject(_t("Command error"));
|
||||
return this.runFn.bind(this)(roomId, args, cmd);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,16 +62,20 @@ export function textSerialize(model: EditorModel) {
|
|||
}
|
||||
|
||||
export function containsEmote(model: EditorModel) {
|
||||
return startsWith(model, "/me ");
|
||||
return startsWith(model, "/me ", true);
|
||||
}
|
||||
|
||||
export function startsWith(model: EditorModel, prefix: string) {
|
||||
export function startsWith(model: EditorModel, prefix: string, caseInsensitive = false) {
|
||||
const firstPart = model.parts[0];
|
||||
// part type will be "plain" while editing,
|
||||
// and "command" while composing a message.
|
||||
return firstPart &&
|
||||
(firstPart.type === "plain" || firstPart.type === "command") &&
|
||||
firstPart.text.startsWith(prefix);
|
||||
let text = firstPart && firstPart.text;
|
||||
if (caseInsensitive) {
|
||||
prefix = prefix.toLowerCase();
|
||||
text = text.toLowerCase();
|
||||
}
|
||||
|
||||
return firstPart && (firstPart.type === "plain" || firstPart.type === "command") && text.startsWith(prefix);
|
||||
}
|
||||
|
||||
export function stripEmoteCommand(model: EditorModel) {
|
||||
|
|
Loading…
Reference in New Issue