diff --git a/classes/user.d.ts b/classes/user.d.ts index ad3fe9e..c0740ec 100644 --- a/classes/user.d.ts +++ b/classes/user.d.ts @@ -45,7 +45,7 @@ export default class User { /** * List of rooms the user is currently in */ - rooms: { [key: string]: { isPrivate?: true } }; + rooms: { [key: string]: { isPrivate?: true } } | false; /** * The Bot this user is attached to */ diff --git a/client.d.ts b/client.d.ts index 9ba3747..014d87e 100644 --- a/client.d.ts +++ b/client.d.ts @@ -3,6 +3,8 @@ import Message from './classes/message'; import Room from './classes/room'; import User from './classes/user'; +type UserDetails = { userid: string, [key: string]: any }; + type ClientOpts = { username: string, password?: string, @@ -114,7 +116,7 @@ export class Client extends events.EventEmitter { * @param details The details of the user to add * @returns The added User */ - addUser (details: { userid: string, [key: string]: any }): User; + addUser (details: UserDetails): User; /** * Gets the specified user (or their current user, if they were seen on an alt) @@ -129,7 +131,7 @@ export class Client extends events.EventEmitter { * @param user The user being queried * @returns A promise that resolves with the queried userdetails */ - getUserDetails (userid: string): Promise; + getUserDetails (userid: string): Promise; /** * Gets a (cached) room from its name (aliases not supported) diff --git a/client.js b/client.js index a9fad1e..971602f 100644 --- a/client.js +++ b/client.js @@ -372,7 +372,10 @@ class Client extends EventEmitter { if (!userdetails) break; this.addUser(userdetails); const user = this._userdetailsQueue.find(u => u.id === userdetails.id); - if (user) user.resolve(userdetails); + if (user) { + user.resolve(userdetails); + this._userdetailsQueue.splice(this._userdetailsQueue.indexOf(user), 1); + } break; } } diff --git a/test/index.js b/test/index.js index 73b5fb3..bc26ac8 100644 --- a/test/index.js +++ b/test/index.js @@ -35,6 +35,7 @@ Bot.on('message', message => { describe('PS-Client', () => { before(function () { + this.timeout(30_000); return new Promise((resolve, reject) => { Bot.connect(); Bot.on('ready', () => resolve());