From 48dbaa7744d0d1cb6334e5936905d35fe22190bb Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 14 Jan 2021 16:51:16 +0100 Subject: [PATCH] -add start direct message method from mobile App - more improvements --- src/app/pages/chat/chat.page.ts | 12 ++-- .../chat/messages/contacts/contacts.page.html | 6 +- .../chat/messages/contacts/contacts.page.scss | 24 ++++++-- .../chat/messages/contacts/contacts.page.ts | 61 ++++++++++++++++--- src/app/pages/chat/messages/messages.page.ts | 8 +-- src/app/pipes/filter.pipe.ts | 8 +-- src/app/services/chat.service.ts | 15 ++++- 7 files changed, 105 insertions(+), 29 deletions(-) diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 059636dc6..dd4ade5b2 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -67,10 +67,10 @@ export class ChatPage implements OnInit { this.doRefresh(); } doRefresh(){ - setInterval(()=>{ + //setInterval(()=>{ this.getDirectMessages(); this.getGroups(); - }, 2000); + //}, 2000); } getGroups(){ this.showLoader = true; @@ -88,7 +88,7 @@ export class ChatPage implements OnInit { this.result = this.chatService.getAllDirectMessages().subscribe((res:any)=>{ this.userDirectMessages = res.ims; - console.log(this.userDirectMessages); + console.log(res); this.showLoader = false; }); @@ -96,8 +96,8 @@ export class ChatPage implements OnInit { getChatMembers(){ this.chatService.getMembers(this.userDirectMessages[0]._id).subscribe(res=> { this.dmUsers = res['members'].filter(data => data.username != this.loggedUser.me.username) - console.log(res); - console.log(this.dmUsers); + /* console.log(res); + console.log(this.dmUsers); */ }); } /* getConnectedChannels(){ @@ -163,6 +163,8 @@ export class ChatPage implements OnInit { modal.onDidDismiss(); } async openMessages(dm:any){ + console.log(dm); + const modal = await this.modalController.create({ component: MessagesPage, cssClass: 'group-messages', diff --git a/src/app/pages/chat/messages/contacts/contacts.page.html b/src/app/pages/chat/messages/contacts/contacts.page.html index 739f723c0..b2f8e9705 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.html +++ b/src/app/pages/chat/messages/contacts/contacts.page.html @@ -13,7 +13,7 @@ @@ -32,10 +32,10 @@ {{header}} -
+

{{user.name}}

- +
diff --git a/src/app/pages/chat/messages/contacts/contacts.page.scss b/src/app/pages/chat/messages/contacts/contacts.page.scss index ff8bf0bca..1eb104bdb 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.scss +++ b/src/app/pages/chat/messages/contacts/contacts.page.scss @@ -61,6 +61,8 @@ border: 1px solid #ebebeb; margin: 5px 20px 5px 20px; border-radius: 5px; + height: auto; + padding: 0 !important; } .search ion-searchbar{ /* border: 1px solid green; */ @@ -69,7 +71,7 @@ padding: 0 !important; --border-radius: 5px; --box-shadow: none; - overflow: auto; + overflow: hidden; --icon-color:#0d89d1; } @@ -111,12 +113,24 @@ } .item-user .icon{ width: 10%; + font-size: 10px; display: block; text-align: right; overflow: auto; } - .icon ion-icon{ - font-size: 10px; - color:#99e47b; - } + .online{ + color:#99e47b; + } + .offline{ + color:#cbced1; + } + .away{ + color:#ffd21f; + } + .invisible{ + color:#cbced1; + } + .busy{ + color:#f5455c; + } } \ No newline at end of file diff --git a/src/app/pages/chat/messages/contacts/contacts.page.ts b/src/app/pages/chat/messages/contacts/contacts.page.ts index dfae3aab5..ff86e8d5b 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.ts +++ b/src/app/pages/chat/messages/contacts/contacts.page.ts @@ -20,6 +20,8 @@ export class ContactsPage implements OnInit { options:any; contacts:any; textSearch:string; + room:any; + dm:any; constructor( private modalController: ModalController, @@ -32,6 +34,8 @@ export class ContactsPage implements OnInit { this.loggedUser=res; }); this.textSearch=""; + this.dm=null; + this.room=null; } ngOnInit() { @@ -46,10 +50,8 @@ export class ContactsPage implements OnInit { this.options = { headers: this.headers, }; - this.chatService.getAllUsers().subscribe((res:any)=>{ console.log(res.users); - this.contacts = res.users.filter(data => data.username != this.loggedUser.me.username); this.users = this.contacts.sort((a,b) => { if(a.name < b.name){ @@ -60,11 +62,8 @@ export class ContactsPage implements OnInit { } return 0; }); - this.showLoader = false; }); - - } separateLetter(record, recordIndex, records){ @@ -90,17 +89,65 @@ export class ContactsPage implements OnInit { clicked(){ console.log('clicked'); - } - async openMessages(){ + + createRoom(username:string){ + let body = { + username: username, + } + this.chatService.createRoom(body).subscribe(res => { + console.log(res); + this.room = res['room']; + this.getDirectMessage(this.room._id); + }); + } + getDirectMessage(roomId:any){ + console.log(roomId); + + this.chatService.getAllDirectMessages().subscribe(res=>{ + let result = res['ims'].filter(data => data._id == roomId); + this.dm = result[0]; + console.log(this.dm); + this.openModal(this.dm); + }); + } + async openModal(dm:any){ this.close(); + console.log(dm); + const modal = await this.modalController.create({ component: MessagesPage, cssClass: 'group-messages', backdropDismiss: false, + componentProps: { + dm: dm, + }, }); await modal.present(); modal.onDidDismiss(); } + async openMessages(username:string){ + /* this.close(); */ + + let dm:any; + //Create new room + this.createRoom(username); + //Get direct messages (dm) + /* this.getDirectMessage(this.room._id); */ + console.log(this.dm); + + + /* const modal = await this.modalController.create({ + component: MessagesPage, + cssClass: 'group-messages', + backdropDismiss: false, + componentProps: { + dm: dm, + }, + }); + await modal.present(); + modal.onDidDismiss(); */ + } + } diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 203ca265e..d11c68f3f 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -44,12 +44,12 @@ export class MessagesPage implements OnInit, AfterViewChecked { console.log(this.loggedUser); }); - console.log(this.dm); + /* console.log(this.dm); */ - setInterval(()=>{ + //setInterval(()=>{ this.checkUserPresence(); this.loadMessages(); - }, 2000); + //}, 2000); this.getChatMembers(); @@ -93,7 +93,7 @@ export class MessagesPage implements OnInit, AfterViewChecked { loadMessages(){ this.chatService.getRoomMessages(this.dm._id).subscribe(res => { - console.log(res); + /* console.log(res); */ this.messages = res['messages'].reverse(); }) } diff --git a/src/app/pipes/filter.pipe.ts b/src/app/pipes/filter.pipe.ts index a6a6398c9..68440de14 100644 --- a/src/app/pipes/filter.pipe.ts +++ b/src/app/pipes/filter.pipe.ts @@ -5,15 +5,15 @@ import { Pipe, PipeTransform } from '@angular/core'; }) export class FilterPipe implements PipeTransform { - transform(contatcs: any[], text:string, column:string): any { - + transform(array: any[], text:string, column:string): any { + if(text === ''){ - return contatcs; + return array; } text = text.toLowerCase(); - return contatcs.filter(item =>{ + return array.filter(item =>{ return item[column].toLowerCase().includes(text); }); } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 109084a6e..f400ca1ca 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -132,7 +132,20 @@ export class ChatService { let opts = { headers: this.headers, } - return this.http.post(environment.apiChatUrl+'im.close', body, opts); + return this.http.post(environment.apiChatUrl+'im.close', 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); } }