diff --git a/app/static/js/nopaque/App.js b/app/static/js/nopaque/App.js index d6c722555d09dd30f272894ac2d209b129821dde..6e5477a8b410d6949a7e85e9d489586a8c852cf3 100644 --- a/app/static/js/nopaque/App.js +++ b/app/static/js/nopaque/App.js @@ -2,6 +2,7 @@ class App { constructor() { this.data = {users: {}}; this.eventListeners = {'users.patch': []}; + this.promises = {users: {}}; this.socket = io({transports: ['websocket'], upgrade: false}); this.socket.on('users.patch', patch => this.usersPatchHandler(patch)); } @@ -51,16 +52,10 @@ class App { } getUserById(userId) { - let promise; - - if (userId in this.data.users) { - if (this.data.users[userId] instanceof Promise) { - return this.data.users[userId]; - } else { - return new Promise((resolve, reject) => {resolve(userValue);}); - } + if (userId in this.promises.users) { + return this.promises.users[userId]; } - promise = new Promise((resolve, reject) => { + this.promises.users[userId] = new Promise((resolve, reject) => { this.socket.emit('users.user.get', userId, response => { if (response.code === 200) { this.data.users[userId] = response.payload; @@ -70,8 +65,7 @@ class App { } }); }); - this.data.users[userId] = promise; - return promise; + return this.promises.users[userId]; } usersPatchHandler(patch) {