xP: only care about RPC results if requested

This prevents "No response" errors from firing for most commands.
This commit is contained in:
Přemysl Eric Janouch 2022-09-21 14:22:47 +02:00
parent 919b12510b
commit 1f0e0b1ce4
Signed by: p
GPG Key ID: A0420B94F92B9493

View File

@ -4,7 +4,7 @@ import * as Relay from './proto.js'
// ---- RPC -------------------------------------------------------------------- // ---- RPC --------------------------------------------------------------------
class RelayRpc extends EventTarget { class RelayRPC extends EventTarget {
constructor(url) { constructor(url) {
super() super()
this.url = url this.url = url
@ -72,7 +72,7 @@ class RelayRpc extends EventTarget {
if (this.promised[e.commandSeq] !== undefined) if (this.promised[e.commandSeq] !== undefined)
this.promised[e.commandSeq].reject(e.error) this.promised[e.commandSeq].reject(e.error)
else else
console.error("Unawaited error") console.error(`Unawaited error: ${e.error}`)
break break
case Relay.Event.Response: case Relay.Event.Response:
if (this.promised[e.commandSeq] !== undefined) if (this.promised[e.commandSeq] !== undefined)
@ -109,9 +109,16 @@ class RelayRpc extends EventTarget {
seq = this.commandSeq = 0 seq = this.commandSeq = 0
this.ws.send(JSON.stringify({commandSeq: seq, data: params})) this.ws.send(JSON.stringify({commandSeq: seq, data: params}))
return new Promise((resolve, reject) => {
this.promised[seq] = {resolve, reject} // Automagically detect if we want a result.
}) let data = undefined
const promise = new Promise(
(resolve, reject) => { data = {resolve, reject} })
promise.then = (...args) => {
this.promised[seq] = data
return Promise.prototype.then.call(promise, ...args)
}
return promise
} }
} }
@ -173,7 +180,7 @@ function updateIcon(highlighted) {
// ---- Event processing ------------------------------------------------------- // ---- Event processing -------------------------------------------------------
let rpc = new RelayRpc(proxy) let rpc = new RelayRPC(proxy)
let rpcEventHandlers = new Map() let rpcEventHandlers = new Map()
let buffers = new Map() let buffers = new Map()