diff --git a/src/app/modals/chat-options-features/chat-options-features.page.ts b/src/app/modals/chat-options-features/chat-options-features.page.ts index f22b859c0..b384af419 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.ts +++ b/src/app/modals/chat-options-features/chat-options-features.page.ts @@ -10,6 +10,7 @@ import { FileLoaderService } from 'src/app/services/file/file-loader.service'; import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service'; import { environment } from 'src/environments/environment'; import { ThemeService } from 'src/app/services/theme.service' +import { HttpErrorResponse } from '@angular/common/http'; @Component({ selector: 'app-chat-options-features', @@ -47,7 +48,7 @@ export class ChatOptionsFeaturesPage implements OnInit { } ngOnInit() { - + this.chatService.refreshtoken(); } notImplemented() { @@ -117,8 +118,6 @@ export class ChatOptionsFeaturesPage implements OnInit { this.chatService.sendMessage(body).subscribe(res=> { // - },(error) => { - }); // }; @@ -144,8 +143,6 @@ export class ChatOptionsFeaturesPage implements OnInit { this.chatService.sendMessage(body).subscribe(res=> { - },(error) => { - }); } diff --git a/src/app/modals/set-room-owner/set-room-owner.page.ts b/src/app/modals/set-room-owner/set-room-owner.page.ts index fd44f44c7..823571f20 100644 --- a/src/app/modals/set-room-owner/set-room-owner.page.ts +++ b/src/app/modals/set-room-owner/set-room-owner.page.ts @@ -33,7 +33,7 @@ export class SetRoomOwnerPage implements OnInit { } ngOnInit() { - + this.chatService.refreshtoken(); } async close(){ diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 56e136bf9..47f66ab09 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http'; import { Component, OnInit, @@ -129,6 +129,18 @@ export class ChatPage implements OnInit { ngOnInit() { + /* let data = { + status: "success", + data: { + userId: "CqYSKR5hrAumZihs7", + authToken: "bvh5BH98Av5ShMnEW94Cwm1Hf-yHEHbl121ijq5Odc_sdvs" + } + } + SessionStore.user.ChatData = data + SessionStore.save() */ + console.log(SessionStore.user.ChatData.data.authToken) + this.chatService.refreshtoken(); + this.segment = "Contactos"; this.authService.userData$.subscribe((res: any) => { diff --git a/src/app/pages/chat/edit-group/edit-group.page.ts b/src/app/pages/chat/edit-group/edit-group.page.ts index 434bfc007..206348eff 100644 --- a/src/app/pages/chat/edit-group/edit-group.page.ts +++ b/src/app/pages/chat/edit-group/edit-group.page.ts @@ -1,3 +1,4 @@ +import { HttpErrorResponse } from '@angular/common/http'; import { Component, OnInit } from '@angular/core'; import { ModalController, NavParams, PickerController } from '@ionic/angular'; import { ChatService } from 'src/app/services/chat.service'; @@ -28,6 +29,7 @@ export class EditGroupPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); this.getRoomInfo(); } diff --git a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts index aa1c439ba..405ce8086 100644 --- a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts +++ b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Component, OnInit } from '@angular/core'; import { ModalController, NavParams } from '@ionic/angular'; import * as _ from 'lodash'; @@ -56,6 +56,7 @@ export class GroupContactsPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); this.loadUsers(); this.getMembers(); diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts index bd869ddab..73e60aa79 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -31,6 +31,7 @@ import { MessageService } from 'src/app/services/chat/message.service'; import { File } from '@awesome-cordova-plugins/file/ngx'; import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx'; import { SessionStore } from 'src/app/store/session.service'; +import { HttpErrorResponse } from '@angular/common/http'; @Component({ selector: 'app-group-messages', @@ -132,6 +133,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } ngOnInit() { + this.chatService.refreshtoken(); this.loggedUser = this.loggedUserChat; this.getRoomInfo(); diff --git a/src/app/pages/chat/messages/contacts/contacts.page.ts b/src/app/pages/chat/messages/contacts/contacts.page.ts index b369d5dd3..0983ecbbe 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.ts +++ b/src/app/pages/chat/messages/contacts/contacts.page.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Component, OnInit } from '@angular/core'; import { ModalController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; @@ -43,6 +43,7 @@ export class ContactsPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); this.loadUsers(); } diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 0f8c1a5df..73062561a 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -36,6 +36,7 @@ import { FileToBase64Service } from 'src/app/services/file/file-to-base64.servic import { Camera, CameraResultType, CameraSource } from '@capacitor/camera'; import { DomSanitizer } from '@angular/platform-browser'; import { SessionStore } from 'src/app/store/session.service'; +import { HttpErrorResponse } from '@angular/common/http'; const IMAGE_DIR = 'stored-images'; @@ -156,6 +157,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { } ngOnInit() { + this.chatService.refreshtoken(); this.wsChatMethodsService.getUserOfRoom(this.roomId).then((value) => { }) diff --git a/src/app/pages/chat/new-group/new-group.page.ts b/src/app/pages/chat/new-group/new-group.page.ts index e1c5889df..6a1760090 100644 --- a/src/app/pages/chat/new-group/new-group.page.ts +++ b/src/app/pages/chat/new-group/new-group.page.ts @@ -43,6 +43,7 @@ export class NewGroupPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); console.log(this.documents) } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index cc51df1e1..1db701a39 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -14,26 +14,338 @@ import { SessionStore } from '../store/session.service'; }) export class ChatService { headers: HttpHeaders; - options:any; - options1:any; - X_User_Id:any; - X_Auth_Token:any; - loggedUserChat:any; + options: any; + options1: any; + X_User_Id: any; + X_Auth_Token: any; + loggedUserChat: any; bindOnMessage: any; constructor( - private http:HttpClient, + private http: HttpClient, private httpService: HttpService, private authService: AuthService, private storage: Storage, - private storageService:StorageService, + private storageService: StorageService, public p: PermissionService) { - if(this.p.userPermission(this.p.permissionList.Chat.access)) { - this.loggedUserChat = authService.ValidatedUserChat; - this.headers = new HttpHeaders(); + this.setheader() - if(this.p.userPermission(this.p.permissionList.Chat.access)) { + } + + getDocumentDetails(url: string) { + let headersc = new HttpHeaders(); + headersc = headersc.set('X-User-Id', this.loggedUserChat['data'].userId); + headersc = headersc.set('X-Auth-Token', this.loggedUserChat['data'].authToken); + headersc = headersc.set('Sec-Fetch-Dest', 'attachment'); + headersc = headersc.set('Sec-Fetch-Mode', 'navigate'); + headersc = headersc.set('Cookie', 'rc_uid=fsMwcNdufWvdnChj7'); + headersc = headersc.set('Cookie', 'rc_token=MLbhikLQI4xo9_vL43HqheKPPbxjag7hKfwxe9AjcvY'); + // headersc = headersc.set("Host", "www.tabularium.pt"); + // headersc = headersc.set("Origin", "http://localhost:8100"); + headersc = headersc.set('Referer', 'http://localhost:8100/'); + let optionsc = { + headers: headersc, + withCredentials: true + }; + // let fullUrl = "https://www.tabularium.pt/" + url; + return this.http.get(url, optionsc).subscribe(() => { + // this.fileService.viewDocumentByUrl(url) + }); + } + + getAllChannels() { + return this.http.get(environment.apiChatUrl + 'channels.list', this.options); + } + + getAllUserChannels() { + return this.http.get(environment.apiChatUrl + 'channels.list.joined', this.options); + } + + getAllRooms() { + return this.http.get(environment.apiChatUrl + 'rooms.get', this.options); + } + + getRoomInfo(roomId: any) { + let params = new HttpParams(); + params = params.set("roomId", roomId); + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'rooms.info', opts); + } + + customsRooms(params: any) { + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'rooms.get', opts); + } + getAllPrivateGroups() { + return this.http.get(environment.apiChatUrl + 'groups.list', this.options); + } + + getAllUsers() { + console.log(this.options) + return this.http.get(environment.apiChatUrl + 'users.list', this.options); + } + getAllConnectedUsers() { + return this.http.get(environment.apiChatUrl + 'users.presence', this.options); + } + + //Load messages from roomId + getAllDirectMessages() { + return this.http.get(environment.apiChatUrl + 'im.list', this.options); + } + //Load messages from roomId + getRoomMessages(roomId: any) { + + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params, + } + return this.http.get(environment.apiChatUrl + 'im.history', opts); + } + + sendMessage(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'chat.sendMessage', body, opts); + } + + uploadFile(formData: any, rid: string) { + let url = environment.apiChatUrl + 'rooms.upload/' + rid; + let opts = { + headers: this.headers, + } + return this.http.post(url, formData, opts); + } + + deleteMessage(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'chat.delete', body, opts); + } + + leaveRoom(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'rooms.leave', body, opts); + } + //Load members from a chat + getMembers(roomId: any) { + + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'im.members', opts); + } + + getMemberInfo(userId: string) { + let params = new HttpParams(); + params = params.set("userId", userId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'users.info', opts); + } + + setUserStatus(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'users.setStatus', body, this.options); + } + + removeChatRoom(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'im.delete', body, this.options); + } + + createRoom(body: any) { + return this.http.post(environment.apiChatUrl + 'im.create', body, this.options); + } + getDirectMessage(roomId: string) { + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'im.messages', opts); + } + + /* GROUPS */ + addGroup(body: any) { + + return this.http.post(environment.apiChatUrl + 'groups.create', body, this.options); + } + setGroupCustomFields(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.setCustomFields', body, this.options); + } + + getGroupMembers(roomId: string) { + let params = new HttpParams(); + let url = environment.apiChatUrl + 'groups.members'; + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(url, opts); + } + + getChannelMembers(roomId: string) { + let params = new HttpParams(); + let url = environment.apiChatUrl + 'channels.members'; + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(url, opts); + } + /* GROUP MESSAGES */ + getPrivateGroupMessages(roomId: any) { + + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'groups.history', opts); + } + getPublicGroupMessages(roomId: any) { + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'channels.history', opts); + } + closeGroup(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.close', body, this.options); + } + closeChannel(body: any) { + return this.http.post(environment.apiChatUrl + 'channels.close', body, this.options); + } + leaveGroup(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.leave', body, this.options); + } + leaveChannel(body: any) { + return this.http.post(environment.apiChatUrl + 'channels.leave', body, this.options); + } + removeChannelMember(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'channels.kick', body, opts); + } + + addChannelOwner(body: any) { + return this.http.post(environment.apiChatUrl + 'channels.addOwner', body, this.options); + } + + addGroupOwner(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.addOwner', body, this.options); + } + + deleteGroup(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.delete', body, this.options); + } + + deleteChannel(body: any) { + return this.http.post(environment.apiChatUrl + 'channels.delete', body, this.options); + } + addUserToGroup(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.invite', body, this.options); + } + getGroupInfo(roomId: any) { + let params = new HttpParams(); + params = params.set("roomId", roomId); + + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl + 'groups.info', opts); + } + renameGroup(body: any) { + return this.http.post(environment.apiChatUrl + 'groups.rename', body, this.options); + } + removeGroupMember(body: any) { + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl + 'groups.kick', body, opts); + } + + async subscribe(roomId: any) { + + let params = new HttpParams(); + params = params.set("roomId", roomId); + let opts = { + headers: this.headers, + params: params + } + + this.http.get(environment.apiChatUrl + 'im.messages', opts).subscribe(async res => { + + + if (res == 502) { + // Connection timeout + // happens when the connection was pending for too long + // let's reconnect + await this.subscribe(roomId); + } else if (res != 200) { + // Show Error + //showMessage(response.statusText); + this.getRoomMessages(roomId) + // Reconnect in one second + await new Promise(resolve => setTimeout(resolve, 1000)); + await this.subscribe(roomId); + } else { + // Got message + //let message = await response.text(); + this.getRoomMessages(roomId) + await this.subscribe(roomId); + } + + }) + + + } + + setheader() { + try { + if (this.p.userPermission(this.p.permissionList.Chat.access)) { + this.loggedUserChat = this.authService.ValidatedUserChat; + this.headers = new HttpHeaders(); + + if (this.p.userPermission(this.p.permissionList.Chat.access)) { // this.headers = this.headers.set('X-User-Id', SessionStore.user.ChatData.data.userId); this.headers = this.headers.set('X-Auth-Token', SessionStore.user.ChatData.data.authToken); @@ -41,313 +353,31 @@ export class ChatService { headers: this.headers, }; } + } + } catch (error) { + console.log(error) } - } - getDocumentDetails(url:string) { - let headersc = new HttpHeaders(); - headersc = headersc.set('X-User-Id', this.loggedUserChat['data'].userId); - headersc = headersc.set('X-Auth-Token', this.loggedUserChat['data'].authToken); - headersc = headersc.set('Sec-Fetch-Dest', 'attachment'); - headersc = headersc.set('Sec-Fetch-Mode', 'navigate'); - headersc = headersc.set('Cookie', 'rc_uid=fsMwcNdufWvdnChj7'); - headersc = headersc.set('Cookie', 'rc_token=MLbhikLQI4xo9_vL43HqheKPPbxjag7hKfwxe9AjcvY'); - // headersc = headersc.set("Host", "www.tabularium.pt"); - // headersc = headersc.set("Origin", "http://localhost:8100"); - headersc = headersc.set('Referer', 'http://localhost:8100/'); - let optionsc = { - headers: headersc, - withCredentials: true - }; - // let fullUrl = "https://www.tabularium.pt/" + url; - return this.http.get(url, optionsc).subscribe(()=>{ - // this.fileService.viewDocumentByUrl(url) - }); - } - - getAllChannels() { - return this.http.get(environment.apiChatUrl+'channels.list', this.options); - } - - getAllUserChannels() { - return this.http.get(environment.apiChatUrl+'channels.list.joined', this.options); - } - - getAllRooms() { - return this.http.get(environment.apiChatUrl+'rooms.get', this.options); - } - - getRoomInfo(roomId:any) { - let params = new HttpParams(); - params = params.set("roomId", roomId); - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'rooms.info', opts); - } - - customsRooms(params:any){ - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'rooms.get', opts); - } - getAllPrivateGroups(){ - return this.http.get(environment.apiChatUrl+'groups.list', this.options); - } - - getAllUsers(){ - return this.http.get(environment.apiChatUrl+'users.list', this.options); - } - getAllConnectedUsers(){ - return this.http.get(environment.apiChatUrl+'users.presence', this.options); - } - - //Load messages from roomId - getAllDirectMessages(){ - return this.http.get(environment.apiChatUrl+'im.list', this.options); - } - //Load messages from roomId - getRoomMessages(roomId:any){ - - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params, - } - return this.http.get(environment.apiChatUrl+'im.history', opts); - } - - sendMessage(body:any) { - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'chat.sendMessage', body, opts); - } - - uploadFile(formData:any, rid:string){ - let url = environment.apiChatUrl+'rooms.upload/'+rid; - let opts = { - headers: this.headers, - } - return this.http.post(url, formData, opts); - } - - deleteMessage(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'chat.delete', body, opts); - } - - leaveRoom(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'rooms.leave', body, opts); - } - //Load members from a chat - getMembers(roomId:any){ - - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'im.members', opts); - } - - getMemberInfo(userId:string){ - let params = new HttpParams(); - params = params.set("userId", userId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'users.info', opts); - } - - setUserStatus(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'users.setStatus', body, this.options); - } - - removeChatRoom(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'im.delete', body, this.options); - } - - createRoom(body:any){ - return this.http.post(environment.apiChatUrl+'im.create', body, this.options); - } - getDirectMessage(roomId:string){ - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'im.messages', opts); - } - - /* GROUPS */ - addGroup(body:any){ - - return this.http.post(environment.apiChatUrl+'groups.create', body, this.options); - } - setGroupCustomFields(body:any){ - return this.http.post(environment.apiChatUrl+'groups.setCustomFields', body, this.options); - } - - getGroupMembers(roomId:string){ - let params = new HttpParams(); - let url=environment.apiChatUrl+'groups.members'; - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(url, opts); - } - - getChannelMembers(roomId:string){ - let params = new HttpParams(); - let url=environment.apiChatUrl+'channels.members'; - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(url, opts); - } - /* GROUP MESSAGES */ - getPrivateGroupMessages(roomId:any){ - - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'groups.history', opts); - } - getPublicGroupMessages(roomId:any){ - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'channels.history', opts); - } - closeGroup(body:any){ - return this.http.post(environment.apiChatUrl+'groups.close', body, this.options); - } - closeChannel(body:any){ - return this.http.post(environment.apiChatUrl+'channels.close', body, this.options); - } - leaveGroup(body:any){ - return this.http.post(environment.apiChatUrl+'groups.leave', body, this.options); - } - leaveChannel(body:any){ - return this.http.post(environment.apiChatUrl+'channels.leave', body, this.options); - } - removeChannelMember(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'channels.kick', body, opts); - } - - addChannelOwner(body:any){ - return this.http.post(environment.apiChatUrl+'channels.addOwner', body, this.options); - } - - addGroupOwner(body:any){ - return this.http.post(environment.apiChatUrl+'groups.addOwner', body, this.options); - } - - deleteGroup(body:any){ - return this.http.post(environment.apiChatUrl+'groups.delete', body, this.options); - } - - deleteChannel(body:any){ - return this.http.post(environment.apiChatUrl+'channels.delete', body, this.options); - } - addUserToGroup(body:any){ - return this.http.post(environment.apiChatUrl+'groups.invite', body, this.options); - } - getGroupInfo(roomId:any){ - let params = new HttpParams(); - params = params.set("roomId", roomId); - - let opts = { - headers: this.headers, - params: params - } - return this.http.get(environment.apiChatUrl+'groups.info', opts); - } - renameGroup(body:any){ - return this.http.post(environment.apiChatUrl+'groups.rename', body, this.options); - } - removeGroupMember(body:any){ - let opts = { - headers: this.headers, - } - return this.http.post(environment.apiChatUrl+'groups.kick', body, opts); - } - - async subscribe(roomId:any) { - - let params = new HttpParams(); - params = params.set("roomId", roomId); - let opts = { - headers: this.headers, - params: params - } - - this.http.get(environment.apiChatUrl+'im.messages', opts).subscribe(async res => { - - - if (res == 502) { - // Connection timeout - // happens when the connection was pending for too long - // let's reconnect - await this.subscribe(roomId); - } else if (res != 200) { - // Show Error - //showMessage(response.statusText); - this.getRoomMessages(roomId) - // Reconnect in one second - await new Promise(resolve => setTimeout(resolve, 1000)); - await this.subscribe(roomId); - } else { - // Got message - //let message = await response.text(); - this.getRoomMessages(roomId) - await this.subscribe(roomId); + refreshtoken() { + this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey); + let options = { + headers: this.headers + }; + return this.http.get(environment.apiURL + 'UserAuthentication/RegenereChatToken', options).subscribe(async res => { + let data = { + status: res['status'], + data: { + userId: res['data'].userId, + authToken: res['data'].authToken } - - }) - - - } + } + SessionStore.user.ChatData = data + SessionStore.save() + this.setheader() + console.log(res) + console.log(SessionStore.user.ChatData) + }); + } } diff --git a/src/app/shared/chat/edit-group/edit-group.page.ts b/src/app/shared/chat/edit-group/edit-group.page.ts index 6921d9ba9..dcd9ec80d 100644 --- a/src/app/shared/chat/edit-group/edit-group.page.ts +++ b/src/app/shared/chat/edit-group/edit-group.page.ts @@ -1,3 +1,4 @@ +import { HttpErrorResponse } from '@angular/common/http'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ModalController, PickerController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; @@ -33,6 +34,7 @@ export class EditGroupPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); this.getRoomInfo(); } diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts index c3afa32f0..d1b369472 100644 --- a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ModalController, NavParams } from '@ionic/angular'; import * as _ from 'lodash'; @@ -57,6 +57,7 @@ export class GroupContactsPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); //this.getRoomInfo(); this.loadUsers(); diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts index 5403fe7e0..cd7a7ee3b 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -34,6 +34,7 @@ import { AlertController } from '@ionic/angular'; import { File } from '@awesome-cordova-plugins/file/ngx'; import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx'; import { SessionStore } from 'src/app/store/session.service'; +import { HttpErrorResponse } from '@angular/common/http'; /* @@ -74,6 +75,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe scrollToBottomBtn = false; roomCountDownDate: string; roomCountDownTime: string; + isAdmin = false; @Input() roomId: string; @Output() closeAllDesktopComponents: EventEmitter = new EventEmitter(); @@ -159,10 +161,11 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } ngOnInit() { + this.chatService.refreshtoken(); console.log(this.roomId) this.loggedUser = this.loggedUserChat; //setTimeout(() => { - this.getRoomInfo(); + this.getRoomInfo() //}, 1000); this.getChatMembers(); //this.getMessageDB(); @@ -399,10 +402,18 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe async getRoomInfo() { this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory({}); let room = await this.chatService.getRoomInfo(this.roomId).toPromise(); + console.log('ROOM',room) this.room = room['room']; if (this.room.name) { this.roomName = this.room.name.split('-').join(' '); } + + + if(SessionStore.user.ChatData.data.userId == this.room.u._id){ + this.isAdmin = true + } else { + this.isAdmin = false + } if (this.room.customFields.countDownDate) { this.roomCountDownDate = this.room.customFields.countDownDate; @@ -501,82 +512,84 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } async openGroupMessagesOptions() { - - const enterAnimation = (baseEl: any) => { - const backdropAnimation = this.animationController.create() - .addElement(baseEl.querySelector('ion-backdrop')!) - .fromTo('opacity', '0.01', 'var(--backdrop-opacity)'); - - const wrapperAnimation = this.animationController.create() - .addElement(baseEl.querySelector('.modal-wrapper')!) - .keyframes([ - { offset: 0, opacity: '1', right: '-100%' }, - { offset: 1, opacity: '1', right: '0px' } - ]); - - return this.animationController.create() - .addElement(baseEl) - .easing('ease-out') - .duration(500) - .addAnimation([backdropAnimation, wrapperAnimation]); - } - - const leaveAnimation = (baseEl: any) => { - return enterAnimation(baseEl).direction('reverse'); - } - - - /* const popover = await this.popoverController.create({ - component: MessagesOptionsPage, - componentProps: { - roomId: this.dm._id, - }, - cssClass: 'messages-options', - event: ev, - translucent: true, - }); - return await popover.present(); */ + const enterAnimation = (baseEl: any) => { + const backdropAnimation = this.animationController.create() + .addElement(baseEl.querySelector('ion-backdrop')!) + .fromTo('opacity', '0.01', 'var(--backdrop-opacity)'); + + const wrapperAnimation = this.animationController.create() + .addElement(baseEl.querySelector('.modal-wrapper')!) + .keyframes([ + { offset: 0, opacity: '1', right: '-100%' }, + { offset: 1, opacity: '1', right: '0px' } + ]); + + return this.animationController.create() + .addElement(baseEl) + .easing('ease-out') + .duration(500) + .addAnimation([backdropAnimation, wrapperAnimation]); + } + + const leaveAnimation = (baseEl: any) => { + return enterAnimation(baseEl).direction('reverse'); + } + + + /* const popover = await this.popoverController.create({ + component: MessagesOptionsPage, + componentProps: { + roomId: this.dm._id, + }, + cssClass: 'messages-options', + event: ev, + translucent: true, + }); + return await popover.present(); */ + + + + + const modal = await this.modalController.create({ + enterAnimation, + leaveAnimation, + component: ChatPopoverPage, + cssClass: 'model profile-modal search-submodal', + componentProps: { + roomId: this.roomId, + members: this.members, + isAdmin: this.isAdmin + } + }); + await modal.present(); + modal.onDidDismiss().then(res => { + + if (res.data == 'leave') { + this.getRoomInfo(); + this.closeAllDesktopComponents.emit(); + this.showEmptyContainer.emit(); + this.wsChatMethodsService.hidingRoom(this.roomId); + } + else if (res.data == 'delete') { + this.closeAllDesktopComponents.emit(); + this.showEmptyContainer.emit(); + } + else if (res.data == 'cancel') { + + } + else if (res.data == 'edit') { + + //this.closeAllDesktopComponents.emit(); + this.openEditGroupPage.emit(this.roomId); + } + else { + this.roomName = res.data.name.split('-').join(' '); + + }; + + }); - - - const modal = await this.modalController.create({ - enterAnimation, - leaveAnimation, - component: ChatPopoverPage, - cssClass: 'model profile-modal search-submodal', - componentProps: { - roomId: this.roomId, - members: this.members, - } - }); - await modal.present(); - modal.onDidDismiss().then(res => { - - if (res.data == 'leave') { - this.getRoomInfo(); - this.closeAllDesktopComponents.emit(); - this.showEmptyContainer.emit(); - this.wsChatMethodsService.hidingRoom(this.roomId); - } - else if (res.data == 'delete') { - this.closeAllDesktopComponents.emit(); - this.showEmptyContainer.emit(); - } - else if (res.data == 'cancel') { - - } - else if (res.data == 'edit') { - - //this.closeAllDesktopComponents.emit(); - this.openEditGroupPage.emit(this.roomId); - } - else { - this.roomName = res.data.name.split('-').join(' '); - - }; - - }); } openSendGroupMessageOptions(ev?: any) { diff --git a/src/app/shared/chat/messages/contacts/contacts.page.ts b/src/app/shared/chat/messages/contacts/contacts.page.ts index 7e775e3e3..cf0821c9b 100644 --- a/src/app/shared/chat/messages/contacts/contacts.page.ts +++ b/src/app/shared/chat/messages/contacts/contacts.page.ts @@ -1,4 +1,4 @@ -import { HttpHeaders } from '@angular/common/http'; +import { HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import { ModalController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; @@ -42,7 +42,9 @@ export class ContactsPage implements OnInit { } ngOnInit() { + this.loadUsers(); + this.chatService.refreshtoken(); } onChange(event){ diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 623155e2e..ad1a1ac3f 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -31,6 +31,7 @@ import { AlertController, Platform } from '@ionic/angular'; import { File } from '@awesome-cordova-plugins/file/ngx'; import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx'; import { SessionStore } from 'src/app/store/session.service'; +import { HttpErrorResponse } from '@angular/common/http'; const IMAGE_DIR = 'stored-images'; @@ -154,6 +155,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } ngOnInit() { + this.chatService.refreshtoken(); this.scrollToBottom(); this.getChatMembers(); diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.html b/src/app/shared/popover/chat-popover/chat-popover.page.html index d85351acb..099781440 100644 --- a/src/app/shared/popover/chat-popover/chat-popover.page.html +++ b/src/app/shared/popover/chat-popover/chat-popover.page.html @@ -7,9 +7,9 @@
- +
- - + +
diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.ts b/src/app/shared/popover/chat-popover/chat-popover.page.ts index 19f1cb18d..68f54d8ac 100644 --- a/src/app/shared/popover/chat-popover/chat-popover.page.ts +++ b/src/app/shared/popover/chat-popover/chat-popover.page.ts @@ -5,6 +5,8 @@ import { ToastService } from 'src/app/services/toast.service'; import { ThemeService } from 'src/app/services/theme.service' import { SetRoomOwnerPage } from 'src/app/modals/set-room-owner/set-room-owner.page'; import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { HttpErrorResponse } from '@angular/common/http'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ @@ -16,6 +18,7 @@ export class ChatPopoverPage implements OnInit { roomId:string; room: any; members:any; + isAdmin = false; constructor( private popoverController: PopoverController, @@ -28,10 +31,11 @@ export class ChatPopoverPage implements OnInit { ) { this.roomId = this.navParams.get('roomId'); this.members = this.navParams.get('members'); + this.isAdmin = this.navParams.get('isAdmin'); } ngOnInit() { - + this.chatService.refreshtoken(); } close(action:any){ @@ -62,6 +66,7 @@ export class ChatPopoverPage implements OnInit { componentProps: { roomId: this.roomId, members: this.members, + isAdmin: this.isAdmin } }); await modal.present(); diff --git a/src/app/shared/popover/messages-options/messages-options.page.ts b/src/app/shared/popover/messages-options/messages-options.page.ts index ba6589fa9..7b79121bc 100644 --- a/src/app/shared/popover/messages-options/messages-options.page.ts +++ b/src/app/shared/popover/messages-options/messages-options.page.ts @@ -1,3 +1,4 @@ +import { HttpErrorResponse } from '@angular/common/http'; import { Component, OnInit } from '@angular/core'; import { ModalController, NavParams, PopoverController } from '@ionic/angular'; import { ChatService } from 'src/app/services/chat.service'; @@ -24,6 +25,7 @@ export class MessagesOptionsPage implements OnInit { } ngOnInit() { + this.chatService.refreshtoken(); } close(){