From 21eb3d3cf15138ac270aa5813364d533beb63578 Mon Sep 17 00:00:00 2001 From: Tiago Kayaya Date: Fri, 30 Oct 2020 15:22:35 +0100 Subject: [PATCH] add show total users in rocket chat server --- src/app/guards/home.guard.spec.ts | 16 ++++ src/app/guards/home.guard.ts | 32 ++++++++ src/app/guards/index.guard.spec.ts | 16 ++++ src/app/guards/index.guard.ts | 31 ++++++++ src/app/home/home-routing.module.ts | 6 ++ src/app/index/index-routing.module.ts | 2 + src/app/pages/chat/chat-routing.module.ts | 36 +++++---- src/app/pages/chat/chat.page.html | 74 ++++++++++-------- src/app/pages/chat/chat.page.scss | 67 +++++----------- src/app/pages/chat/chat.page.ts | 63 ++++++--------- .../conversation-routing.module.ts | 17 ++++ .../chat/conversation/conversation.module.ts | 20 +++++ .../chat/conversation/conversation.page.html | 49 ++++++++++++ .../chat/conversation/conversation.page.scss | 55 +++++++++++++ .../conversation/conversation.page.spec.ts | 24 ++++++ .../chat/conversation/conversation.page.ts | 73 +++++++++++++++++ .../chat/newchat/newchat-routing.module.ts | 17 ++++ src/app/pages/chat/newchat/newchat.module.ts | 20 +++++ src/app/pages/chat/newchat/newchat.page.html | 20 +++++ src/app/pages/chat/newchat/newchat.page.scss | 3 + .../pages/chat/newchat/newchat.page.spec.ts | 24 ++++++ src/app/pages/chat/newchat/newchat.page.ts | 65 +++++++++++++++ src/app/pages/login/login.page.ts | 32 +++++++- src/app/resolvers/userData.resolver.ts | 13 +++ src/app/services/auth.service.ts | 46 +++++++++-- src/app/services/chat.service.spec.ts | 16 ++++ src/app/services/chat.service.ts | 41 ++++++++++ src/app/services/fcm.service.spec.ts | 16 ++++ src/app/services/fcm.service.ts | 64 +++++++++++++++ src/app/services/http.service.spec.ts | 16 ++++ src/app/services/http.service.ts | 26 ++++++ .../images/icons-arrow-arrow-down-25-copy.png | Bin 0 -> 672 bytes .../icons-arrow-arrow-down-25-copy@2x.png | Bin 0 -> 1245 bytes .../icons-arrow-arrow-down-25-copy@3x.png | Bin 0 -> 2048 bytes .../images/icons-arrow-arrow-down-25.png | Bin 0 -> 632 bytes .../images/icons-arrow-arrow-down-25.svg | 16 ++++ .../images/icons-arrow-arrow-down-25@2x.png | Bin 0 -> 1064 bytes .../images/icons-arrow-arrow-down-25@3x.png | Bin 0 -> 1578 bytes src/assets/images/icons-chat-chat-40.png | Bin 0 -> 1091 bytes src/assets/images/icons-chat-chat-40.svg | 15 ++++ src/assets/images/icons-chat-chat-40@2x.png | Bin 0 -> 2232 bytes src/assets/images/icons-chat-chat-40@3x.png | Bin 0 -> 3372 bytes .../images/icons-chat-group-chat-40.png | Bin 0 -> 1449 bytes .../images/icons-chat-group-chat-40.svg | 16 ++++ .../images/icons-chat-group-chat-40@2x.png | Bin 0 -> 3074 bytes .../images/icons-chat-group-chat-40@3x.png | Bin 0 -> 4705 bytes .../images/icons-chat-new-conversation.png | Bin 0 -> 1353 bytes .../images/icons-chat-new-conversation.svg | 16 ++++ .../images/icons-chat-new-conversation@2x.png | Bin 0 -> 2786 bytes .../images/icons-chat-new-conversation@3x.png | Bin 0 -> 4502 bytes src/assets/images/icons-chat-new-group.png | Bin 0 -> 1624 bytes src/assets/images/icons-chat-new-group.svg | 19 +++++ src/assets/images/icons-chat-new-group@2x.png | Bin 0 -> 3428 bytes src/assets/images/icons-chat-new-group@3x.png | Bin 0 -> 5463 bytes src/assets/images/icons-chat-send.png | Bin 0 -> 1521 bytes src/assets/images/icons-chat-send.svg | 23 ++++++ src/assets/images/icons-chat-send@2x.png | Bin 0 -> 3012 bytes src/assets/images/icons-chat-send@3x.png | Bin 0 -> 4935 bytes src/assets/images/icons-nav-grupos-active.png | Bin 0 -> 1664 bytes .../images/icons-nav-grupos-active@2x.png | Bin 0 -> 3395 bytes .../images/icons-nav-grupos-active@3x.png | Bin 0 -> 5267 bytes src/environments/environment.prod.ts | 1 + src/environments/environment.ts | 3 +- 63 files changed, 970 insertions(+), 139 deletions(-) create mode 100644 src/app/guards/home.guard.spec.ts create mode 100644 src/app/guards/home.guard.ts create mode 100644 src/app/guards/index.guard.spec.ts create mode 100644 src/app/guards/index.guard.ts create mode 100644 src/app/pages/chat/conversation/conversation-routing.module.ts create mode 100644 src/app/pages/chat/conversation/conversation.module.ts create mode 100644 src/app/pages/chat/conversation/conversation.page.html create mode 100644 src/app/pages/chat/conversation/conversation.page.scss create mode 100644 src/app/pages/chat/conversation/conversation.page.spec.ts create mode 100644 src/app/pages/chat/conversation/conversation.page.ts create mode 100644 src/app/pages/chat/newchat/newchat-routing.module.ts create mode 100644 src/app/pages/chat/newchat/newchat.module.ts create mode 100644 src/app/pages/chat/newchat/newchat.page.html create mode 100644 src/app/pages/chat/newchat/newchat.page.scss create mode 100644 src/app/pages/chat/newchat/newchat.page.spec.ts create mode 100644 src/app/pages/chat/newchat/newchat.page.ts create mode 100644 src/app/resolvers/userData.resolver.ts create mode 100644 src/app/services/chat.service.spec.ts create mode 100644 src/app/services/chat.service.ts create mode 100644 src/app/services/fcm.service.spec.ts create mode 100644 src/app/services/fcm.service.ts create mode 100644 src/app/services/http.service.spec.ts create mode 100644 src/app/services/http.service.ts create mode 100644 src/assets/images/icons-arrow-arrow-down-25-copy.png create mode 100644 src/assets/images/icons-arrow-arrow-down-25-copy@2x.png create mode 100644 src/assets/images/icons-arrow-arrow-down-25-copy@3x.png create mode 100644 src/assets/images/icons-arrow-arrow-down-25.png create mode 100644 src/assets/images/icons-arrow-arrow-down-25.svg create mode 100644 src/assets/images/icons-arrow-arrow-down-25@2x.png create mode 100644 src/assets/images/icons-arrow-arrow-down-25@3x.png create mode 100644 src/assets/images/icons-chat-chat-40.png create mode 100644 src/assets/images/icons-chat-chat-40.svg create mode 100644 src/assets/images/icons-chat-chat-40@2x.png create mode 100644 src/assets/images/icons-chat-chat-40@3x.png create mode 100644 src/assets/images/icons-chat-group-chat-40.png create mode 100644 src/assets/images/icons-chat-group-chat-40.svg create mode 100644 src/assets/images/icons-chat-group-chat-40@2x.png create mode 100644 src/assets/images/icons-chat-group-chat-40@3x.png create mode 100644 src/assets/images/icons-chat-new-conversation.png create mode 100644 src/assets/images/icons-chat-new-conversation.svg create mode 100644 src/assets/images/icons-chat-new-conversation@2x.png create mode 100644 src/assets/images/icons-chat-new-conversation@3x.png create mode 100644 src/assets/images/icons-chat-new-group.png create mode 100644 src/assets/images/icons-chat-new-group.svg create mode 100644 src/assets/images/icons-chat-new-group@2x.png create mode 100644 src/assets/images/icons-chat-new-group@3x.png create mode 100644 src/assets/images/icons-chat-send.png create mode 100644 src/assets/images/icons-chat-send.svg create mode 100644 src/assets/images/icons-chat-send@2x.png create mode 100644 src/assets/images/icons-chat-send@3x.png create mode 100644 src/assets/images/icons-nav-grupos-active.png create mode 100644 src/assets/images/icons-nav-grupos-active@2x.png create mode 100644 src/assets/images/icons-nav-grupos-active@3x.png diff --git a/src/app/guards/home.guard.spec.ts b/src/app/guards/home.guard.spec.ts new file mode 100644 index 000000000..b14fb3fe3 --- /dev/null +++ b/src/app/guards/home.guard.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { HomeGuard } from './home.guard'; + +describe('HomeGuard', () => { + let guard: HomeGuard; + + beforeEach(() => { + TestBed.configureTestingModule({}); + guard = TestBed.inject(HomeGuard); + }); + + it('should be created', () => { + expect(guard).toBeTruthy(); + }); +}); diff --git a/src/app/guards/home.guard.ts b/src/app/guards/home.guard.ts new file mode 100644 index 000000000..3fcf2d2e8 --- /dev/null +++ b/src/app/guards/home.guard.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; +import { Observable } from 'rxjs'; +import { AuthConnstants } from '../config/auth-constants'; +import { StorageService } from '../services/storage.service'; + +@Injectable({ + providedIn: 'root' +}) +export class HomeGuard implements CanActivate { + constructor( + public storageService:StorageService, + private router:Router + ){} + + canActivate(): Promise{ + return new Promise(resolve => { + this.storageService.get(AuthConnstants.AUTH).then(res => { + if(res){ + resolve(true); + } + else{ + this.router.navigate(['']); + resolve(false); + } + }).catch(err =>{ + resolve(false); + }) + }); + } + +} diff --git a/src/app/guards/index.guard.spec.ts b/src/app/guards/index.guard.spec.ts new file mode 100644 index 000000000..7c19426b5 --- /dev/null +++ b/src/app/guards/index.guard.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { IndexGuard } from './index.guard'; + +describe('IndexGuard', () => { + let guard: IndexGuard; + + beforeEach(() => { + TestBed.configureTestingModule({}); + guard = TestBed.inject(IndexGuard); + }); + + it('should be created', () => { + expect(guard).toBeTruthy(); + }); +}); diff --git a/src/app/guards/index.guard.ts b/src/app/guards/index.guard.ts new file mode 100644 index 000000000..3689b53c2 --- /dev/null +++ b/src/app/guards/index.guard.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; +import { Observable } from 'rxjs'; +import { AuthConnstants } from '../config/auth-constants'; +import { StorageService } from '../services/storage.service'; + +@Injectable({ + providedIn: 'root' +}) +export class IndexGuard implements CanActivate { + constructor( + public storageService:StorageService, + private router:Router + ){} + canActivate(): Promise{ + return new Promise(resolve => { + this.storageService.get(AuthConnstants.AUTH).then(res => { + if(res){ + this.router.navigate(['home']); + resolve(false); + } + else{ + resolve(true); + } + }).catch(err =>{ + resolve(false); + }) + }); + } + +} diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 7ad26d765..d2ab39539 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -1,5 +1,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; +import { HomeGuard } from '../guards/home.guard'; +import { UserDataResolver } from '../resolvers/userData.resolver'; import { HomePage } from './home.page'; @@ -7,6 +9,10 @@ const routes: Routes = [ { path: 'home', component: HomePage, + /* canActivate: [HomeGuard], */ + resolve: { + userData: UserDataResolver + }, children: [ { path: 'events', diff --git a/src/app/index/index-routing.module.ts b/src/app/index/index-routing.module.ts index ac32c6fd4..3f55beadb 100644 --- a/src/app/index/index-routing.module.ts +++ b/src/app/index/index-routing.module.ts @@ -1,11 +1,13 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; +import { IndexGuard } from '../guards/index.guard'; import { IndexPage } from './index.page'; const routes: Routes = [ { path: '', component: IndexPage, + /* canActivate: [IndexGuard], */ children: [ /*{ path: '', diff --git a/src/app/pages/chat/chat-routing.module.ts b/src/app/pages/chat/chat-routing.module.ts index 2f67102f3..7c66d7d68 100644 --- a/src/app/pages/chat/chat-routing.module.ts +++ b/src/app/pages/chat/chat-routing.module.ts @@ -1,17 +1,25 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { ChatPage } from './chat.page'; - -const routes: Routes = [ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ChatPage } from './chat.page'; + +const routes: Routes = [ + { + path: '', + component: ChatPage + }, { + path: 'conversation', + loadChildren: () => import('./conversation/conversation.module').then( m => m.ConversationPageModule) + }, { - path: '', - component: ChatPage + path: 'newchat', + loadChildren: () => import('./newchat/newchat.module').then( m => m.NewchatPageModule) } -]; -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ChatPageRoutingModule {} +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ChatPageRoutingModule {} diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index f00f3899c..fbf8ddb3e 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -1,39 +1,51 @@ - chat + Chat + + - - -

{{message.user}}

- {{message.msg}} -
{{message.createdAt | date: 'HH:mm'}}
-
- - -

{{message.user}}

- {{message.msg}} -
{{message.createdAt | date: 'HH:mm'}}
-
-
- -
+ + + + Contactos + + + Grupos + + + +
+ + + + + +
+

Secretario Assuntos Sociais

+

Podemos marcar reunião para amanha

+
+
+
+
+
+ + + + + +
+

Viagem a Maputo

+

Grande momento.

+
+
+
+
+ +
+
- - - - - - - - - - - - - - + diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index 89c4e3b15..e91f81b0e 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -1,50 +1,23 @@ -ion-content{ - background-color:#fefefe; +.iconschatnew-group{ + width: 30px; + height: 30px; + object-fit: contain; + margin: 0 5px 0 5px; } -.chat-container{ - margin: 10px 10px 0 10px; +.iconschatgroup-chat-40 { + width: 40px; + height: 40px; + object-fit: contain; } -.message { - padding: 5px 5px 5px 10px; - border-radius: 10px; - margin-bottom: 10px; - white-space: pre-wrap; - } - - .my-message { - background: var(--ion-color-primary); - color: #fff; - } - .my-message p{ - margin: 0; - padding: 0; - color: #9ab8e9; - } - .message-date{ - font-size: 10px; - text-align: right; - margin-right: 5px; - } - - .other-message { - background: #f2f3f7; - color: #333; - } - .other-message p{ - margin: 0; - padding: 0; - color:#959ba7; -} - - .message-input { - margin-top: 0px; - border: 1px solid var(--ion-color-medium); - border-radius: 20px; - background: #fff; - padding: 0; - margin: 0; - } - - - +.iconschatnew-conversation{ + width: 30px; + height: 30px; + object-fit: contain; + margin: 0 5px 0 5px; +} +.iconschatchat-40 { + width: 40px; + height: 40px; + object-fit: contain; +} \ No newline at end of file diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index b6cee9d1e..b87c25260 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -1,8 +1,6 @@ import { Component, OnInit } from '@angular/core'; -import { Socket } from 'ngx-socket-io'; -import { ToastController } from '@ionic/angular'; -import { WebsocketService } from 'src/app/services/websocket.service'; -import { fromEvent } from 'rxjs'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; @Component({ selector: 'app-chat', @@ -10,43 +8,32 @@ import { fromEvent } from 'rxjs'; styleUrls: ['./chat.page.scss'], }) export class ChatPage implements OnInit { + loggedUser: any; + /* Set segment variable */ + segment:string; + groupList: any[]; + result:any; - message = ''; - messages = []; - currentUser = ''; - - constructor(private websocket:WebsocketService, private socket: Socket) { } + constructor( + private chatService: ChatService, + private authService: AuthService) { } ngOnInit() { - console.log("ON"); - this.socket.connect(); - - /* Set current user */ - let name = `User-${new Date().getTime()}`; - this.currentUser=name; - - this.socket.emit('set-name', name); - - /* Reat from event calling "fromEvent" */ - this.socket.fromEvent('users-changed').subscribe(data =>{ - console.log('gOT data:', data); + this.segment = "Contactos"; + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; }); - - /* Add message to the array of messages */ - this.socket.fromEvent('message').subscribe(message =>{ - console.log('New:', message); - this.messages.push(message); + /* this.getGroups(); */ + } + onSegmentChange(){ + this.RefreshEvents(); + } + RefreshEvents(){} + /* getGroups(){ + this.result = this.chatService.getPrivateGroups().subscribe((res:any)=>{ + this.groupList = res.users; + console.log(this.groupList); + }); - - - } - sendMessage(){ - this.socket.emit('send-message', {text: this.message}); - this.message=""; - } - - ionViewWillLeave(){ - this.socket.disconnect(); - } - + } */ } diff --git a/src/app/pages/chat/conversation/conversation-routing.module.ts b/src/app/pages/chat/conversation/conversation-routing.module.ts new file mode 100644 index 000000000..07d2654ce --- /dev/null +++ b/src/app/pages/chat/conversation/conversation-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ConversationPage } from './conversation.page'; + +const routes: Routes = [ + { + path: '', + component: ConversationPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ConversationPageRoutingModule {} diff --git a/src/app/pages/chat/conversation/conversation.module.ts b/src/app/pages/chat/conversation/conversation.module.ts new file mode 100644 index 000000000..22dca4438 --- /dev/null +++ b/src/app/pages/chat/conversation/conversation.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ConversationPageRoutingModule } from './conversation-routing.module'; + +import { ConversationPage } from './conversation.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + ConversationPageRoutingModule + ], + declarations: [ConversationPage] +}) +export class ConversationPageModule {} diff --git a/src/app/pages/chat/conversation/conversation.page.html b/src/app/pages/chat/conversation/conversation.page.html new file mode 100644 index 000000000..7ef609bfc --- /dev/null +++ b/src/app/pages/chat/conversation/conversation.page.html @@ -0,0 +1,49 @@ + + + + + + {{chatUser.name}} + + + + + + +

{{message.user}}

+ {{message.msg}} +
{{message.createdAt | date: 'HH:mm'}}
+
+ + +

{{message.user}}

+ {{message.msg}} +
{{message.createdAt | date: 'HH:mm'}}
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/pages/chat/conversation/conversation.page.scss b/src/app/pages/chat/conversation/conversation.page.scss new file mode 100644 index 000000000..67e5a83e2 --- /dev/null +++ b/src/app/pages/chat/conversation/conversation.page.scss @@ -0,0 +1,55 @@ +ion-content{ + background-color:#fefefe; +} +.chat-container{ + margin: 10px 10px 0 10px; +} +.message { + padding: 5px 5px 5px 10px; + border-radius: 10px; + margin-bottom: 10px; + white-space: pre-wrap; + } + + .my-message { + background: var(--ion-color-primary); + color: #fff; + } + .my-message p{ + margin: 0; + padding: 0; + color: #9ab8e9; + } + .message-date{ + font-size: 10px; + text-align: right; + margin-right: 5px; + } + + .other-message { + background: #f2f3f7; + color: #333; + } + .other-message p{ + margin: 0; + padding: 0; + color:#959ba7; +} + + .message-input { + margin-top: 0px; + + background: #fff; + padding: 0; + margin: 0; + } + + + .div-message{ + border: 1px solid var(--ion-color-medium); + border-radius: 20px; + } + + + + diff --git a/src/app/pages/chat/conversation/conversation.page.spec.ts b/src/app/pages/chat/conversation/conversation.page.spec.ts new file mode 100644 index 000000000..9e1cc5cee --- /dev/null +++ b/src/app/pages/chat/conversation/conversation.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ConversationPage } from './conversation.page'; + +describe('ConversationPage', () => { + let component: ConversationPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ConversationPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ConversationPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/conversation/conversation.page.ts b/src/app/pages/chat/conversation/conversation.page.ts new file mode 100644 index 000000000..be26471fb --- /dev/null +++ b/src/app/pages/chat/conversation/conversation.page.ts @@ -0,0 +1,73 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { ModalController, NavParams } from '@ionic/angular'; +import { AuthService } from 'src/app/services/auth.service'; + +@Component({ + selector: 'app-conversation', + templateUrl: './conversation.page.html', + styleUrls: ['./conversation.page.scss'], +}) +export class ConversationPage implements OnInit { + + message = ''; + messages = []; + currentUser = ''; + + constructor( + private authService: AuthService, + private router:Router, + private modalController: ModalController, + private navParams: NavParams) { } + + loggedUser: any; + chatUser: any; + + ngOnInit() { + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + }) + this.chatUser = this.navParams.get('user'); + console.log(this.navParams.get('user')); + + console.log(this.chatUser.name); + + + /* console.log("ON"); + this.socket.connect(); + + //Set current user + let name = `User-${new Date().getTime()}`; + this.currentUser=name; + + this.socket.emit('set-name', name); + + //Reat from event calling "fromEvent" + this.socket.fromEvent('users-changed').subscribe(data =>{ + console.log('gOT data:', data); + }); + + //Add message to the array of messages + this.socket.fromEvent('message').subscribe(message =>{ + console.log('New:', message); + this.messages.push(message); + }); */ + + } + close(){ + this.router.navigate(['/home/chat']); + this.modalController.dismiss(null); + } + sendMessage(){ + + } + /* sendMessage(){ + this.socket.emit('send-message', {text: this.message}); + this.message=""; + } + + ionViewWillLeave(){ + this.socket.disconnect(); + } */ + +} diff --git a/src/app/pages/chat/newchat/newchat-routing.module.ts b/src/app/pages/chat/newchat/newchat-routing.module.ts new file mode 100644 index 000000000..98eb05c20 --- /dev/null +++ b/src/app/pages/chat/newchat/newchat-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { NewchatPage } from './newchat.page'; + +const routes: Routes = [ + { + path: '', + component: NewchatPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class NewchatPageRoutingModule {} diff --git a/src/app/pages/chat/newchat/newchat.module.ts b/src/app/pages/chat/newchat/newchat.module.ts new file mode 100644 index 000000000..ea115e8f4 --- /dev/null +++ b/src/app/pages/chat/newchat/newchat.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { NewchatPageRoutingModule } from './newchat-routing.module'; + +import { NewchatPage } from './newchat.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + NewchatPageRoutingModule + ], + declarations: [NewchatPage] +}) +export class NewchatPageModule {} diff --git a/src/app/pages/chat/newchat/newchat.page.html b/src/app/pages/chat/newchat/newchat.page.html new file mode 100644 index 000000000..736a366e0 --- /dev/null +++ b/src/app/pages/chat/newchat/newchat.page.html @@ -0,0 +1,20 @@ + + + + + + Nova Conversa + + + + + + + + + + {{user.name}} + + + + diff --git a/src/app/pages/chat/newchat/newchat.page.scss b/src/app/pages/chat/newchat/newchat.page.scss new file mode 100644 index 000000000..8759df7f9 --- /dev/null +++ b/src/app/pages/chat/newchat/newchat.page.scss @@ -0,0 +1,3 @@ +ion-searchbar{ + --border-radius: 20px; +} \ No newline at end of file diff --git a/src/app/pages/chat/newchat/newchat.page.spec.ts b/src/app/pages/chat/newchat/newchat.page.spec.ts new file mode 100644 index 000000000..70ff90072 --- /dev/null +++ b/src/app/pages/chat/newchat/newchat.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { NewchatPage } from './newchat.page'; + +describe('NewchatPage', () => { + let component: NewchatPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewchatPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(NewchatPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/newchat/newchat.page.ts b/src/app/pages/chat/newchat/newchat.page.ts new file mode 100644 index 000000000..277d2469c --- /dev/null +++ b/src/app/pages/chat/newchat/newchat.page.ts @@ -0,0 +1,65 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { ModalController } from '@ionic/angular'; +import { Observable } from 'rxjs'; +import { ChatService } from 'src/app/services/chat.service'; +import { ConversationPage } from '../conversation/conversation.page'; + +@Component({ + selector: 'app-newchat', + templateUrl: './newchat.page.html', + styleUrls: ['./newchat.page.scss'], +}) +export class NewchatPage implements OnInit { + userList: any[]; + + constructor( + private chatService: ChatService, + private modalController: ModalController, + private router:Router) { } + + result:any; + searchCountryString:any; + searchedItem:any; + + ngOnInit() { + this.getUsers(); + } + + getUsers(){ + this.result = this.chatService.getAllUsers().subscribe((res:any)=>{ + this.userList = res.users; + this.searchedItem = this.userList; + }); + } + + userSelected(id){ + console.log(id); + this.router.navigate(['/home/chat/conversation']); + + } + onChange(event){ + const val = event.detail.value; + this.searchedItem = this.userList; + if(val && val.trim() != ''){ + this.searchedItem = this.searchedItem.filter((item:any) =>{ + return (item.name.toLowerCase().indexOf(val.toLowerCase()) > -1); + }); + } + } + + async starConversation(selectedUser) { + const modal = await this.modalController.create({ + component: ConversationPage, + cssClass: 'conversation', + backdropDismiss: false, + componentProps: { + user: selectedUser, + } + }); + await modal.present(); + modal.onDidDismiss(); + } + + +} diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index c72618466..e7305a989 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -5,6 +5,8 @@ import { User } from 'src/app/models/user.model'; import { ToastService } from 'src/app/services/toast.service'; import { environment } from 'src/environments/environment'; import { AlertController } from '@ionic/angular'; +import { StorageService } from 'src/app/services/storage.service'; +import { AuthConnstants } from 'src/app/config/auth-constants'; @Component({ @@ -19,9 +21,13 @@ export class LoginPage implements OnInit { password: string = environment.defaultuserpwd; userattempt: User; + public body = {"user": this.username,"password": this.password}; + public postData = {"user": "admin","password": this.password}; + constructor( private router: Router, private authService: AuthService, + private storageService: StorageService, private toastService: ToastService, public alertController: AlertController) { } @@ -47,6 +53,29 @@ export class LoginPage implements OnInit { await alert.present(); } + loginAction(){ + + if(this.validateInput()){ + this.authService.loginChat2(this.postData).subscribe((res: any) =>{ + if(res.data){ + this.storageService.store(AuthConnstants.AUTH, res.data); + console.log('Log RockectChat OK'); + console.log(res.data); + + } + else{ + console.log("Invalid username or password!"); + } + }, + (error:any) =>{ + console.log('Network error'); + }) + } + else{ + this.presentAlert('Por favor, insira o seu nome de utilizador e palavra-passe.'); + } + } + async Login(){ try { //Go to our home in home/feed. @@ -57,9 +86,10 @@ export class LoginPage implements OnInit { domainName: environment.domain, BasicAuthKey: "" } - if (await this.authService.login(this.userattempt)) { + this.loginAction(); + console.log('Log Gabinete Digital OK'); this.router.navigate(['/home/events']); } else diff --git a/src/app/resolvers/userData.resolver.ts b/src/app/resolvers/userData.resolver.ts new file mode 100644 index 000000000..b5b5bbc93 --- /dev/null +++ b/src/app/resolvers/userData.resolver.ts @@ -0,0 +1,13 @@ +import { Injectable } from '@angular/core'; +import { AuthService } from '../services/auth.service'; + +@Injectable({ + providedIn: 'root' +}) +export class UserDataResolver{ + constructor(private authService: AuthService){} + + resolve(){ + return this.authService.getUserData(); + } +} \ No newline at end of file diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 7726e15f4..3c2a6ea92 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -1,19 +1,23 @@ import { Injectable } from '@angular/core'; import { StorageService } from './storage.service'; import { Router } from '@angular/router'; -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { User } from '../models/user.model'; import { environment } from 'src/environments/environment'; +import { HttpService } from './http.service'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { AuthConnstants } from '../config/auth-constants'; @Injectable({ providedIn: 'root' }) export class AuthService { - - - + userData$ = new BehaviorSubject(''); constructor( - private http: HttpClient + private http: HttpClient, + private httpService: HttpService, + private storageService:StorageService, + private router:Router ) { } public ValidatedUser:User; @@ -31,12 +35,40 @@ export class AuthService { if (result) { this.ValidatedUser = user; - } - + } return result; } logout(){ this.ValidatedUser = null; + + } + + loginChat(){ + const body = {"user": "admin","password": "tabteste@006"}; + const url = "http://192.168.100.111:3000/api/v1/login"; + return this.http.post(url, body); + } + + //Login to rocketChat server + loginChat2(postData: any):Observable { + return this.httpService.post('login', postData); + } + + //Get user data from RocketChat + getUserData(){ + this.storageService.get(AuthConnstants.AUTH).then(res=>{ + this.userData$.next(res); + }) + } + + logoutChat(){ + //this.storageService.clear(); + this.storageService.removeStorageItem(AuthConnstants.AUTH).then(res =>{ + this.userData$.next(''); + this.router.navigate(['']); + }) + + } } diff --git a/src/app/services/chat.service.spec.ts b/src/app/services/chat.service.spec.ts new file mode 100644 index 000000000..4d8abdfc0 --- /dev/null +++ b/src/app/services/chat.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ChatService } from './chat.service'; + +describe('ChatService', () => { + let service: ChatService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ChatService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts new file mode 100644 index 000000000..668e1ad19 --- /dev/null +++ b/src/app/services/chat.service.ts @@ -0,0 +1,41 @@ +import { HttpHeaders } 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'; + +@Injectable({ + providedIn: 'root' +}) +export class ChatService { + headers: HttpHeaders; + options:any; + + + constructor( + private http:HttpClient, + private httpService: HttpService, + private authService: AuthService, + private storageService:StorageService,) { + this.headers = new HttpHeaders(); + 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); + }); + } + + getAllUsers(){ + this.options = { + headers: this.headers, + }; + console.log(this.headers); + + return this.http.get(environment.apiChatUrl+'users.list', this.options); + } + getPrivateGroups(){ + this.http.get(environment.apiChatUrl+'groups.list', this.options); + } +} diff --git a/src/app/services/fcm.service.spec.ts b/src/app/services/fcm.service.spec.ts new file mode 100644 index 000000000..0927099f8 --- /dev/null +++ b/src/app/services/fcm.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { FcmService } from './fcm.service'; + +describe('FcmService', () => { + let service: FcmService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(FcmService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/fcm.service.ts b/src/app/services/fcm.service.ts new file mode 100644 index 000000000..02793945e --- /dev/null +++ b/src/app/services/fcm.service.ts @@ -0,0 +1,64 @@ +import { Injectable } from '@angular/core'; +import { + Plugins, + PushNotification, + PushNotificationToken, + PushNotificationActionPerformed, + Capacitor +} from '@capacitor/core'; +import { Router } from '@angular/router'; + +const { PushNotifications } = Plugins; + +@Injectable({ + providedIn: 'root' +}) +export class FcmService { + + constructor(private router: Router) { } + + initPush() { + if (Capacitor.platform !== 'web') { + this.registerPush(); + } + } + private registerPush() { + PushNotifications.requestPermission().then((permission) => { + if (permission.granted) { + // Register with Apple / Google to receive push via APNS/FCM + PushNotifications.register(); + } else { + // No permission for push granted + } + }); + PushNotifications.addListener( + 'registration', + (token: PushNotificationToken) => { + console.log('My token: ' + JSON.stringify(token)); + } + ); + + PushNotifications.addListener('registrationError', (error: any) => { + console.log('Error: ' + JSON.stringify(error)); + }); + + PushNotifications.addListener( + 'pushNotificationReceived', + async (notification: PushNotification) => { + console.log('Push received: ' + JSON.stringify(notification)); + } + ); + PushNotifications.addListener( + 'pushNotificationActionPerformed', + async (notification: PushNotificationActionPerformed) => { + const data = notification.notification.data; + console.log('Action performed: ' + JSON.stringify(notification.notification)); + if (data.detailsId) { + this.router.navigateByUrl(`/home/notifications/notification-detail${data.detaisId}`); + } + } + ); + } + +} + diff --git a/src/app/services/http.service.spec.ts b/src/app/services/http.service.spec.ts new file mode 100644 index 000000000..7b345d485 --- /dev/null +++ b/src/app/services/http.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { HttpService } from './http.service'; + +describe('HttpService', () => { + let service: HttpService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(HttpService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/http.service.ts b/src/app/services/http.service.ts new file mode 100644 index 000000000..c994ced1a --- /dev/null +++ b/src/app/services/http.service.ts @@ -0,0 +1,26 @@ +import { HttpClient, HttpHeaderResponse, HttpHeaders } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class HttpService { + + constructor(private http:HttpClient) { } + + post(serviceName:string, data:any){ + const headers = new HttpHeaders(); + const options = {header: headers, withCredentials: false}; + const url = environment.apiChatUrl+serviceName; + const body = {"user": "admin","password": "tabteste@006"}; + + return this.http.post(url, /* JSON.stringify( */data/* ), options */) + } + + get(serviceName:string, options:any){ + const url = environment.apiChatUrl+serviceName; + return this.http.get(url, options); + } +} + diff --git a/src/assets/images/icons-arrow-arrow-down-25-copy.png b/src/assets/images/icons-arrow-arrow-down-25-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..1f62f2fd0f1ec9999e0e0b538931c729f4baf11f GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uxqunL1}TjAJUxzqfr-o0#WBQ# z_ic!wkF=w}oxjJoO<2Iu>CmCp>&UURG2gF1al9;5zVQdaQN&UcGud^}Y!ccBIvpr(kTkgsieVHS;`9h=VedqmKTJ|65(mxs!r!Vtut-F;u_qf~aew9voGI?{?g}JUDH&{y_4c+&I_4vmnr(RyuXktmP z*_^(kf4!5{f41|7Ql6H7>UsU(aKnY|flJ;V64#qhBvYYZ!S!J6^U2|VT#}QHPT%o_ zGcoYPBlorY)K#Jvmd7kOS-&%*Ds0CKx%}%@Ya1p9G6@;;#ZBTAkBf~778Wr7A*orO zSN@{$iTsa~_8UZ{TPqLF4!iHyGUaO~7t@WzMv47I~ntQlg;}#J8!LAe!@KO_Kv%zvGXlJsl(IN&t;ucLK6Tf8WKwY literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-arrow-arrow-down-25-copy@2x.png b/src/assets/images/icons-arrow-arrow-down-25-copy@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c686ecf6318f56921b46ffc7b06b2c7b318d04bb GIT binary patch literal 1245 zcmV<31S0#1P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB5M@d9MRA>e5Sj}q`OAxP`-KgvH zDZvj=BVH5_f)@jN*{E5QVC1PF;$NWt0rD<>U?kwhi&ypFSwV3QyE1$xivJ*`1|#GPBOkOtMdzfnmC-P2t}>61nvjX)ZKUnv4S7shrC zNueZk7}y=ewARrf^cvr>4Aa#+-8_=C-b5XN0~E> zk;1U#r9?M~q&1v=p5zSeAKA_0;rQ!wCE|#a386>fop6ofNldkENo2-yA>(|V>Ey`- zlSZ2Nwd8n>zS=I+Oij{SmNjY7+OacIUf42hs%PeN`7S!$$84MQJ`rpD4)u%336q{- z-W_)Xh@Fwj?o_o)qweQ~GN@xZ=FN;3qYBnQBeo;Z)nV!rqVwKNnBzL8JSNSH;Ta3n z&4%Kt$E5!WSmr)0IeP52&2MK>_Mm?W8$ugia|p|)@~^3-Hq?us5s@XP#$pG*G5bcl z;)FqQn;s08+{ib+BaLXAL*Dsxfd6VRB&0}LGaH#qDS>;Ta~awJDAp??$+j%>ka%tS|I z|JHklNi*9zraUGM?Xe0Lx!9iZpLPQk){|tWr#g;*b6%?=CNDODyk4ICoT*-{z+=iN zhGHqr#Wu&ov?JXRyNj}FhRHcMu|=!Jrt9RXoap5V3-`Qxtk>zJnNUY-3`0c)7zcsj zoSL&jZ9_f$wuUD}Cz2zITPVr^jM`5YpUMbb!!0jz@j*}nvq}2l{Ed+wJ`lq0SuByJ zmZBhv7aTO9li3W}TG|11a+ZcbLb)8IvNn@*hp%D=$^;KYc4WAV?_ok;!Ia8TMwaRk)kL5ISvz@=Xvj6+9UTKrQ*7`XeYq9$QHj9=z(yYh_=}j{d6q#nxf18XX z_8)PoDk8lNWrX<_jw^c`k_ljLYDN%6{4>)hjX)ZK`G~*|i|AXB{2J$d00000NkvXX Hu0mjfyed1A literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-arrow-arrow-down-25-copy@3x.png b/src/assets/images/icons-arrow-arrow-down-25-copy@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7690374c9b9dbde224b83229a8dfdec32f32ec92 GIT binary patch literal 2048 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 ez%ej?2L1=`DwPBm@#bj&0000XaE{xhpY3G z)D7Hy&i!5G!jr!70OPS335h4s4e`2WT{~Vq3i+2{HvM>tw4LYguDit zMyvRLCRt_+{P?AE?Lm(4ugSBx%_e)6T1-FQxW{}W->T4HU!k9t z#WQxyIJ5du)W&Jcg`Z4}=-$S+%BBA9D{Iexr+4N(FqhgiX + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-arrow-arrow-down-25@2x.png b/src/assets/images/icons-arrow-arrow-down-25@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b599dec7902d72aebb3a6f86d122e01d67c37e95 GIT binary patch literal 1064 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 JPDHLkV1oY1@pb?J literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-chat-40.svg b/src/assets/images/icons-chat-chat-40.svg new file mode 100644 index 000000000..015ed6c23 --- /dev/null +++ b/src/assets/images/icons-chat-chat-40.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-chat-chat-40@2x.png b/src/assets/images/icons-chat-chat-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..be985f238487c3a597829184df68a80fa38d5014 GIT binary patch literal 2232 zcmai$XFMB>7RHk(LMx@U!Yj6#Ev>z3Q$bMkrKEOAiJC<<)TSsk+E}g7s=Y(hj9sHj zUwgZ$5w*AU^5x!d_kMWJ|BUB%zMd0nY^2LT&p{6W02m(VX_;Qo_)=h+ix@A_oJ2(N6$ZE-e@0xDWt9l?Mb+T@ZNL%LDyqYMe*) z-~7@jHE)2pSi$!|OWiCGNPhnuWv0#EO2XFb)=ThYSTxSCuEc>0Z^*>xC{xtmy4BZW zFfsGl?D^ZDrDTOT^8W-9`QwD5I;7!Z`pRG!SX2N*8%-_ZJ|&^U_|`7C8QNk=_IIhT zC6I$PrFT;XLg(b}&4ug+-}6d51b@#E%A<1wy~q4-gabZ*7Qia%oD_EvMF=_fssOu) zr3eJil_s?#lToY!FE*@|P>DWYK%Eu!`Ah;6-}&zLZ0hat>KvVq|2k{qfB^Q1OJ8Eo z%?_84&&_eU7MSCLF}C+EizxR7(F_M%^Xu`X0 z7jv~ir+G&Ed6-|$or&3_*eskyzI*X0p{`vGtw<_?$UNx*B};x-_Ri>65t~zaw)YOX zOvRom(n`(@&Yd-bM z+g@LOopsDh)y)2*=?{)GL9=zkE##I;3;m;2MjbR>bV0_U13g}rSnC<6U2~3|9UxRFLCR2b!DTIJF<8 zl`!+%jw(;%pjkd2EFAXkO)m(KcYi|H0mf!Ho7hx~P{$0F-IWTWcj|#Nc97HiK+&-u zz09jjF|Ek(QAtb%j+Ez1siCm9LGkrqRod=>_kIL|rR9D(Gfx{-3&nnGoc7OBhABo5 zvF6=s-D`Zz@>W8k{q)V6w|voAo$Jtg5lq3Xr6K(xeKOz)E0t50t;kwK&-6xm-{QcV z5YnQD{PQ%BG(NbRS^Sn<0=+m)Vxr0nz1^hoEso*Mi}+YbpFU7$a?O9y__U#1rAe~y zXrxCw zVyR`6+W^W;uOFN@RyIKz3<2gw;(Xy*oiG!vvwFrDJjXrilp>Lz_ll+fph7`PG9_`f zJ`UE_!J?rlkKy;w7{@0<8wpK4236$ef-H#ha<&oJ%TCSlNd_=ae*HYLitAbzi=1@fv9rBGQanCekj3ay950AATL z(Bg+y8 zSYs&Ni;SuX9;@H!O8HE-v&r$N(?FjFTQ)zre_s4>t+s!L0&~kK!II|}*4U!SHwX*X zdPcIP9&#}zVPDlVdlh6-W7#%zg@S#rH3%0*1yIM){M@(|JJZUv(5^ibk|!Q#x-8r=p2ie z)fS*0nZ2^E(w=x+hM7F)(EdrWkitXGw%-6$bIE`zBwIwJ9`CdbdZARHBu>Pxb5yc< z-uwcLkpHD>)03O(rlj^GqMryxleW}@<$XS6-Sje1z~ixJ+8oz zY84m*SZ@b6qYPK_#d*8a^r1OOB{d^8dS7uO;@TbJhqNwEkumJ@U>0-|!bo*rQ1%#) zy`uFf`CE}Ye9i2A=UxUtbdI3B5C2lI&GkzsZ-dc;7={)NP*-p9mR!=X_VxE|b8dP^X=U!Tx;HPfpnVhUBofAe$DuRaNJf=rk_$QSR z3#T@A*_v5k)<#L;b){7>?5E9d)eyHm-V%*HXD9MiWI1+N@X^9>b4mX--hA><>nwXo zz>V#?lgOy}L3JMcgGt)s?vf_P0LaodTZItl%$l3&bssCtbLns4$SHS=LE!+7oH5q! zAf%%3Z{n9CMiQLSfQ3?6`02W?u3NXau-C_|@)u5H-|nFC)eA@c1toVe4#xb2;v8&A zU9L<0z3_^H)NR>x2cClQsloOTs_uv(X#+2sM0*F|F*M2A-$&A)*#1H2dyD?_d8E0{ zHsaAwt!?)XCi?*CRk%>(-HOz^s@J;)F7np93@#rerBFal{ Srf=i&Yj~h-q*bPY4F5Nn85Ilw literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-chat-40@3x.png b/src/assets/images/icons-chat-chat-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9d0087b724ff34635c0b6c725e3f886951d883 GIT binary patch literal 3372 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-group-chat-40.png b/src/assets/images/icons-chat-group-chat-40.png new file mode 100644 index 0000000000000000000000000000000000000000..834216e484c3b2008b25c986da4170db463cf0fc GIT binary patch literal 1449 zcmV;a1y=frP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91D4+uX1ONa40RR91C;$Ke0D9(TtN;K76G=otR9Fe^R$XWuRTRGW?(APS ze{HkI*iE`>v`B1etY9scQX|xY63J$y(jdhOebEO|5s_kEY{24!;)67TN+l`G23n{U ztteaLP$vwt(!b0(SPx|x~XB!UQgVYz3%^PO+LJ$rwakjkiZ zpwfZ=cL(TN?0ZAq2MFOWb3%4PJ*S+HQNsGwxN?e83h=)-R%Niax0m(3KlV1~{5dNN zl+bfc?izV=^24-Mek~YVO%a%T-Y`e03LSgF<#lbTa@TGEk*5iv3!L!BX7kB+R-;*p zTXqKnw?EaG%Vw{`FIvr9?2+_TbXXMkHFxjPb$%WM|H{k^g~i-@;<7uK%jWl>Is6%m z&7pzxbaaGCY&(_MzV#R?u9b=byJyC4FR0-8F9=b&#HdiSk;!ECiv;Hp3Pml zwYJH&1H9RG4}B+klzA9$~FFhfAgV`DSqy< zwhNA*R@gwX&fTszOt#`y(!!99f1ahJsQF2;tgn8I-OsTjkK-DqM~Gvqfc z@mSe6O-X~^kldGyo+{6?cIyi`@E?X>#CkaQ9zEVa-X&@s@BcA^IAX{{zL)t#MEEWZTi#eqCZnQUNCZ|I1GqS)CWr31**dk*@xsY2bdjvdj_Af9>I_|PHB*nU{tXDFu$_;0sV!^u`dR3hVc;*PjkXX@CH z%lgBbnT~!A_4p|a*g(zrQ0uLmu{?hYOzWUp^8LP$Q}O;bbgWr$F4!eX;gph5LZz7OuP{eW!;vkfo@;fAh*yLTSq zIp{Dh)vK_mKC7)^U(Jmx3-DYSl@3%oQ0c&b-GRRW60h-6dM&v}00000NkvXXu0mjf DbFZ?w literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-group-chat-40.svg b/src/assets/images/icons-chat-group-chat-40.svg new file mode 100644 index 000000000..b2038a4f2 --- /dev/null +++ b/src/assets/images/icons-chat-group-chat-40.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-chat-group-chat-40@2x.png b/src/assets/images/icons-chat-group-chat-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..65b0ce8cdf6afcefc51942f668a41599dc88010b GIT binary patch literal 3074 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 + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-chat-new-conversation@2x.png b/src/assets/images/icons-chat-new-conversation@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f2670b0cde9c873ee2303a5cc51105a6c6a9872d GIT binary patch literal 2786 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-new-conversation@3x.png b/src/assets/images/icons-chat-new-conversation@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa36026db3b84b468946dd0702cfc4e917fa7e8 GIT binary patch literal 4502 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 W2|PXN_((bc0000 + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-chat-new-group@2x.png b/src/assets/images/icons-chat-new-group@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e0f943452440aa4eb5d576c5f8f40c6f9d7993 GIT binary patch literal 3428 zcmV-q4V&_bP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91MxX-#1ONa40RR91MgRZ+0B$7!7ytka&PhZ;RCodHTziaF#Toz3Wm%rf z@_tyCr?5N=7Fra;R)XwGQ2JQX&_9}3u(l~$sWxh`sq~Lxwbg1;`!+GLB5k1$YKpr^ zAy_0uk;WCuLSY3g$U;HhaDkove)sO|otb;ix#zxCFnr0)IWzM;X1+6z@B3!vdeTmy zl=5ooW!zK?+5~&m=BOt!q^P~*#Wr?bIa!M&Vh4&M{+vABeqO7rl$kw`Q+3tBB zNQ)1UTRgaJtttoiTGb-eXygnir++@upp<4PX}uSddhl8G+AQxxKK#OH3$7UUjG6Uv zI}~vj1kV+vI)_yt=Q7Vb58BmG)C=pX<<&y>q=G4CsZz1m>*Y&O$Py@LLe34&fe=b* zfP$7yua@60^}LoGSfr5@L@^jLH7zajtca>ilhCdiUSljK_hX3Fu8&`o zpP+}#%eNwhq(={0S=v#)y=I2@ey)6TRt$PcEmn``p%hNAR~$e&C$QQrMDJOZOXadw z%rk)4%dKEGb|JQbJKO4RghgnZPvo_Md9 zmCD>d&+tBsT9?R*soAIoT{|z}RH|(>p}A98Jg3Ih=D!hs&(6 z2{}|TGwan)qpUtN2Z}5lDKel-C_6cQQOO_ni7ekMQfU3Gs1oVdIVu0hc_s5VYBl&j zxmvBO_U`pB4VhzTr?j-Fl|h8e?}&OV##g%i6X6PRdAxI6$q(KUIhxf1>T(0@@CSGECauTNA%s$D!|F8%jh#Qt#(4jXlKZ!aJo|5v9f*>g zxg>HPQK`MBMP9_5vS5?Q8_l)~ruOq>VlSIdd#Bh|w%L`N`h+N9=wM^LU``MBlD{)f zWVSJ{oV}#v?l(jZGeQyqT&13zEHbHgO6=k-N*W^Dqau3s(GzWmIID;ga`0;9HC9#2 zSTkf{^_WCFC4*98XcLEq2|sJhtQ6vNXg&5Xk$)aha{Pjl6;0VGg*><VI`A^Yb)@*b>YuR~#e*Y`?=Y zo*3_KJ%-^(C?{j&t)CO9+>T*j&m6^VGKT|)MYf=aQV<>6P95m-wjPs+(MFJ0UaCox z&yyGJbktNAg#9@r`5V?60+%I0Fnn0yoO$vE{I zz9$reS-HGLA#fc5jypzKPe)OiSg?zJZm`H#hGXBPG&LkOT?J}X(M_ak0QOJfDzT#d zWq;u38*;YlBQjZ z!Q_rc!c);22G0!|aUSxE+P4~!FC2#&OokAOaED1K`(&_wi zO2nHG!=w*eG&?wOR^+!Z^Gz7i-IJ%#-3?u}6)!+Y!i0lol{^R~1}TNOEF%taO>lYX zGQC=H#R`kXX#B7zbrQoeT^WYtSJof4%p@NlXDF0Ir_ltaM;Sv1-Bh03p7f(kJimAP zTEr!d2J&)c=(2)6p_3RyW~G>$`-wb{VRU03yNk0@hwyb7u`^*R@J-+_XgF@>gufHl z9XcE~#RTdk2D23bglKRlA{XDEB+`{}Ob7mcNXdQhuHjEwFwp5iZ~M#-7J*N~r5S`d zuBZT=(7=Nwk{N2QW3(<^A-hg0d2Xl3y8#|@Z^r=4C2Hr=xI8o0K5LBf5+2$yhOjRO z&L^&C%5nemT_S(n7w#*$COut&Y{8{*d1lKm6FzlPf}vCvhS(Jid1L~72V=RRQn)1k zErM6w>{!Y}x`#>gFLP;Jp8iyMV z2`*2wtWfVbmJ|Z%Fbb!;0eT179pnMHjuL7y=2W(l7qPx$3*yl)M#U1+$De#C3r@e+-9}GKvDwNemx#s~_`Tj>YO1PVl2+ z9zBL-_^NKmfB~+@8HLDZ>y;t-cKW^jxcV-Sv@3?J_##URHw>Lk{B3>~3o z8|c}ZFfNkgkfiw57?H6(?fHSO!$LHYD^z+PFeTaV#3c=B$-@N7xDT=l3D`bqrcPps zeH0u+cbV^W#(xcV9v4-LxaPS_N6&Z8^|n$t93Do$JQjDcqo+wr9`4Y(1F{P0ZSzPz z_LdTsZ|m87tCl?IbNHP7g}yk%lb5E8+&xlcBn}6;z(wSnP@V}4Gd_d{<+{yc@*)rN zazmGt=`3I-Syt~_7uqFQCCRh-ZA{`Vm?s(-P_mW7$o-dxdGd>!yhL1P2ttq==z&+@ z6oZD#u#}d(EmBC|hP=p=yfsiJW#FDSkads_jjQmpM?K+cg9kP*t3Aced&@^o(5@+I>b!r(3Ue<-~lVMBR z7JfF!_?|Yl8>h8P3zMP@Gp5Ws{AquVym753u|l_!xAhpNdEW=;6@4w?Oyb;b>}S$v z;*o8+E5ofrbbelAvh67fOEElA#QQ#};^=QZI@-8}T#0PXsgx_jtwRbk{EclkPg4=w zQVcUNE7#$GaAL_~Ix3Vois1pFVuLHgtwR*~7(Of6W*0Y2F+?aWmBk=%Y+skuPP?Zd zxGh_3aAml4$RwX_O&dz$UI3Iar@=Xb|{qjdrm2#p~n+a`S?oY#r-56Ihk7_GQ7;LIxXR^ z!`|X)tSErqlG~AaGSB9c1@Y$(6`YLR*`afj)ps-Jdqv+&{G;PNmpgM?H2rb4Jp}P=j7IqMqUmnBf zMKG>7v~*qDMb|CtS=7s-TJW{&#aa^qPn?JSSYJr@HShv-VP(UNUInXhd@k;T#i$4g z)`@jv9dl(LdGZYt!23Se{`4Y1L%i#hxY}~L(KULM>4qq+__SJz)L1vQF2>1z7(uKxoqh^-}Cb$ZPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91X`llD1ONa40RR91X#fBK0L7KL;s5{?!AV3xRCodHT?v#G#T9-183qJK z1Ox;G6i{?92)M5(;Bt%}m&7em6k`@O=S09YF=~tnZfK$*dWN7IXwq>C3V@V%8S6G%*AR8T=XOVWc$d?GKLRdAzs+?zAmLmQ_JTJ`D%fg=J^3elF zTU%Q~_N`J?@{}3&PSv$C9ECgrg+9WvrP3BVV@h93ta{s$1t@^&0B(ARGMV}0(bh&& z{7v#HDUe1@wfoiEaxMTl5jAC)Nl?NHji8~Xy$Rr+$yoBx)KS)wur!5wUv!Y18dD=@ zpm5H$ZTs*-WjsudWm&WEXL+bYxja_v8dfxroLW;SS3!Z%s4;EA3awc0QNy;Oxt*M8 zB{vnTb`>0?kyGtTsh6wKoShADS{1AC`3cVld_DB z;Heavx0AQl%Dk^7Kr8_KF`0js1Am$#V<3(CuYGxaz5OIK?PN;1mdVHN1h2^xEDuxq zr*7`h?^vUz$Zhx@XG*Eu?E|DLICtI42lcV z7!-*?asXN<|AN=x#O=JCQ)ds}if8(Fk<*d_m8ef*6Ndrn{oeo-4L_EXQ(g%@Er~#C z=!3p#;-X>X#A27ga*L6qF>37QZsZI06%crHBZmYJJGK@%q^rmQJB#enR-`k0;QV}5 zFH!{u%ThR87H-09+)9y8>3k^>Dnn_VKS1Qzo>_%nSRwMjMk5z!QP?~Wp4kjbH)MKbWEM4|Z`ZFy$7$cw8)Y5-y}>B2ok&fYy&??*ni z<-QMNXa!3TlZvOpjr3I1RJjrZQaPRk4pbA2gSw%%Ts%(Q3afHCmOT9M^nifq^>vST@$H4z#Z zC-f5O+d&WTcXzYo<7!);hlSOWiSunJ=OIA@-9V5~9mfLg*b{c+P=h+ORu^zBypIoI zvD8046+ye4L+bz(Kl8ErjqeZWV#{UVwR2lFuS=oX+Z#kyZpmTOqJFS^7q7R*LTRm8 zu5IqPCIJbrjhkbRe+G9_7wX0uTgJ~7c^Dx10aD3%eVxb;=ZMT*ryhv3MpJrZcU8(3 z7j|t!c`Fsy)+A@qNP;y9980LErp}gMyeaYl2B~pq69%`}y(MzzfwuIoXbygyfn<l;vkZkfIPx6jHr#F;)v#3gtvg_jFFS|OtTQmMnz_QJ@ zJiT1~E^6o+EUh2^y2zZhwyfQ1%Nu9{`I~*1336RMCV2UIMB+{7E7v0`s9AHzm8Eu_ zoUMo(8gw9haVq)`0D`@cnwG%|WR2Qx2@6J1{@3|e$~LP>^;r6wbY*FGn9nMDd95n6 zw8GeTrNQw_^A$6Xa#COsS~}~be8)2y)=50 z7kQF*RATuP2XFkG=B}E%8xk&_?*xEUp6v}aaLIZl8hq{!$L(S02Zz9`-WAVXFx|mv z5L$%ntJb0)duzSO>@^~*@f<|766wv(dbHIV>#R6T-vqIa^^WCVU1ObrMEAN0b3m%M zP>T}E`?A($nfu)?M?&tqq`!^;FyHSdvd4~U)0bfJv*(Uk5HHzF(o&E%r>6o5; zN|`WjI^4mdLCHpt&~*^KR75jbMU@5$<-}b@eut@wO7@y5i0R3P{7RX;cr=0p8~voT zN-x{2<}j+KIy`FVPtjbBt+b@fkVl<-$d7zWmOOYkAT?NZL(?iebG4eok?2EqZKr-0 z7J68hY(>kyY@9)3T$5$0-jEu8-P9q<4Eg$mIWVwaBap1_e!OzuU;9$?nZ5 zth`Khtu-8BPdPOSa~dPO5t2T0wU4eg4eo5o<%6P6eY2pQ_?kH>dem=y&z1{jW5v#5 zkp)=$upZ_hmemLv4RZ%sa8`BvAbk__{AZ{I^ZhC{{pKL`!NWy3U*xBiU)plr~o_zeoKLq8L5)l{Tli^uCCKcNc3sCMmG<=27&ZsRq zIur(jik|;WWC=R?G{p4eqavMLRop^_5uXhHR7OC`Kx>XWZrRV0Zkja-ZpPSWE!ND? z(w#F9?i>|8_K7MqewdCA=Tt=W0VzTJVSscyo+PB>eNNir#%b{ zg+;d%y(U)`nIQ5ZKR;0}<(CuzpE4{5?UU50%FJ+j;x_O5};m8g$bzy*HXs;Vg8f&S{zl zf#b5>S<~Enj;RNeq?>lv$u}uG4lm+Uh8kXhhuFkE=$gU70CAE1t?yw@XG3)Mt;kqG zbzuV{MVg?XS`9y){2*TWd`EoB(9|WWNf)6fJEW_=iJSYmE!V#-!YPb6^tr~99%K#1 z;qS)P@zcq7(-r)iH3<_;6>IzlIPbXi; zC*R@3CxgxF0mI7XDwLx+8e7>s+zojS-h_z@k^w{>obpytC1(9OMQ?)0hx}Beldpp5`q^hU_ zPwFkgxgizZff}S6psL~rg-u(jeoJpPn_7(ls7~YwWx8=l@1O5-qv+(i?~C+ZO}9`a zkhq}zWPqfi8LMn((oOX)Nf`ZWZ?9KZ$-}ULEb4TJS2h8<>RTe*fTkkKOY0X@@l6{> ze7ICD5=flo?Cjgr>niZKCGL~CZ`MpsAE@Y08tL*l_F)EJDxlr zfrfQaN20NikAL6_OocDlsFumlvv$M0P(-`5C*qxn_&TB-$}33%KJ1egMp2GqBNa{2 z^dG9YQN#Me$vFv=bNgb-T}O0=Mg@uSR8Cu$H|0Q%&J{2=1uNy?@CQX=A$;pG}(N^v?{MLbf5YrRbo zP2)?k9W%nJ$PZm-2NcdQjSYy(2zly!~WZ4KCLRSmU7D zEkUJL8*Ilf+Eau(%7dsLHTR{}IPM-E^|)saJ%`y?_C2Hf+s-~))#d_M_Lu?mYT9!5 zA~&Qs-(2HBd@>KV40qL$S;Vf z5A`Z05f|da;R9?3nI5DJ=Z#dP8P}?!YQqlgs`mge5odC5#=1E!ATi~#As_N1U)}OE z%4V}i{fb2{E?JOpe^8Jjx(PS#4N5af#zQ$cz|>h@E3ka)C$EUJgF8sSr0=+}k^Ct~ zMbwM>C0!z|;u$9l;vHNZka)op+dmzH4>x6JSpDz0t>w-Glbfzrq5#^{m7$=Iv5@g+ zujT(B4Ib1%Ih3a&>PMgoO~iw^P_6?K?+1d4^K^=Em)yJPbXC+Hr)S*@)AiE5oXQUnECY8m7TkgG04oD8~j65AA3s#;ptqM^VJgjINhNf+c2InG~|W5aFX&>M16IAvnqbtFc=Nb zxI7v`LODO=2CBZ_LrwboC#pA1VO#}z5T?|x*vFE89wqW~G!v?Y@ZagHKPPSyMr~0C zsZEm2JW(#?tBAWPsCS{ri$^0!&e;K$1>;mt-1PgzQuRO0pNdDQ(V=w8QEzn*s*0UF3tomQ) z<>8IN9TzI%d=8ILD+Qt+y7?@f{-*S1`4a~(zZ{Snth~_LLYh1M182&!3wt!^RWm6eB*@M zH@yaf%fDGoa$ew?PWWoPU5Oh%)wgb~8w;ZpNvD@CAF1-d@@Ba!NC{HIJ*tl@;-?DI z`T2@@AbU`Tbb9IX5yUIPyT^6+*D66GL*AnbdmTNFIqF!h=CuxPr&1)HUb=iF%>&Ds z<*iGv1*zep+Z%KVlZ30h59E_{4{Q=0;-t~(rOQVg-oCgu1YInw1&K^}(JfF8oDlR0 z3;YSMu9BjhY^+R}=Rloax_l&2hvmz14oVvc5)Tx|oW>|CFssJXL?Sx z^SmNBNm5X}`;#JrM2*tkL`ELGCgH}R;bJ-Y#(OAu`W6>p@+`enNzd1F+BhNT7 zN9QhgsEhw(C>I9)xZfrO~ex8aY2m3-W`vog&nhM$6Z+3Lcix( zM7Ph+p7xbSHVlQ^aU$~gxI7Yp1b}#z_GEm=a>DwRj*axAB zqoX=@6X(?-RZa3TGGX<3`FWpd8TW%l#vOaSw1f*=Xr=M6CR%T_;s`9CTjQG(c8Vc@zlW;_wfW4bH!(-e4;lxvL^M2(60-lAAeRKf}8Ovscw6zX{FdXY3o>fVj(qi|74ovyI7!$f)QbdG&N^7jHzv z1y4|HXwcab-gG9OQDb-%$2>G=PjdrTv1*MfFC_(%S3#$S)yi;8<%~e#jez$HH!zvI z^uz%L=Omy2ro)7u&P~L{t})*Hd!I`dB(IWu=Iu1RT!VKv0JwoLJO;ux?StnE6fzI{ zt$@u~0Wf#K_ZECt;e8d}SK)mX-Y>=Pg?L`bqhNT_2oJLG%PGa*{|7HcGSa(r!vz2U N002ovPDHLkV1ia|W}*N9 literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-send.png b/src/assets/images/icons-chat-send.png new file mode 100644 index 0000000000000000000000000000000000000000..a133db5fa33b40ed3a026fe0e297b359fcac68dd GIT binary patch literal 1521 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91EuaGc1ONa40RR91EdT%j07j?Pa{t$nD75mREMG(T2_wki0arTQp{_@GY(UkXyliwdHTB7&eOVyjR|nl$)> ziO~30&|yW6|DNpEszlT9``kj(7-oo~)P=ggTi1`DLeyX_t0 z6WC)dYPnP;%SywN^)mhqS|DKz60EE2D~jQ>z#vGmaG)yx-YkF1Swh$GJ1(jHXUoMoGSGQh46N7Ws?Jw=^*0wg7MO3moZc zHiNF~IDvlbtX-8nj~5B}khQkdb#d2m#+V@jZ;Mys_0Kn(v8Z{Gprx~8Nqj=EJE9g_ zXg|UCu8L!Sl+Moyy0OdNj|m(DY}G;mxz9KKh+*H!CiC5Fa|&kbXz8$fF^R927O>Dz zK;-N3p9Nf~q#tRwwG#$k(JK_sGH>yljTu298p0%glcc4?6Ts2D0+vW5Fsi2T%#_eH z(DD*8x}{f%nXvrdwn}(}%WqLR4RqSAExwls0*I>1YYA6yTt=sLa3F=>7Q+t*8P2CJ zKTh%9?H@oHN$aFrj)1jE;SxT7!=9uSOV||7Mjg$sJ^w-~(kv&C={ zXkq01AS35O#+jnwq{SDPs6GS0>3_YZ-2G!%yE=}_!c7MbAE4;>xU9^89@lvCG?W`` zSOdKA3(!UV{`4a7_bAomhWcz-Yw+lu{Nsk!vh5%CUF8OIKqh6)uZ4F#efU`}rdx*- zogW4oc}7Xv2^!)#{vJyKXRZRr{{*@zVQs9O23uZiaPK;U{TmJHZUc(=sRl;USR+~?f==WEEk1qf}u%z*zf)R`ixNg0{6PtjojL0Y1 zp5O-5pAFGxCro3zJw;FGENL+a>UP^{>*?=YjAfkl>vN_5rq49B+XQvGVlJj(eJz}E zXnWfD!uqpq`|*m!OB7!e(O(ZpXu378Br1y$tuB;VNm@HSSd-poHtNw#E;7iVd;Ic- zd;H1WJr2fX57~llB6E3<{%aOp^cJ(x_I1=_j@6-45>KnrBrUJ!GVOp|zqt$~>3Omt z;f*Pg!eGSN5Q9>F?;Ndv2FEJ;Zyh)SE0^cfnV~e$Zu<411^8^?m3m0h&J-qP#U8up zy9M?h9_>C|8nNi)mylF1<}SGMB;7|zJ5f-|AN~P6%+DTnjL$<)o%m}ICEXWOZf!Kl zM3qDA;Y(SQpW6Zy$8w{mTF;3XdkC+`wW-7Q=voss@$Gt`x@79}=Sokb`1<|y(LG(e zO}%s))Q+PpB0>K*P6N1Z^KuFBa58DB(i5BO%|#RPMK|4CbcIp&GGBmP_zIt&7M4Ts zh*o*TyY>1F%cvAC;qxJ7KHPRO_7X%b&ANgYitx8_ivgx;PbnUbdM6AlA6oq% X3(h)Ij1M{=00000NkvXXu0mjfH0a0% literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-chat-send.svg b/src/assets/images/icons-chat-send.svg new file mode 100644 index 000000000..ef257f54f --- /dev/null +++ b/src/assets/images/icons-chat-send.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/icons-chat-send@2x.png b/src/assets/images/icons-chat-send@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3339da57f6d49d2f539f562bac3098d1bafa062e GIT binary patch literal 3012 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 FV1iZyaMJ() literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-nav-grupos-active.png b/src/assets/images/icons-nav-grupos-active.png new file mode 100644 index 0000000000000000000000000000000000000000..b09208d843574cc11a8605f6338eabcc1428e3c6 GIT binary patch literal 1664 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icons-nav-grupos-active@3x.png b/src/assets/images/icons-nav-grupos-active@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a0304a91a2ae443af46d20da7a50c23e08393ef3 GIT binary patch literal 5267 zcmbtYbz2h-xE&1xL1HjcC1fzVQ)Gg`=I^k`J1y9A{MNW=B_ z&%GbuKJRnhbKduyPjF&2)D#{8>3{$L;E|G|oYp_~`wxWp|F*b|$hUul<)x(n1Jq71 z?EO3BYz>s`R8;|-|1=>0E7}o&`(NZA=>7o!z$wH6;QV8(|9*wo|Lgh{;{2cfFG#qd zdk6qf-YLn+>iA(Dm=gQx%;d@JuH>Le{H^>TN>43%6aY1@-1szxUs^cHMA7dQO;N>P zb(;#jyPK+7N*nKtmYaNKX7{a(t%KjO7KIzvd=~bBUWQ``4H99B*vykDHfjFLfq&mV z&jIh`OHN9Prk|}GDcc=Bblg9zK1e<6hE6=TlBUM~|4mLLV4TZ0VcYHpUh}T6k55RB zrVnRPNd})lD!&$-2>SHBognOWp&ZS906M6%e`#BTbat6F*G{(pDJ9*Y`-quhFB3K`K}2uhxv5 zayv4w%uw6gu0vs@jc{EwH{ijjH(T(aUVFbZp@Tq^OA>#i%f@gA9#V}tcd4>dt_ z7^|ZBfCn^9s`b@L!<6Te0P>$^ypXru^EfJ6h~ThyaL0e8hMI`Yq%?R}jWTE>F_EM(M?gT}AVu?7+*bKi%Iqk@p$0nrhVgZ{g@akfHP$}myxJ~K z`3wKrzNwD%VP{3ioTiDXQtUOv=%7W;wj_f|uI+-)X@y0*F=tpy5YfaU@@WG-`ed)w z>t5`rEh|Y(aw2zv6o1=!Bz!Zb_yea3=K!vYgwZxA;Y)06mU0pwa}B0>#sw}^lX@a( zgbK>}KJBxk4+zj)f@uc;Ps~#}{Lwoj0f^JhbM_6jDoXyhBWao_rd5W>)T_^sSpzZ9WP%R5LuM7rZ3$DE;7D@oyrtKrY} z)-091fa+JXe#ZM`a*6h^La(41*6O~{7+@=FfQOE(t;xE}vJRzmzDE&l=~{JKWqZyD zQ>0&8kR~iy5Ux-9cT2t`e99)}3p>~nA-^6h^qQ@0WY*}xAVVw)Pu`6!3PdT%qM+GG zZ@o}Qu04y4`BJ@dnCAM+v38MMQsLAZ!gwR&otS5Y;IyHDcN;|GWcTjLjQDRq;mo_a z_}$N+P`#){0)3X0FvUHoMLQ3~vnN9I2|>u)dKdLBa`~iiVkb8COF1pOVa?nkd0HFk zkev9#>l*K`GQWTm`7JiiQ%8$9ID_D#!lgsyJ(#)EvYw?MK4k;Ea@Pt}Z>Ww2JY36ASGTE0pT2le`>u<;Vlj%MV0h?SyE3w|((8nwwfp|A=tg$Aub zbmJjHxf!FGgWKz#M4%WrQ|~KqHl2qCRj%$I9&1k1qQ2|DS0K!VPj8e^t9tDL^D{9f z1{zHRPNb|R-?NeKIBs2?#`#~%jg5_PPMGZ*BOaP8GG7MWQI_T<50ivo6@9+d*@MOE zSw$GzUz>}f>uv|^DDtq;p>3+zevkFbnBKI~oZ2(<#*Wl*s1LZrmfY~UwRq2KQxK|Kp{&zXyg*I441((Nk4ht#@3UBliuj`kX`kqC$2V# zq-ur@CPEwRGnC|mWjV*k7PS?*#C+oIK_Qd#hQ`${Nr*@W2td72M7ph zPtIChPj<5JDhL2a#|^`GlDlnf$WAAjxo`n8pM)X>B&dZY30A$<%;?{F@iVNU`KOXk z)c^1{E6TZw$rLzGZc$#~*xF~9;u{K)+1$iOWwWA8@J4OO$X(JjJ@XLAeHcfNt0srx z6vD5Sjo^Geo}is;%JQKd$GqXhOd_S0`LxXUTb{1TxqW}oGEZt&yV3r|dHD#EH^EF$ z<1=4irQF-7?(%DY>X-^UYG`NGoM{PPDd{CXi8_)EF6cu-%CDMOm3KlI|KVO&*RoDLuF|&+UiqPA`7lAO7BRIp4!h^@ zUxjRAZdG;pcpodXgstDaE$0CS`aL+-EE{nU5v32Z_Xq98h=Vdhcec|JzPpO&KPo5@rB4|Xoj`*Yas@GQ zUcws_QP>E^WvME^v*+FP>nT|UFEpTL1qGnR?5qx}3-K3a_qzS;msg#2F5jiB;rruk z2f&>R<4dU!1_o>MxMYtu;^>lY@zAJS-{QlDj;vu0Lm}ap^QtWehxC3lbQH{&bNS{^ zC#AdUnxNtNAM_PGX6mK`+-PihMz=T-Zk&o$;a(HnJ}N!G9ed;m^nrtS7J`uzr;Rh4 z*$No4Zmgs4YCc42D|PsVnxa#hE5?!5#C7Ty=kLKcbpyve>Pm0i3DzgO`aa#i@Q)qf z5XOr|u&HflWja6D96342Hy}!OpvI5Lp5~@}4yqt;P+F=84Yqu)b=6gI*nG&67 z*qv~4tvz|YF1lAZh36WA!NR3p8X<@dMT;QX&++=CjlYSY7gl~;rhgtO_2x}=s3GJh z4Tt^EznZty^kWu6s_i&c1yU8%f0%X&aO8hJam6)vwHmNqG1Zz?vR~d!2^B?ty|k6c z81+|+55Mvusc#5TCZl?H=V|79KSu6(XzC!&-RqZ-xoL6v=`|#0H<_o~(K1qq_&3r% zayu*rc;%BjR!~EePm%|1zS9wv(S_tjSXlYsHg7B!sH~in@SC7ao-V=57byythNw+A zxYuYR8bxQ3%3qOGJ_a^D@7dB!sLpQazbY@EsC=**8D)35sLA%F&$vx6vq5h8l$MV6 z&+`0Y`&M*%?s~&9d8FxKM}*LzduRT0e6IsDz7N7ag)Pz z@qM2@O7O;b>o)$5uuG2+yUmF!Y)5j?gt?}8BLCaUFDrKMwfh{zJKmKqFx}cjw!wH{GJ~ycC1^C#-@o| zI7m7{ujHZH{WB|;EHpo(Z-{%f@B2QvK5Pg}uaX=T7cB+Kjcivdi#WFCd-`971NWGa z$K$u{$Fij;3IsmLGM?PjmzNjAC}As(ja3k0OZj}Ctu2mvvgbgeZjJk+rzltT6o({y z1&vEvX`#Z(DX-!_aL!N(VhSQ1+TFA^>_QSUUJdf8p2h0Dka?^@XUaBXW!(u$B^{sD zyCKN92#0`g#zy7O41_ZAA8<0IM!;&KuvT;BA2F0wCY|nmRDV8hF(se8{*_}{-Xt7A zLQ-;?cztu2-GqDLbvya8Z7r~V1Q2T~36J4fb%lJC{#o0|0r-gj>B$qrT|JkH2$ZN%w2|DM)?D z%schlH4hEcN;jl})jcb@whsE>SgeU*Jif1wVv1aY)CQ4(?nYBJdp7mBX8J{e@~=gX zm+Pq$(D29@-dK5BeR-m5hZf}4?pM_|y5IdxkZG8##zdT<=pnj#_wlbfGdjNSVH;gT4b(#wYUMD1+Zp>)zvNpj2yZ;Kh!U zajStWx8zf8PlH5_D#$>V3>a0rj)O@${}Xfb3M@;;`>qJ!$@zT`mN_f@2-7rkDpn>H z#Q|RaNejrNLHi_)W}y9#Lsga34O6Lfw7((g5Bm7){DM<|cLMf+~2gzD~W@jPh{-*wOrQhGiARDz#DF?+5aj_N1M;(@r30L99HR;Rm)urhvHj&&h?NGZ+*#RANA1W!JVzO zj$wVNd$862(j{>5%>!=wYMQ1su>!eL8GU@hBVEM;A~>dY z;ziEP_zGa_Y}4$pnBiZV&Yxe9(qA?)=-;>F*ss~zR(&<ZSJe{gYjfxl!S$2*=`M?Q1ruM-rhjy&ByyUq&14Gr>X^%gM@&UMW~VYTs6Hv7 zDUNFHsbN=p72R;Qqg8x)^sd-#2={o&PcF?F!zvi^dx{Uwi=`cgy(r&{&Y1Y+SQV;I zB{C;;2uEC_Wsi$cuqHItKEj%&VquE$#?FMk0#N4c}!_PFUe+kpJa=eu2Syn z74uIoH?5mWSEcvPnNEKrwF94iKPnDN^ptfta9z1nW9~RHeDNR*KD^#{M{hz>^{mE1 zi2P5)vHC8k|5PoL1tR@upsBqZ3034=6W+ZJhVnBqptk*{jN zz3#rXOj_2kxb3ok`^|UWqx0#w z%qv;^iMmf|>yF&-!jEsjd+(71Aboa`ya4N zCr)P&mtELuI_9Kq+ri8n9Z{C3OIfEfz7?|Ht_Sl682|j81;o10>yWIv*YT4IwO7qRe$jb{Nd_e5jrU^bCy=|; z5UUHjiGDNcwjoi%Ik4e&KXwK>vRHI`uT4HM;5zFOtY*w{q!!I$ zbhzld8#7X?ULa1rYe$M0h<=A1$)*pk1ZDHHoxc2{daQnr->v6p zZY&^9QX{04>~j*6BRn09mGL`?-F0E}_~r@6oms5c5>lmI5SsV3ycv&Rh8`6ZUh~7i zBk-;JFfRsE%6=uy(DqxzI(|HR>0716S#hk}nU_8owbw8An0S1Fc0QaQ*Q^6`TM_E) zU_dWbE19g$x?4meS_Aw5b~-G;yhh;z#es{%ZrRKC$fF+OCthSkbZ7dX6UN?u8ZVu* zXG$b*e*An8+xyC#1bRvC*fNGhq^~{l5;gkms$?fAHSW`%V(*aR>QED}g*hgJJ6-H? z8W~k<95Eq>Q?Vge_?Pqvief3c_snj#;bQiwm)Do}^rQ)_Z{De)$E8o3{~9aXhmr3p z8-d3B-Bk>N$aTY$3&l+%W}hz1sBw9ir7?O3Plhdg5W7Ma+e%;u;e