diff --git a/package-lock.json b/package-lock.json index 3f0979b3d..5662958e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16001,6 +16001,11 @@ } } }, + "rxjs-compat": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz", + "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -18827,7 +18832,8 @@ }, "ssri": { "version": "6.0.1", - "resolved": "", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" diff --git a/package.json b/package.json index d94ec83f6..f935c76b4 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "moment": "^2.29.1", "ngx-socket-io": "^3.2.0", "rxjs": "~6.6.3", + "rxjs-compat": "^6.6.7", "sharp": "^0.25.4", "socket.io-client": "^2.3.0", "tslib": "^2.0.0", diff --git a/src/app/models/message.model.ts b/src/app/models/message.model.ts new file mode 100644 index 000000000..c6993ebbc --- /dev/null +++ b/src/app/models/message.model.ts @@ -0,0 +1,4 @@ +export interface Message { + author: string; + message: string; + } \ No newline at end of file diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 8c0e18716..16b1c3649 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -21,6 +21,9 @@ import { NewchatPage } from './newchat/newchat.page'; import { Storage } from '@ionic/storage'; import { AlertService } from 'src/app/services/alert.service'; import { EditGroupPage } from 'src/app/shared/chat/edit-group/edit-group.page'; +import * as Rx from "rxjs/Rx"; +import { Message } from 'src/app/models/message.model'; +import { Observable, Subject } from "rxjs/Rx"; @Component({ selector: 'app-chat', @@ -78,8 +81,15 @@ export class ChatPage implements OnInit { */ - SERVER_URL = 'wss://www.tabularium.pt/websocket'; - ws:any; + subject: any; + public messages: Subject; + + message = { + "msg": "connect", + "version": "1", + "support": ["1"] + }; + /* Fim websockets variables*/ constructor( @@ -89,12 +99,13 @@ export class ChatPage implements OnInit { private authService: AuthService, private storage:Storage, private resolver: ComponentFactoryResolver, - - ) { + ){ this.headers = new HttpHeaders(); - /* this.headers = this.headers.set('X-User-Id', 'GqjNWiLrGEHRna7Zn'); - this.headers = this.headers.set('X-Auth-Token', 'SJwIgtlqfloPK696fpc2VBvyDluipuIHKB_0Q6-9ycJ'); */ + chatService.messages.subscribe(msg => { + console.log("Response from websocket: " + msg); + }); } + ngOnInit() { this.segment = "Contactos"; @@ -103,49 +114,16 @@ export class ChatPage implements OnInit { console.log(this.loggedUser); this.load(); }); - this.storage.get('userDataKey').then(val=> { - let t = JSON.parse(unescape(atob(val))); - this.loggedUser=t; - //this.load(); - }) - - console.log(this.roomId); - this.connect(); - - } - + /* websocket functions */ - connect() { - this.ws = new WebSocket(this.SERVER_URL, []); - console.log(this.ws); - - /* this.ws.onmessage = handleMessageReceived; - this.ws.onerror = handleError; */ - } - handleMessageReceived(data) { - // Simply call logMessage(), passing the received data. - /* logMessage(data.data); */ - } - handleConnected(data) { - // Create a log message which explains what has happened and includes - // the url we have connected too. - var logMsg = 'Connected to server: ' + data.target.url; - // Add the message to the log. - /* logMessage(logMsg) */ - } - handleError(err) { - // Print the error to the console so we can debug it. - console.log("Error: ", err); - } - logMessage(msg) { - // $apply() ensures that the elements on the page are updated - // with the new message. - /* $scope.$apply(function() { */ - //Append out new message to our message log. The \n means new line. - /* $scope.messageLog = $scope.messageLog + msg + "\n"; */ - // Update the scrolling (defined below). - /*updateScrolling();*/ - /* S */ + //this.sendMsg(); + + /* Fim websocket functions */ +} +sendMsg() { + console.log("new message from client to websocket: ", this.message); + this.chatService.messages.next(this.message); + this.message.msg = ""; } @@ -178,7 +156,7 @@ export class ChatPage implements OnInit { } openMessagesPage(rid) { if( window.innerWidth <= 1024){ - this.openMessagesModal(rid); + //this.openMessagesModal(rid); } else{ this.closeAllDesktopComponents(); @@ -236,9 +214,8 @@ export class ChatPage implements OnInit { onSegmentChange(){ this.load(); } - doRefresh(ev:any){ + doRefresh(){ this.load(); - ev.target.complete(); } load(){ switch (this.segment) @@ -310,6 +287,7 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + async selectContact(){ const modal = await this.modalController.create({ component: ContactsPage, @@ -318,6 +296,7 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + async newGroup(){ const modal = await this.modalController.create({ component: NewGroupPage, @@ -383,4 +362,5 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + } diff --git a/src/app/pages/gabinete-digital/despachos/despachos.page.ts b/src/app/pages/gabinete-digital/despachos/despachos.page.ts index ec698c6ff..23f4d198b 100644 --- a/src/app/pages/gabinete-digital/despachos/despachos.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despachos.page.ts @@ -76,13 +76,12 @@ openExpedientDetailPage(data){ async LoadList(){ - let result = await this.processes.GetTasksList("Despacho", false).toPromise(); - - console.log(result); + let result = await this.processes.GetTasksList("Despacho", false).toPromise(); + let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)"); + + console.log(result); - this.despachoList = new Array(); - - await result.forEach( (element, index) => { + await despachos.forEach( (element, index) => { let task = { "SerialNumber": element.serialNumber, diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index 12768df68..424695294 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -158,7 +158,8 @@ export class GabineteDigitalPage implements OnInit { let expedientes = await this.processesbackend.GetTasksList("Expediente", false).toPromise(); this.count_exp_dailywork = Object.keys(expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active")).length; - let despachos = await this.processesbackend.GetTasksList("Despacho", false).toPromise(); + let result = await this.processesbackend.GetTasksList("Despacho", false).toPromise(); + let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)"); this.count_desp_dailywork = Object.keys(despachos).length; let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise(); diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 91983ff7f..27ab95e42 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -1,12 +1,14 @@ import { HttpHeaders, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Observable } from "rxjs" import { AuthService } from './auth.service'; import { HttpService } from './http.service'; import { StorageService } from './storage.service'; import { HttpClient, HttpHeaderResponse } from '@angular/common/http'; import { environment } from 'src/environments/environment'; import { Storage } from '@ionic/storage'; +import { Message } from 'src/app/models/message.model'; +import { Observable, Subject } from "rxjs/Rx"; +import { WebsocketService } from './websocket.service'; @Injectable({ providedIn: 'root' @@ -17,6 +19,9 @@ export class ChatService { options1:any; X_User_Id:any; X_Auth_Token:any; + + SERVER_URL = 'wss://www.tabularium.pt/websocket'; + public messages: Subject; constructor( @@ -24,11 +29,11 @@ export class ChatService { private httpService: HttpService, private authService: AuthService, private storage: Storage, - private storageService:StorageService,) { + private storageService:StorageService, + private wsService: WebsocketService, + ) + { this.headers = new HttpHeaders(); - /* this.headers = this.headers.set('X-User-Id', 'GqjNWiLrGEHRna7Zn'); - this.headers = this.headers.set('X-Auth-Token', 'dAM0ZOTAy8jzQA_vS25z2IrnSc6sYLfi5rmaa35YNUz'); */ - - this.authService.userData$.subscribe((res:any)=>{ this.headers = this.headers.set('X-User-Id', res.userId); this.headers = this.headers.set('X-Auth-Token', res.authToken); @@ -36,6 +41,16 @@ export class ChatService { this.options = { headers: this.headers, }; + + this.messages = >this.wsService.connect(this.SERVER_URL).map((response: MessageEvent): any => { + let data = JSON.parse(response.data); + console.log(data); + + return { + id: data.id, + msg: data.msg + }; + }); } /* getUser(){ diff --git a/src/app/services/websocket.service.ts b/src/app/services/websocket.service.ts index 5235b65f5..7f94f614b 100644 --- a/src/app/services/websocket.service.ts +++ b/src/app/services/websocket.service.ts @@ -1,7 +1,5 @@ import { Injectable } from '@angular/core'; -import * as io from 'socket.io-client'; -import { Observable } from 'rxjs'; -import { Socket } from 'ngx-socket-io'; +import * as Rx from "rxjs/Rx"; @Injectable({ providedIn: 'root' @@ -11,11 +9,35 @@ export class WebsocketService { message = ''; messages = []; currentUser = ''; + private subject: Rx.Subject; - constructor(private socket: Socket) { } + constructor() { } - connect(){ - return this.socket.connect(); + public connect(url): Rx.Subject { + if (!this.subject) { + this.subject = this.create(url); + console.log("Successfully connected: " + url); + } + return this.subject; + } + + private create(url): Rx.Subject { + let ws = new WebSocket(url); + + let observable = Rx.Observable.create((obs: Rx.Observer) => { + ws.onmessage = obs.next.bind(obs); + ws.onerror = obs.error.bind(obs); + ws.onclose = obs.complete.bind(obs); + return ws.close.bind(ws); + }); + let observer = { + next: (data: Object) => { + if (ws.readyState === WebSocket.OPEN) { + ws.send(JSON.stringify(data)); + } + } + }; + return Rx.Subject.create(observer, observable); } } diff --git a/src/app/shared/gabinete-digital/despachos/despachos.page.ts b/src/app/shared/gabinete-digital/despachos/despachos.page.ts index fcd7ee1fc..267b5c005 100644 --- a/src/app/shared/gabinete-digital/despachos/despachos.page.ts +++ b/src/app/shared/gabinete-digital/despachos/despachos.page.ts @@ -77,10 +77,11 @@ export class DespachosPage implements OnInit { this.despachoList = new Array(); let result = await this.processes.GetTasksList("Despacho", false).toPromise(); + let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)"); console.log(result); - await result.forEach( (element, index) => { + await despachos.forEach( (element, index) => { let task = { "SerialNumber": element.serialNumber, diff --git a/src/app/shared/header/header.page.ts b/src/app/shared/header/header.page.ts index f7b4c8a49..e2cd2967c 100644 --- a/src/app/shared/header/header.page.ts +++ b/src/app/shared/header/header.page.ts @@ -18,19 +18,16 @@ export class HeaderPage implements OnInit { loggeduser: User; constructor( - private router: Router,private modalController: ModalController, + private router: Router, + private modalController: ModalController, private animationController: AnimationController, - authService: AuthService) { - + authService: AuthService + ) { this.loggeduser = authService.ValidatedUser; - - - router.events.subscribe((val) => { - this.showSearch=false; - this.modalController.dismiss() - }); - - + router.events.subscribe((val) => { + this.showSearch=false; + //this.modalController.dismiss(); + }); } ngOnInit() {