|
|
@@ -31,11 +31,9 @@ export namespace Clients {
|
|
|
private apiConnector: Interfaces.ApiConnectorInterface;
|
|
|
private clients: { [index: string]: Client } = {};
|
|
|
private logger: Interfaces.LoggerInterface;
|
|
|
- private conversationsManager: Interfaces.ConversationsManagerInterface;
|
|
|
|
|
|
- constructor(apiConnector: Interfaces.ApiConnectorInterface, conversationsManager: Interfaces.ConversationsManagerInterface, logger: Interfaces.LoggerInterface) {
|
|
|
+ constructor(apiConnector: Interfaces.ApiConnectorInterface, logger: Interfaces.LoggerInterface) {
|
|
|
this.apiConnector = apiConnector;
|
|
|
- this.conversationsManager = conversationsManager;
|
|
|
this.logger = logger;
|
|
|
}
|
|
|
|
|
|
@@ -45,7 +43,7 @@ export namespace Clients {
|
|
|
.then((response: string) => {
|
|
|
try {
|
|
|
let data = JSON.parse(response);
|
|
|
- this.clients[id] = new Client(this.apiConnector, this, this.conversationsManager, this.logger, data);
|
|
|
+ this.clients[id] = new Client(this.apiConnector, this, this.logger, data);
|
|
|
resolve(this.clients[id]);
|
|
|
} catch (err) {
|
|
|
reject(err);
|
|
|
@@ -55,7 +53,7 @@ export namespace Clients {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- add(socket: SocketIO.Socket, data) {
|
|
|
+ add(socket: SocketIO.Socket, data, conversationsManager: Interfaces.ConversationsManagerInterface) {
|
|
|
function setStatus(client: Interfaces.ClientInterface, logger: Interfaces.LoggerInterface) {
|
|
|
logger.debug(`Setting status of client with ID=${data.id} to "Online"`);
|
|
|
client.status = true;
|
|
|
@@ -63,6 +61,7 @@ export namespace Clients {
|
|
|
|
|
|
this.get(data.id).then((client: Client) => {
|
|
|
client.addSocket(socket);
|
|
|
+ client.setConversationsManager(conversationsManager);
|
|
|
}, (error: Error) => {
|
|
|
console.log(error.message);
|
|
|
console.log(error.stack);
|
|
|
@@ -152,13 +151,12 @@ export namespace Clients {
|
|
|
return this.isOnline;
|
|
|
}
|
|
|
|
|
|
- constructor(api: Interfaces.ApiConnectorInterface, clientsManager: Interfaces.ClientsManagerInterface, conversationsManager: Interfaces.ConversationsManagerInterface, logger: Interfaces.LoggerInterface, data: MessagingClientData) {
|
|
|
+ constructor(api: Interfaces.ApiConnectorInterface, clientsManager: Interfaces.ClientsManagerInterface, logger: Interfaces.LoggerInterface, data: MessagingClientData) {
|
|
|
this.logger = logger;
|
|
|
this.id = data.id;
|
|
|
this.logger.debug(`Calling Client.constructor for ID=${this.id}`);
|
|
|
this.api = api;
|
|
|
this.clientsManager = clientsManager;
|
|
|
- this.conversationsManager = conversationsManager;
|
|
|
this.clientPhoto = data.photo;
|
|
|
this.clientName = data.name;
|
|
|
this.payedTime = parseInt(data.payedTime);
|
|
|
@@ -168,12 +166,15 @@ export namespace Clients {
|
|
|
this.status = true;
|
|
|
}
|
|
|
|
|
|
+ public setConversationsManager(manager: Interfaces.ConversationsManagerInterface) {
|
|
|
+ this.conversationsManager = manager;
|
|
|
+ }
|
|
|
+
|
|
|
private releaseQueue() {
|
|
|
- for (let i in this.messageQueue) {
|
|
|
- if (this.messageQueue.hasOwnProperty(i)) {
|
|
|
- this.sendToSockets(this.messageQueue[i].eventName, this.messageQueue[i].data);
|
|
|
- }
|
|
|
- }
|
|
|
+ this.messageQueue.forEach((item, index) => {
|
|
|
+ this.sendToSockets(item.eventName, item.data);
|
|
|
+ this.messageQueue.splice(index,1);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
private sendToSockets(event: string, data: {} = {}) {
|