diff --git a/core/app.js b/core/app.js index 6a535a647..053013e7c 100644 --- a/core/app.js +++ b/core/app.js @@ -1,8 +1,5 @@ import * as core from './core.js'; -let g_next_id = 1; -let g_calls = {}; - let gSessionIndex = 0; /** @@ -20,6 +17,8 @@ function makeSessionId() { function App() { this._on_output = null; this._send_queue = []; + this.calls = {}; + this._next_call_id = 1; return this; } @@ -39,12 +38,12 @@ App.prototype.readOutput = function (callback) { App.prototype.makeFunction = function (api) { let self = this; let result = function () { - let id = g_next_id++; - while (!id || g_calls[id]) { - id = g_next_id++; + let id = self._next_call_id++; + while (!id || self.calls[id]) { + id = self._next_call_id++; } let promise = new Promise(function (resolve, reject) { - g_calls[id] = {resolve: resolve, reject: reject}; + self.calls[id] = {resolve: resolve, reject: reject}; }); let message = { message: 'tfrpc', @@ -215,13 +214,19 @@ exports.app_socket = async function socket(request, response) { } else if (message.action == 'createIdentity') { await process.createIdentity(); } else if (message.message == 'tfrpc') { - if (message.id && g_calls[message.id]) { - if (message.error !== undefined) { - g_calls[message.id].reject(message.error); - } else { - g_calls[message.id].resolve(message.result); + if (message.id) { + let calls = process?.app?.calls; + if (calls) { + let call = calls[message.id]; + if (call) { + if (message.error !== undefined) { + call.reject(message.error); + } else { + call.resolve(message.result); + } + delete calls[message.id]; + } } - delete g_calls[message.id]; } } else { if (process && process.eventHandlers['message']) {