From 3043d519e532608b26bd3aef8998e3e0c2163770 Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Tue, 19 Jan 2021 16:10:40 +0100 Subject: [PATCH] implemented - get groups contacts -get messages contacts -order group conversation list to most recent -send message in group. --- src/app/pages/chat/chat.page.html | 6 +- src/app/pages/chat/chat.page.ts | 38 ++++++---- .../group-messages/group-messages.page.html | 21 ++++-- .../group-messages/group-messages.page.scss | 7 +- .../group-messages/group-messages.page.ts | 69 ++++++++++++++++++- .../pages/chat/messages/messages.page.scss | 2 - .../expediente-detail.page.ts | 3 +- src/app/services/chat.service.ts | 55 +++++++++++++-- 8 files changed, 163 insertions(+), 38 deletions(-) diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index 999f7b612..10611a82c 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -112,14 +112,14 @@
-
+
{{group.name}}
-
{{group.lastMessage._updatedAt | date: 'HH:mm'}}
+
{{group.lastMessage._updatedAt | date: 'HH:mm'}}
-
+
{{group.lastMessage.u.name}}: {{group.lastMessage.msg}}
diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 3bd982683..1ee38f462 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -72,17 +72,7 @@ export class ChatPage implements OnInit { this.getGroups(); }, 2000); } - getGroups(){ - this.showLoader = true; - this.result = this.chatService.getAllPrivateGroups().subscribe((res:any)=>{ - this.privateGroups = res.groups; - this.result = this.chatService.getAllUserChannels().subscribe((res:any)=>{ - this.publicGroups = res.channels; - this.allGroups = this.privateGroups.concat(this.publicGroups); - this.showLoader = false; - }); - }); - } + getDirectMessages(){ this.showLoader = true; @@ -93,7 +83,7 @@ export class ChatPage implements OnInit { this.userDirectMessages = res.ims.sort((a,b)=>{ var dateA = new Date(a.lastMessage._updatedAt).getTime(); var dateB = new Date(b.lastMessage._updatedAt).getTime(); - return dateB - dateB; + return dateB - dateA; }); console.log(this.userDirectMessages); @@ -107,6 +97,24 @@ export class ChatPage implements OnInit { console.log(this.dmUsers); */ }); } + getGroups(){ + this.showLoader = true; + this.result = this.chatService.getAllPrivateGroups().subscribe((res:any)=>{ + this.privateGroups = res.groups; + this.result = this.chatService.getAllUserChannels().subscribe((res:any)=>{ + this.publicGroups = res.channels; + let all = this.privateGroups.concat(this.publicGroups); + this.allGroups = all.sort((a,b)=>{ + var dateA = new Date(a.lastMessage._updatedAt).getTime(); + var dateB = new Date(b.lastMessage._updatedAt).getTime(); + return dateB - dateA; + }); + console.log(this.allGroups); + + this.showLoader = false; + }); + }); + } /* getConnectedChannels(){ this.showLoader = true; @@ -183,13 +191,15 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } - async openGroupMessages(user:any){ + async openGroupMessages(room:any){ + console.log(room); + const modal = await this.modalController.create({ component: GroupMessagesPage, cssClass: 'group-messages', backdropDismiss: false, componentProps: { - user: user, + room: room, }, }); await modal.present(); diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index ca0a8e4b8..d4acf5806 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -4,7 +4,7 @@
- Grupo de Trabalho A + {{room.name}}
@@ -15,8 +15,8 @@
- - {{contact}} + + {{member.name}},
@@ -31,7 +31,16 @@ A conversa original mantêm-se como chat individual
-
+
+
+ {{msg.u.username}} + {{msg._updatedAt | date: 'HH:mm' }} +
+
+ {{msg.msg}} +
+
+
@@ -106,7 +115,7 @@ - + diff --git a/src/app/pages/chat/group-messages/group-messages.page.scss b/src/app/pages/chat/group-messages/group-messages.page.scss index cbe5a62e7..7606ec8d5 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.scss +++ b/src/app/pages/chat/group-messages/group-messages.page.scss @@ -95,20 +95,19 @@ font-family: Roboto; overflow: auto; - .incoming, .outgoing{ + .incoming-true, .incoming-false{ width: 305px; padding: 15px 20px; border-radius: 10px; } - .incoming{ + .incoming-true{ margin: 10px 75px 10px 20px; background: #ebebeb; float: left; - } } - .outgoing{ + .incoming-false{ margin: 10px 20px 10px 75px; background: #e4f4fe; float: right; 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 5399545da..cbded2e83 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; -import { ActionSheetController, MenuController, ModalController, PopoverController } from '@ionic/angular'; +import { ActionSheetController, MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popover.page'; import { ContactsPage } from '../new-group/contacts/contacts.page'; @@ -11,8 +13,11 @@ import { NewGroupPage } from '../new-group/new-group.page'; styleUrls: ['./group-messages.page.scss'], }) export class GroupMessagesPage implements OnInit { - + loggedUser: any; message:any; + messages:any; + room:any; + members:any; contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; constructor( @@ -20,9 +25,67 @@ export class GroupMessagesPage implements OnInit { private modalController: ModalController, private actionSheetController: ActionSheetController, public popoverController: PopoverController, - ) { } + private chatService: ChatService, + private navParams: NavParams, + private authService: AuthService, + ) { + this.room = this.navParams.get('room'); + } ngOnInit() { + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + console.log(this.loggedUser); + }); + this.getGroupContacts(); + this.loadGroupMessages() + } + getGroupContacts(){ + //If group is private call getGroupMembers + if(this.room.t === 'p'){ + this.chatService.getGroupMembers(this.room._id).subscribe(res=>{ + console.log(res); + this.members = res['members']; + }); + } + //Otherwise call getChannelMembers for públic groups + else{ + this.chatService.getChannelMembers(this.room._id).subscribe(res=>{ + console.log(res); + this.members = res['members']; + }); + } + } + loadGroupMessages(){ + + //If group is private call getGroupMembers + if(this.room.t === 'p'){ + this.chatService.getPrivateGroupMessages(this.room._id).subscribe(res=>{ + console.log(res); + this.messages = res['messages'].reverse(); + }); + } + //Otherwise call getChannelMembers for públic groups + else{ + this.chatService.getPublicGroupMessages(this.room._id).subscribe(res=>{ + console.log(res); + this.messages = res['messages'].reverse(); + }); + } + } + sendMessage(){ + + let body = { + "message": + { + "rid": this.room._id, "msg": this.message + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + this.loadGroupMessages(); + }); + this.message = ""; } async actionSheet() { diff --git a/src/app/pages/chat/messages/messages.page.scss b/src/app/pages/chat/messages/messages.page.scss index c485116ff..64f00a658 100644 --- a/src/app/pages/chat/messages/messages.page.scss +++ b/src/app/pages/chat/messages/messages.page.scss @@ -116,14 +116,12 @@ width: 305px; padding: 15px 20px; border-radius: 10px; - } .incoming-true{ margin: 10px 75px 10px 20px; background: #ebebeb; float: left; - } } .incoming-false{ diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts index c84865057..ecc6680a0 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts @@ -84,8 +84,7 @@ export class ExpedienteDetailPage implements OnInit { } } - viewDocument() - { + viewDocument(){ const url: string = this.task.DocumentURL.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); const browser = this.iab.create(url,"_blank"); browser.show(); diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index f400ca1ca..7e2ecd145 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -56,9 +56,7 @@ export class ChatService { }); } */ - getAllDirectMessages(){ - return this.http.get(environment.apiChatUrl+'im.list', this.options); - } + getAllChannels(){ return this.http.get(environment.apiChatUrl+'channels.list', this.options); } @@ -96,7 +94,9 @@ export class ChatService { loadJoinedRooms(){ return this.http.get(environment.apiChatUrl+'im.list', this.options); } - + getAllDirectMessages(){ + return this.http.get(environment.apiChatUrl+'im.list', this.options); + } //Load messages from roomId getRoomMessages(roomId:any){ @@ -147,5 +147,52 @@ export class ChatService { } return this.http.get(environment.apiChatUrl+'im.messages', opts); } + + /* GROUPS */ + 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); + } + /* 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); + } + }