diff --git a/package-lock.json b/package-lock.json index 1c6a2eac5..153db057c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19818,6 +19818,23 @@ "glob": "^7.1.3" } }, + "rocket.chat.realtime.api.rxjs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/rocket.chat.realtime.api.rxjs/-/rocket.chat.realtime.api.rxjs-2.1.1.tgz", + "integrity": "sha512-R+aAbUi66CBwsXuji0AsQGOrUx4STXw9I8lf4hpPK/mRocyjcA+r+ri0bDHGoB0FGnooSvkvauqpy+RjbB2dEg==", + "requires": { + "crypto-js": "^3.1.9-1", + "rxjs": "^6.4.0", + "uuid": "^3.1.0" + }, + "dependencies": { + "crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + } + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", diff --git a/package.json b/package.json index e36bb460a..7f646e2e2 100644 --- a/package.json +++ b/package.json @@ -136,6 +136,7 @@ "pdfjs": "^2.4.6", "pdfjs-dist": "^2.9.359", "puppeteer": "^10.1.0", + "rocket.chat.realtime.api.rxjs": "^2.1.1", "rxjs": "~6.6.3", "rxjs-compat": "^6.6.7", "sharp": "^0.29.1", diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index 19e60694f..633ae1aa6 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -29,6 +29,8 @@ import { Device } from '@capacitor/device'; import { RouteService } from 'src/app/services/route.service'; import { RocketChatClientService } from 'src/app/services/socket/rocket-chat-client.service'; import { environment } from 'src/environments/environment'; +import { v4 as uuidv4 } from 'uuid' +import { RealTimeAPI } from "rocket.chat.realtime.api.rxjs"; @Component({ selector: 'app-home', @@ -94,6 +96,86 @@ export class HomePage implements OnInit { private RouteService: RouteService, private RocketChatClientService: RocketChatClientService) { + // this.RocketChatClientService.connect() + // this.RocketChatClientService.login({ + // username: 'paulo.pinto@gabinetedigital.local', + // password: 'tabteste@006' + // }) + + + + // const url = 'wss://gabinetedigitalchat.dyndns.info/websocket' + // const socket = new WebSocket(url); + + + // socket.onopen = ()=> { + + // console.log('============================ welcome to rocket chat ========================================='); + + // const connectMessage = { + // msg: "connect", + // version: "1", + // support: ["1"] + // } + + // socket.send(JSON.stringify(connectMessage)) + + // const loginRequest = { + // msg: "method", + // method: "login", + // id: uuidv4(), + // params: [ + // { + // "user": { + // "email": 'paulo.pinto@gabinetedigital.local' + // }, + // "password": { + // "digest": 'tabteste@006', + // "algorithm":"sha-256" + // } + // } + // ] + // } + + // // temp login + // socket.send(JSON.stringify(loginRequest)) + // }; + + // socket.onmessage = (event: any)=> { + // // console.log('rocket chat message', event) + // console.log('event.data', JSON.parse(event.data)) + // }; + + // socket.onclose = (event: any)=> { + // console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`); + // }; + + // socket.onerror =(event: any)=> { + // console.log(`[error] ${event.message}`); + // }; + + + // const realTimeAPI = new RealTimeAPI("wss://gabinetedigitalchat.dyndns.info/websocket"); + // realTimeAPI.keepAlive().subscribe(); + // const auth = realTimeAPI.login('tiago.kayaya@gabinetedigital.local', 'tabteste@006'); + + // //Subscribe to messages and errors + // auth.subscribe( + // (data) => console.log('socket data', data), + // (err) => console.log('socket err', err), + // () => console.log('completed') + // ); + + // // Subscribe to a specific channel, identified by roomId + // realTimeAPI.sendMessage({ + // msg: 'sub', + // id: '', + // name: 'stream-room-messages', + // params: ['44', false], + // }); + + // this.RocketChatClientService.send() + /* this.webNotificationPopupService.askNotificationPermission() */ this.router.events.subscribe((val) => { @@ -238,45 +320,3 @@ export class HomePage implements OnInit { } - - -const url = 'wss://gabinetedigitalchat.dyndns.info/websocket' -const socket = new WebSocket(url); - - -socket.onopen = ()=> { - - console.log('============================ welcome to rocket chat ========================================='); - - - const loginRequest = { - msg: "method", - method: "login", - id: "42", - params: [ - { - "user": { "username": 'paulo.pinto@gabinetedigital.local' }, - "password": { - "digest": 'tabteste@006', - "algorithm":"sha-256" - } - } - ] - } - - // temp login - socket.send(JSON.stringify(loginRequest)) -}; - -socket.onmessage = (event: any)=> { - console.log('rocket chat message', event) - console.log('event.data', JSON.parse(event.data)) -}; - -socket.onclose = (event: any)=> { - console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`); -}; - -socket.onerror =(event: any)=> { - console.log(`[error] ${event.message}`); -}; \ No newline at end of file diff --git a/src/app/services/aesencrypt.service.ts b/src/app/services/aesencrypt.service.ts index 2a9f33289..7323da936 100644 --- a/src/app/services/aesencrypt.service.ts +++ b/src/app/services/aesencrypt.service.ts @@ -22,7 +22,7 @@ export class AESEncrypt { //Decrypting the string contained in cipherParams using the PBKDF2 key var decrypted = CryptoJS.AES.encrypt(encryptData, key128Bits1000Iterations, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7 }); - console.log('AES encrypt',decrypted.toString()); + // console.log('AES encrypt',decrypted.toString()); return decrypted.toString(); } diff --git a/src/app/services/socket/interface/socket-interface.service.ts b/src/app/services/socket/interface/socket-interface.service.ts index 2aa620dc6..c04d190ff 100644 --- a/src/app/services/socket/interface/socket-interface.service.ts +++ b/src/app/services/socket/interface/socket-interface.service.ts @@ -9,7 +9,7 @@ export class SocketInterfaceService { private url = '' private connected = false private callBacks: { - type: 'Offline' | 'Online' | 'Onmessage' | 'Chat' | 'Notification' | 'Notifications' | '', + type: 'Offline' | 'Online' | 'Open' , object?: string funx: Function }[] = [] @@ -17,6 +17,14 @@ export class SocketInterfaceService { constructor() { } + registerCallback(type: 'Offline' | 'Online' | 'Open', funx: Function, object = '') { + this.callBacks.push({ + type, + funx, + object + }) + } + connect(url) { this.url = url @@ -28,8 +36,20 @@ export class SocketInterfaceService { this.socket.onerror = this.onerror; } + onopen() { + this.connected = true + + // send all saved data due to internet connection + this.msgQueue.forEach((item, index, object) => { + this.send(item); + object.splice(index, 1); + }) + } + send(message: object) { - if (!this.connected) { // save data to send when back online + console.log(this.connected, message) + + if (this.connected === false) { // save data to send when back online this.msgQueue.push(message) } else { let messageStr = JSON.stringify(message) @@ -37,12 +57,12 @@ export class SocketInterfaceService { } } - onopen() { - + onmessage(event: any) { + console.log('event.data', JSON.parse(event.data)) } - onmessage() {} onclose(event: any) { + this.connected = false console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`); setTimeout(()=>{ this.connect(this.url) diff --git a/src/app/services/socket/rocket-chat-client.service.ts b/src/app/services/socket/rocket-chat-client.service.ts index 2c75e6abb..218e608da 100644 --- a/src/app/services/socket/rocket-chat-client.service.ts +++ b/src/app/services/socket/rocket-chat-client.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { SocketInterfaceService } from './interface/socket-interface.service' import { environment } from 'src/environments/environment'; +import { v4 as uuidv4 } from 'uuid' @Injectable({ providedIn: 'root' @@ -9,16 +10,25 @@ export class RocketChatClientService { private SocketInterfaceService = new SocketInterfaceService() - constructor() { - const url = environment.apiChatUrl.replace('https','wss') - // this.SocketInterfaceService.connect(url); + constructor() {} + + connect(url = 'wss://gabinetedigitalchat.dyndns.info/websocket') { + + this.SocketInterfaceService.connect(url); + + const connectMessage = { + msg: "connect", + version: "1", + support: ["1"] + } + this.SocketInterfaceService.send(connectMessage) } login(user) { const loginRequest = { msg: "method", method: "login", - id: "42", + id: uuidv4(), params: [ { "user": { "username": user.username }, @@ -29,17 +39,31 @@ export class RocketChatClientService { } ] } - - // this.SocketInterfaceService.send(loginRequest) + this.SocketInterfaceService.send(loginRequest) } logout(){ } - send(roomId, message, option) {} + send(roomId, message, option) { + var request = { + "msg": "method", + "method": "sendMessage", + "id": uuidv4(), + "params": [{ + "_id": "message-id", + "rid": "room-id", + "msg": "Hello World!" + }] + } + + this.SocketInterfaceService.send(request); + } receive() {} joinRoom(){} deleteMessage() {} + + createRoom() {} } diff --git a/src/app/services/toast.service.ts b/src/app/services/toast.service.ts index 60fbde25a..840678e37 100644 --- a/src/app/services/toast.service.ts +++ b/src/app/services/toast.service.ts @@ -219,7 +219,7 @@ export class ToastService { `; - console.log(document.querySelector('body').classList) + // console.log(document.querySelector('body').classList) document.body.append(loader) loader.addEventListener('click', ()=>{