diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-09-04 17:59:38 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-04 17:59:38 -0400 | 
| commit | cf35b9338f76d97d2e11e2d9b6774be3a19cc903 (patch) | |
| tree | 591c7275bda6679c96837c7c5fa4f6865b7dd1d3 /ext | |
| parent | 95bfe2d9016ef982cdab17b616134aaf44b9753e (diff) | |
Fix cross frame comm issues (#765)
* Send ack before sending error response
* Fix error response not being JSON'ified
* Use _sendResult
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mixed/js/comm.js | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/ext/mixed/js/comm.js b/ext/mixed/js/comm.js index 27cb0c34..10e1f93b 100644 --- a/ext/mixed/js/comm.js +++ b/ext/mixed/js/comm.js @@ -171,13 +171,14 @@ class CrossFrameAPIPort extends EventDispatcher {      // Invocation      _onInvoke(id, {action, params}) { -        const callback = (response) => this._sendResponse({type: 'result', id, data: response});          const messageHandler = this._messageHandlers.get(action); +        this._sendAck(id);          if (typeof messageHandler === 'undefined') { -            callback({error: new Error(`Unknown action: ${action}`)}); +            this._sendError(id, new Error(`Unknown action: ${action}`));              return false;          } -        this._sendAck(id); + +        const callback = (data) => this._sendResult(id, data);          return yomichan.invokeMessageHandler(messageHandler, params, callback);      } @@ -194,8 +195,8 @@ class CrossFrameAPIPort extends EventDispatcher {          this._sendResponse({type: 'ack', id});      } -    _sendResult(id, result) { -        this._sendResponse({type: 'result', id, data: {result}}); +    _sendResult(id, data) { +        this._sendResponse({type: 'result', id, data});      }      _sendError(id, error) { |