added a default command handler possibility for the client
This commit is contained in:
parent
6f3d8306ee
commit
cb0b68b4a1
2 changed files with 31 additions and 24 deletions
|
@ -46,6 +46,35 @@ namespace connection {
|
||||||
this["notifychannelunsubscribed"] = this.handleNotifyChannelUnsubscribed;
|
this["notifychannelunsubscribed"] = this.handleNotifyChannelUnsubscribed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proxy_command_promise(promise: Promise<CommandResult>, options: connection.CommandOptions) {
|
||||||
|
if(!options.process_result)
|
||||||
|
return promise;
|
||||||
|
|
||||||
|
return promise.catch(ex => {
|
||||||
|
if(options.process_result) {
|
||||||
|
if(ex instanceof CommandResult) {
|
||||||
|
let res = ex;
|
||||||
|
if(!res.success) {
|
||||||
|
if(res.id == 2568) { //Permission error
|
||||||
|
res.message = tr("Insufficient client permissions. Failed on permission ") + this.connection_handler.permissions.resolveInfo(res.json["failed_permid"] as number).name;
|
||||||
|
this.connection_handler.chat.serverChat().appendError(tr("Insufficient client permissions. Failed on permission {}"), this.connection_handler.permissions.resolveInfo(res.json["failed_permid"] as number).name);
|
||||||
|
this.connection_handler.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS);
|
||||||
|
} else {
|
||||||
|
this.connection_handler.chat.serverChat().appendError(res.extra_message.length == 0 ? res.message : res.extra_message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if(typeof(ex) === "string") {
|
||||||
|
this.connection_handler.chat.serverChat().appendError(tr("Command execution results in ") + ex);
|
||||||
|
} else {
|
||||||
|
console.error(tr("Invalid promise result type: %o. Result:"), typeof (ex));
|
||||||
|
console.error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.reject(ex);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
handle_command(command: ServerCommand) : boolean {
|
handle_command(command: ServerCommand) : boolean {
|
||||||
if(this[command.command]) {
|
if(this[command.command]) {
|
||||||
this[command.command](command.arguments);
|
this[command.command](command.arguments);
|
||||||
|
|
|
@ -285,30 +285,8 @@ namespace connection {
|
||||||
"flags": options.flagset.filter(entry => entry.length != 0)
|
"flags": options.flagset.filter(entry => entry.length != 0)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
return new Promise<CommandResult>((resolve, failed) => {
|
|
||||||
result.then(resolve).catch(ex => {
|
return this._command_handler_default.proxy_command_promise(result, options);
|
||||||
if(options.process_result) {
|
|
||||||
if(ex instanceof CommandResult) {
|
|
||||||
let res = ex;
|
|
||||||
if(!res.success) {
|
|
||||||
if(res.id == 2568) { //Permission error
|
|
||||||
res.message = tr("Insufficient client permissions. Failed on permission ") + this.client.permissions.resolveInfo(res.json["failed_permid"] as number).name;
|
|
||||||
this.client.chat.serverChat().appendError(tr("Insufficient client permissions. Failed on permission {}"), this.client.permissions.resolveInfo(res.json["failed_permid"] as number).name);
|
|
||||||
this.client.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS);
|
|
||||||
} else {
|
|
||||||
this.client.chat.serverChat().appendError(res.extra_message.length == 0 ? res.message : res.extra_message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if(typeof(ex) === "string") {
|
|
||||||
this.client.chat.serverChat().appendError(tr("Command execution results in ") + ex);
|
|
||||||
} else {
|
|
||||||
console.error(tr("Invalid promise result type: %o. Result:"), typeof (ex));
|
|
||||||
console.error(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
failed(ex);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connected() : boolean {
|
connected() : boolean {
|
||||||
|
|
Loading…
Add table
Reference in a new issue