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/app.module.ts b/src/app/app.module.ts
index 0d2e5eca1..29a6ee156 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -28,6 +28,8 @@ import { CalendarModule, DateAdapter } from 'angular-calendar';
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MessagesPage } from './pages/chat/messages/messages.page';
+import { WebsocketService } from './services/websocket.service'
+import { ChatService } from './services/chat.service'
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
@@ -57,7 +59,9 @@ import { MessagesPage } from './pages/chat/messages/messages.page';
//File,
WebView,
FilePath,
- //FCM
+ //FCM,
+ WebsocketService,
+ ChatService,
],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
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.html b/src/app/pages/chat/chat.page.html
index d67ffc9d0..49ace9468 100644
--- a/src/app/pages/chat/chat.page.html
+++ b/src/app/pages/chat/chat.page.html
@@ -90,6 +90,7 @@
+
diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts
index 8c0e18716..b71e1fa79 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,11 @@ 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'); */
+ this.loadMessage();
}
+
ngOnInit() {
this.segment = "Contactos";
@@ -103,49 +112,21 @@ 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 */
+}
+loadMessage(){
+ this.chatService.messages.subscribe(msg => {
+ console.log("Response from websocket: " + msg);
+ });
+}
+sendMsg() {
+ console.log("new message from client to websocket: ", this.message);
+ this.chatService.messages.next(this.message);
+ this.message.msg = "";
}
@@ -178,7 +159,7 @@ export class ChatPage implements OnInit {
}
openMessagesPage(rid) {
if( window.innerWidth <= 1024){
- this.openMessagesModal(rid);
+ //this.openMessagesModal(rid);
}
else{
this.closeAllDesktopComponents();
@@ -236,9 +217,8 @@ export class ChatPage implements OnInit {
onSegmentChange(){
this.load();
}
- doRefresh(ev:any){
+ doRefresh(){
this.load();
- ev.target.complete();
}
load(){
switch (this.segment)
@@ -310,6 +290,7 @@ export class ChatPage implements OnInit {
await modal.present();
modal.onDidDismiss();
}
+
async selectContact(){
const modal = await this.modalController.create({
component: ContactsPage,
@@ -318,6 +299,7 @@ export class ChatPage implements OnInit {
await modal.present();
modal.onDidDismiss();
}
+
async newGroup(){
const modal = await this.modalController.create({
component: NewGroupPage,
@@ -383,4 +365,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..c2992d885 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 result.forEach( (element, index) => {
let task = {
"SerialNumber": element.serialNumber,
diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts
index 91983ff7f..c73767b2a 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,12 @@ 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 (JSON.stringify(data));
+ });
}
/* getUser(){
diff --git a/src/app/services/websocket.service.ts b/src/app/services/websocket.service.ts
index 5235b65f5..a4a9d8471 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,38 @@ 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);
+
+ console.log(ws);
+
+
+ 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..68ad53ebd 100644
--- a/src/app/shared/gabinete-digital/despachos/despachos.page.ts
+++ b/src/app/shared/gabinete-digital/despachos/despachos.page.ts
@@ -56,9 +56,13 @@ export class DespachosPage implements OnInit {
//Inicializar segment
this.segment = "despachos";
this.LoadList();
- this.authService.userData$.subscribe((res:any)=>{
- console.log(res);
- });
+ /* this.authService.userData$.subscribe((res:any)=>{
+ //console.log(res);
+ }); */
+
+ let u = this.authService.userData$.toPromise();
+ console.log(u);
+
}
segmentChanged(ev: any) {
this.LoadList();
@@ -77,6 +81,7 @@ 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);
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() {
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index d66d0a6fe..b01cd1341 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -5,7 +5,7 @@
export const environment = {
production: false,
apiURL: 'https://equilibrium.dyndns.info/GabineteDigital.Services/V4/api/',
- /* apiURL: 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/V3/api/', */
+ /* apiURL: 'http://gpr-dev-01.gabinetedigital.local/GabineteDigital.Services/V4/api/', */
apiChatUrl: 'https://www.tabularium.pt/api/v1/',
/* apiChatUrl: 'http://chat.gabinetedigital.local:3000/api/v1/', */
domain: 'gabinetedigital.local',