-
+
- {{group.name}}
+ {{group.name.split('-').join(' ')}}
-
{{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..072a646cb 100644
--- a/src/app/pages/chat/chat.page.ts
+++ b/src/app/pages/chat/chat.page.ts
@@ -1,4 +1,4 @@
-import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { AuthService } from 'src/app/services/auth.service';
@@ -17,12 +17,13 @@ import { NewchatPage } from './newchat/newchat.page';
})
export class ChatPage implements OnInit {
+ showLoader: boolean;
+
headers: HttpHeaders;
options:any;
X_User_Id:any;
X_Auth_Token:any;
- showLoader: boolean;
loggedUser: any;
/* Set segment variable */
segment:string;
@@ -55,22 +56,55 @@ export class ChatPage implements OnInit {
console.log(this.loggedUser);
});
- this.doRefresh();
- this.loadJoinedRooms();
+ this.load();
}
- loadJoinedRooms(){
- this.chatService.loadJoinedRooms().subscribe(res => {
+
+ onSegmentChange(){
+ this.load();
+ }
+ doRefresh(ev:any){
+ this.load();
+ ev.target.complete();
+ }
+ load(){
+ switch (this.segment)
+ {
+ case "Contactos":
+ this.getDirectMessages();
+ break;
+
+ case "Grupos":
+ this.getGroups();
+ break;
+ }
+ }
+ customRoom(){
+ let params = new HttpParams();
+ params = params.set("types", "c");
+ this.chatService.customsRooms(params).subscribe(res=>{
console.log(res);
});
}
- onSegmentChange(){
- this.doRefresh();
+
+ getDirectMessages(){
+ this.showLoader = true;
+
+ this.chatService.getAllDirectMessages().subscribe((res:any)=>{
+ console.log(res.ims);
+
+ this.userDirectMessages = res.ims.sort((a,b)=>{
+ var dateA = new Date(a._updatedAt).getTime();
+ var dateB = new Date(b._updatedAt).getTime();
+ this.showLoader = false;
+ return dateB - dateA;
+ });
+ console.log(this.userDirectMessages);
+ });
}
- doRefresh(){
- setInterval(()=>{
- this.getDirectMessages();
- this.getGroups();
- }, 2000);
+ getChatMembers(){
+ this.chatService.getMembers(this.userDirectMessages[0]._id).subscribe(res=> {
+ this.dmUsers = res['members'].filter(data => data.username != this.loggedUser.me.username)
+ });
}
getGroups(){
this.showLoader = true;
@@ -78,67 +112,18 @@ export class ChatPage implements OnInit {
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;
+ let all = this.privateGroups.concat(this.publicGroups);
+ this.allGroups = all.sort((a,b)=>{
+ var dateA = new Date(a._updatedAt).getTime();
+ var dateB = new Date(b._updatedAt).getTime();
+ this.showLoader = false;
+ return dateB - dateA;
+ });
+ console.log(this.allGroups);
});
});
}
- getDirectMessages(){
- this.showLoader = true;
-
- /* this.result = */
- this.chatService.getAllDirectMessages().subscribe((res:any)=>{
- console.log(res.ims);
-
- 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;
- });
- console.log(this.userDirectMessages);
-
- this.showLoader = false;
- });
- }
- 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); */
- });
- }
- /* getConnectedChannels(){
- this.showLoader = true;
-
- this.result = this.chatService.getAllUserChannels().subscribe((res:any)=>{
- this.userChannels = res.channels;
- console.log(res);
-
- this.showLoader = false;
- });
- } */
-
- /* getConnectedRooms(){
- this.showLoader = true;
-
- this.result = this.chatService.getAllRooms().subscribe((res:any)=>{
- this.userRooms = res.update;
- console.log(res.update);
-
- this.showLoader = false;
- });
- } */
-
- /* getConnectedUsers(){
- this.showLoader = true;
-
- this.result = this.chatService.getAllConnectedUsers().subscribe((res:any)=>{
- this.userConnectedList = res.users;
-
- this.showLoader = false;
- });
- } */
-
+
async startConversation(selectedUser) {
const modal = await this.modalController.create({
component: ConversationPage,
@@ -183,13 +168,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/edit-group/edit-group-routing.module.ts b/src/app/pages/chat/edit-group/edit-group-routing.module.ts
new file mode 100644
index 000000000..bb3c59158
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group-routing.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+
+import { EditGroupPage } from './edit-group.page';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: EditGroupPage
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class EditGroupPageRoutingModule {}
diff --git a/src/app/pages/chat/edit-group/edit-group.module.ts b/src/app/pages/chat/edit-group/edit-group.module.ts
new file mode 100644
index 000000000..f5cbe4eae
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group.module.ts
@@ -0,0 +1,22 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+
+import { IonicModule } from '@ionic/angular';
+
+import { EditGroupPageRoutingModule } from './edit-group-routing.module';
+
+import { EditGroupPage } from './edit-group.page';
+import { SharedModule } from 'src/app/shared/shared.module';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ IonicModule,
+ SharedModule,
+ EditGroupPageRoutingModule
+ ],
+ declarations: [EditGroupPage]
+})
+export class EditGroupPageModule {}
diff --git a/src/app/pages/chat/edit-group/edit-group.page.html b/src/app/pages/chat/edit-group/edit-group.page.html
new file mode 100644
index 000000000..70ef13159
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group.page.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+ Grupo Ultra-secreto
+
+
+
+
+
+
+
diff --git a/src/app/pages/chat/edit-group/edit-group.page.scss b/src/app/pages/chat/edit-group/edit-group.page.scss
new file mode 100644
index 000000000..428f62e08
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group.page.scss
@@ -0,0 +1,151 @@
+ion-content{
+ --background:transparent;
+}
+.header-toolbar{
+ --background:transparent;
+ --opacity: 1;
+}
+.div-top-header{
+ width: 400px;
+ margin: 0 auto;
+ background-color: #0782c9;
+ overflow: auto;
+ padding-top: 15px;
+ border: 0!important;
+
+ .div-search{
+ font-size: 45px;
+ float: left;
+ margin: 0 0 0 10px
+ }
+ .div-logo{
+ background: transparent;
+ width: 140px;
+ margin: 5px 0 0px 71px;
+ float: left;
+ }
+ .div-logo img{
+ width: 100%;
+ }
+ .div-profile{
+ font-size: 45px;
+ float: right;
+ margin-right: 10px;
+ }
+
+ }
+ .main-header{
+ width: 100%; /* 400px */
+ height: 100%;
+ font-family: Roboto;
+ border-top-left-radius: 25px;
+ border-top-right-radius: 25px;
+ background-color: #fff;
+ overflow:hidden;
+ padding: 30px 20px 0px 20px;
+ color:#000;
+ transform: translate3d(0, 1px, 0);
+
+ .title-content{
+ width: 360px;
+ margin: 0px auto;
+ overflow: auto;
+ padding: 0 !important;
+ background: #fff;
+
+ .left{
+ width: 37px;
+ float: left;
+ font-size: 35px;
+ overflow: auto;
+ }
+ .middle{
+ padding: 0!important;
+ float: left;
+ width: 221px;
+ margin: 2.5px 0 0 5px;
+ }
+ .right{
+ padding: 0!important;
+ float: right;
+ font-size: 15px;
+ color: #0782c9;
+ margin: 8px 0 0 5px;
+ }
+ }
+
+ .title{
+ font-size: 25px;
+ }
+ .div-icon{
+ width: 40px;
+ float: right;
+ font-size: 35px;
+ overflow: auto;
+ padding: 1px;
+ }
+ .div-icon ion-icon{
+ float: right;
+ padding-left: 20px;
+ }
+
+
+ }
+ .main-content{
+ width: 100%; /* 400px */
+ height: 100%;
+ font-family: Roboto;
+ margin: 0 auto;
+ background-color: #fff;
+ overflow:auto;
+ padding: 15px 20px 0 20px;
+
+ .item-container{
+ width: 360px;
+ margin: 15px auto;
+ border: 1px solid #ebebeb;
+ border-radius: 5px;
+ padding-left: 10px;
+ }
+
+ .item-container-no-border{
+ display: flex;
+ width: 360px;
+ margin: 25px auto;
+ border-radius: 5px;
+ align-items: center;
+ }
+
+ .item-container-no-border ion-label{
+ padding-left: 10px;
+ font-size: 12px;
+ color: #000;
+ }
+ }
+
+ .container-div{
+ margin-bottom: 15px;
+ overflow: auto;
+
+ .ion-item-class-2{
+ width: 360px;
+ margin: 0px auto;
+
+ .ion-icon-class{
+ width: 45px;
+ height: 45px;
+ float: left;
+ padding: 10px;
+ font-size: 25px;
+ }
+ }
+ .ion-input-class{
+ width: 315px;
+ height: 45px;
+ border: 1px solid #ebebeb;
+ border-radius: 5px;
+ padding-left: 5px;
+ padding-right: 10px;
+ float: left;
+ }
+ }
diff --git a/src/app/pages/chat/edit-group/edit-group.page.spec.ts b/src/app/pages/chat/edit-group/edit-group.page.spec.ts
new file mode 100644
index 000000000..ee3f62d13
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group.page.spec.ts
@@ -0,0 +1,24 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { IonicModule } from '@ionic/angular';
+
+import { EditGroupPage } from './edit-group.page';
+
+describe('EditGroupPage', () => {
+ let component: EditGroupPage;
+ let fixture: ComponentFixture
;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ EditGroupPage ],
+ imports: [IonicModule.forRoot()]
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(EditGroupPage);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ }));
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/chat/edit-group/edit-group.page.ts b/src/app/pages/chat/edit-group/edit-group.page.ts
new file mode 100644
index 000000000..c267038f5
--- /dev/null
+++ b/src/app/pages/chat/edit-group/edit-group.page.ts
@@ -0,0 +1,169 @@
+import { Component, OnInit } from '@angular/core';
+import { ModalController, NavParams, PickerController } from '@ionic/angular';
+import { ChatService } from 'src/app/services/chat.service';
+
+@Component({
+ selector: 'app-edit-group',
+ templateUrl: './edit-group.page.html',
+ styleUrls: ['./edit-group.page.scss'],
+})
+export class EditGroupPage implements OnInit {
+ showLoader: boolean;
+ displayDuration: any;
+ showDuration: boolean;
+ selectedDuration = ['','',''];
+ groupName:string;
+ room:any;
+
+ constructor(
+ private modalController: ModalController,
+ private pickerController: PickerController,
+ private chatService: ChatService,
+ private navParams: NavParams,
+ ) {
+ this.room = this.navParams.get('room');
+ this.groupName = this.room.name.split('-').join(' ');
+ }
+
+ ngOnInit() {
+ console.log(this.room);
+ }
+
+ close(){
+ this.modalController.dismiss();
+ }
+
+ changeGroupName(){
+ if(this.groupName.trim().length > 1){
+ let name = this.groupName.split(' ').join('-');
+ let body = {
+ "roomId": this.room._id,
+ "name": name,
+ }
+ this.chatService.renameGroup(body).subscribe(res=>{
+ this.modalController.dismiss(res['group']);
+ });
+ }
+ else{
+ console.log("Invalid name!");
+ }
+ }
+ _ionChange(event){
+ this.showDuration = event.detail.checked;
+ }
+ async showPicker(){
+ const picker = await this.pickerController.create({
+ cssClass: '',
+ buttons: [
+ {
+ text: 'Cancelar', role: 'cancel', cssClass: 'btn-cancel'
+ },
+ {
+ text: 'Ok',
+ cssClass: 'btn-cancel',
+ handler:(value:any)=>{
+ console.log('button done pressed');
+ this.selectedDuration = [
+ value.days.value,
+ value.hours.value,
+ value.minutes.value,
+ ]
+ console.log(this.selectedDuration);
+ if(value.days.value != null && value.hours.value != null && value.minutes.value != null){
+ if(value.days.value > 0){
+ if(value.days.value == 1){
+ if(value.hours.value == 1){
+ this.displayDuration = value.days.value + " day " +
+ value.hours.value + " hora " +
+ value.minutes.value + " minutos";
+ }
+ else{
+ this.displayDuration = value.days.value + " days " +
+ value.hours.value + " horas " +
+ value.minutes.value + " minutos";
+ }
+ }
+ else{
+ if(value.hours.value == 1){
+ this.displayDuration = value.days.value + " days " +
+ value.hours.value + " hora " +
+ value.minutes.value + " minutos";
+ }
+ else{
+ this.displayDuration = value.days.value + " days " +
+ value.hours.value + " horas " +
+ value.minutes.value + " minutos";
+ }
+ }
+ }
+ else{
+ if(value.hours.value == 1){
+ this.displayDuration = value.hours.value + " hora " +
+ value.minutes.value + " minutos";
+ }
+ else{
+ this.displayDuration = value.hours.value + " horas " +
+ value.minutes.value + " minutos";
+ }
+ }
+ }
+ },
+ },
+ ],
+ columns: [
+ {
+ name: 'days',
+ prefix: 'Dias',
+ options: [
+ { text: '0', value: 0 },
+ { text: '1', value: 1 },
+ { text: '2', value: 2 },
+ { text: '3', value: 3 },
+ { text: '4', value: 4 },
+ ]
+ },
+ {
+ name: 'hours',
+ prefix: 'Horas',
+ options: [
+ { text: '0', value: 0 },
+ { text: '1', value: 1 },
+ { text: '2', value: 2 },
+ { text: '3', value: 3 },
+ { text: '4', value: 4 },
+ { text: '5', value: 5 },
+ { text: '6', value: 6 },
+ { text: '7', value: 7 },
+ { text: '8', value: 8 },
+ ]
+ },
+ {
+ name: 'minutes',
+ prefix: 'Minutos',
+ selectedIndex: 3,
+ options: [
+ { text: '0', value: 0 },
+ { text: '5', value: 5 },
+ { text: '10', value: 10 },
+ { text: '15', value: 15 },
+ { text: '20', value: 20 },
+ { text: '25', value: 25 },
+ { text: '30', value: 30 },
+ { text: '35', value: 35 },
+ { text: '45', value: 45 },
+ { text: '50', value: 50 },
+ { text: '55', value: 55 },
+ ]
+ }
+ ]
+ });
+ await picker.present();
+ picker.onDidDismiss().then(async data =>{
+ let day = await picker.getColumn('days');
+ let hour = await picker.getColumn('hours');
+ let minutes = await picker.getColumn('minutes');
+ });
+
+ }
+
+}
diff --git a/src/app/pages/chat/group-messages/group-contacts/group-contacts.module.ts b/src/app/pages/chat/group-messages/group-contacts/group-contacts.module.ts
index 9ec279e82..1828ecb73 100644
--- a/src/app/pages/chat/group-messages/group-contacts/group-contacts.module.ts
+++ b/src/app/pages/chat/group-messages/group-contacts/group-contacts.module.ts
@@ -8,6 +8,7 @@ import { GroupContactsPageRoutingModule } from './group-contacts-routing.module'
import { GroupContactsPage } from './group-contacts.page';
import { SharedModule } from 'src/app/shared/shared.module';
+import { PipesModule } from 'src/app/pipes/pipes.module';
@NgModule({
imports: [
@@ -15,6 +16,7 @@ import { SharedModule } from 'src/app/shared/shared.module';
FormsModule,
IonicModule,
SharedModule,
+ PipesModule,
GroupContactsPageRoutingModule
],
declarations: [GroupContactsPage]
diff --git a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html
index 190194b56..f63a629a8 100644
--- a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html
+++ b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html
@@ -8,13 +8,13 @@
Contactos
-
+