diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index ae7b96698..2c514aa4c 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -99,11 +99,17 @@ export class HomePage implements OnInit { private RouteService: RouteService) { this.RocketChatClientService.connect(()=>{ + this.RocketChatClientService.login({ username: 'paulo.pinto', email: 'paulo.pinto@gabinetedigital.local', password: 'tabteste@006' - }) + }).then((message)=>{ + console.log('rocket chat login successfully', message) + }).catch((message)=>{ + console.log('rocket chat login failed', message) + }).finally(()=>{ + }) }) diff --git a/src/app/models/rochet-chat-cliente-service.ts b/src/app/models/rochet-chat-cliente-service.ts index c680767b7..68956c823 100644 --- a/src/app/models/rochet-chat-cliente-service.ts +++ b/src/app/models/rochet-chat-cliente-service.ts @@ -1,9 +1,7 @@ export interface wsCallbacksParams { type: 'Offline' | 'Online' | 'Open' | 'Onmessage', funx: Function - options?: { - runOnces?: boolean - } + runOnces?: boolean requestId?: string } diff --git a/src/app/services/socket/rocket-chat-client.service.ts b/src/app/services/socket/rocket-chat-client.service.ts index 297111bf3..4f348393f 100644 --- a/src/app/services/socket/rocket-chat-client.service.ts +++ b/src/app/services/socket/rocket-chat-client.service.ts @@ -47,6 +47,7 @@ class _RocketChatClientService { } login(user) { + const requestId = uuidv4() const loginRequest = { @@ -62,7 +63,22 @@ class _RocketChatClientService { } this.ws.send(loginRequest, requestId) - return requestId + return new Promise((resolve, reject) => { + this.ws.registerCallback({type:'Onmessage', requestId, runOnces: true, funx:(message)=>{ + if(message.result.id == requestId) { // same request send + if(message.result) { + if(message.result.token) { + resolve(message) + } else { + reject(message) + } + } else { + reject(message) + } + } + }}) + }); + } logout(){} @@ -139,7 +155,7 @@ class _RocketChatClientService { this.wsCallbacks[params.requestId] = { type: params.type, funx: params.funx, - options: params.options || {} + runOnces: params.runOnces } }, @@ -184,7 +200,12 @@ class _RocketChatClientService { for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'Onmessage') { value.funx(data) + if(value.runOnces) { + delete this.wsCallbacks[value.requestId || key] + } } + + } },