This commit is contained in:
Eudes Inácio
2021-09-21 06:10:24 +01:00
42 changed files with 933 additions and 295 deletions
+1 -1
View File
@@ -44,7 +44,7 @@
<ion-item-sliding>
<div class="item item-hover width-100 d-flex ion-no-padding ion-no-margin"
*ngFor="let dm of userDirectMessages"
[class.item-active]="dm._id ==idSelected">
[class.item-active]="dm._id == idSelected">
<div class="item-icon">
<ion-icon class="icon" slot="start" src="assets/images/icons-chat-chat-40.svg"></ion-icon>
</div>
@@ -37,7 +37,7 @@
<ion-list class="members-list" *ngFor="let user of members">
<ion-item-sliding>
<ion-item lines="none" class="members-checkbox ion-no-border ion-no-padding">
<ion-checkbox checked color="primary"></ion-checkbox>
<ion-checkbox checked disabled color="primary"></ion-checkbox>
<p>{{user.name}}</p>
<ion-icon class="{{user.status}}" name="ellipse"></ion-icon>
</ion-item>
@@ -40,24 +40,54 @@
<ion-label>A conversa original mantêm-se como chat individual</ion-label>
</div>
<div *ngFor="let msg of messages; let last = last" >
<div *ngIf="msg.t != 'r'" class='incoming-{{msg.u.username!=loggedUser.me.username}}'>
<div *ngIf="msg.t != 'r' && msg.t != 'ul' && msg.t != 'ru'" class='incoming-{{msg.u.username!=loggedUser.me.username}}'>
<div class="title">
<ion-label>{{msg.u.name}}</ion-label>
<span class="time">{{showDateDuration(msg._updatedAt)}}</span>
</div>
<div>
<div class="message">
<ion-label>{{msg.msg}}</ion-label>
<div *ngIf="msg.attachments" class="message-attachments">
<div *ngFor="let file of msg.attachments">
<img *ngIf="file.image_url" src="{{file.image_url}}" alt="image">
<div *ngIf="file.thumb_url">
<div class="file d-flex">
<ion-thumbnail slot="start">
<img src="{{file.thumb_url}}" alt="image">
</ion-thumbnail>
<ion-label class="file-details">
<h3 (click)="viewDocument(file.title_link)" class="file-title cursor-pointer">{{file.title}}</h3>
<p *ngIf="file.text">{{file.text}}</p>
</ion-label>
</div>
</div>
</div>
</div>
{{last ? scrollToBottom() : ''}}
</div>
</div>
<div *ngIf="msg.t == 'r'" class="info-text">
<ion-label>Alterou o assunto para "{{msg.msg.split('-').join(' ')}}"</ion-label><br />
<ion-label>Alterou o nome do grupo para "{{msg.msg.split('-').join(' ')}}"</ion-label><br />
{{last ? scrollToBottom() : ''}}
</div>
<div *ngIf="msg.t == 'ul'" class="info-text-leave">
<div *ngFor="let user of allUsers">
<div *ngIf="msg.msg == user.username">
<ion-label>{{user.name}} saiu do grupo</ion-label><br />
</div>
</div>
{{last ? scrollToBottom() : ''}}
</div>
<div *ngIf="msg.t == 'ru'" class="info-text-leave">
<div *ngFor="let user of allUsers">
<div *ngIf="msg.msg == user.username">
<ion-label>{{user.name}} foi removido do grupo</ion-label><br />
</div>
</div>
{{last ? scrollToBottom() : ''}}
</div>
</div>
</div>
<div *ngIf="leaveStatus" class="info-text-leave">
<ion-label>{{leaveStatus}}</ion-label>
</div>
</ion-content>
<!--
@@ -93,17 +93,17 @@
border-radius: 8px;
}
.info-text{
/* width: 322px; */
width: em(422px);
background: #fef4c5;
text-align: center;
font-size: 13px;
color: #262420;
padding: 10px;
margin: 10px auto;
line-height: 1.2rem;
/* margin: 15px 0px 15px 0px; */
border-radius: 8px;
display: flex;
width: fit-content;
height: auto;
background: #fef4c5;
text-align: center;
font-size: 13px;
color: #262420;
padding: 10px;
margin: 10px auto;
line-height: 1.2rem;
border-radius: 8px;
}
.info-text-leave{
display: flex;
@@ -168,6 +168,28 @@
float: right;
}
}
.message{
.message-attachments{
.file{
align-items: center;
.file-details{
width: 100%;
.file-title{
color: #000;
text-decoration: underline;
white-space: nowrap;
overflow: hidden !important;
text-overflow: ellipsis !important;
}
.file-title:hover{
color: #0782c9;
}
}
}
}
}
.online{
color:#99e47b !important;
}
@@ -11,6 +11,10 @@ import { GroupContactsPage } from './group-contacts/group-contacts.page';
import {Router} from '@angular/router'
import { EditGroupPage } from '../edit-group/edit-group.page';
import { TimeService } from 'src/app/services/functions/time.service';
import { FileLoaderService } from 'src/app/services/file/file-loader.service';
import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service';
import { FileService } from 'src/app/services/functions/file.service';
import { ToastService } from 'src/app/services/toast.service';
@Component({
selector: 'app-group-messages',
@@ -22,13 +26,13 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
isGroupCreated:boolean;
loggedUser: any;
message:any;
leaveStatus:any;
messages:any;
room:any;
roomName:any;
members:any;
contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"];
allUsers:any[] = [];
roomId: string;
loggedUserChat:any;
@@ -39,6 +43,9 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
currentPosition: any;
startPosition: number;
capturedImage:any;
capturedImageTitle:any;
@ViewChild('scrollMe') private myScrollContainer: ElementRef;
constructor(
@@ -52,6 +59,10 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
private alertService: AlertService,
private route: Router,
private timeService: TimeService,
private fileLoaderService: FileLoaderService,
private fileToBase64Service: FileToBase64Service,
private fileService: FileService,
private toastService: ToastService,
) {
this.loggedUserChat = authService.ValidatedUserChat['data'];
this.isGroupCreated = true;
@@ -70,6 +81,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.scrollToBottom();
this.serverLongPull();
this.setStatus('online');
this.getChatMembers();
}
setStatus(status:string){
@@ -125,6 +137,16 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
async getChatMembers(){
//return await this.chatService.getMembers(roomId).toPromise();
this.chatService.getAllUsers().subscribe(res=> {
console.log(res);
this.allUsers = res['users'].filter(data => data.username != this.loggedUserChat.me.username);
console.log(this.allUsers);
});
}
/* load(){
this.getGroupContacts();
this.loadGroupMessages();
@@ -246,7 +268,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
await modal.present();
modal.onDidDismiss().then(res=>{
if(res.data == 'leave'){
this.leaveStatus = this.loggedUser.me.name + ' saiu do grupo';
console.log('saiu do grupo');
}
else if(res.data == 'cancel'){
console.log('cancel');
@@ -257,6 +279,47 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
loadPicture() {
const input = this.fileLoaderService.createInput({
accept: ['image/apng', 'image/jpeg', 'image/png']
})
input.onchange = async () => {
const file = this.fileLoaderService.getFirstFile(input)
console.log(file);
const imageData = await this.fileToBase64Service.convert(file)
this.capturedImage = imageData;
this.capturedImageTitle = file.name;
let body = {
"message":
{
"rid": this.roomId,
"msg": "",
"attachments": [{
//"title": this.capturedImageTitle ,
//"text": "description",
"title_link_download": false,
"image_url": this.capturedImage,
}]
}
}
this.chatService.sendMessage(body).subscribe(res=> {
console.log(res);
},(error) => {
});
//console.log(this.capturedImage)
};
}
viewDocument(url:string){
this.fileService.viewDocumentByUrl(url);
}
async openChatOptions(ev?: any) {
console.log(this.members);
@@ -271,7 +334,37 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
},
translucent: true
});
return await popover.present();
await popover.present();
await popover.onDidDismiss().then((res)=>{
if(res['data'] == "loadPicture"){
this.loadPicture();
}
else if(res['data'] == "takePicture"){
let data = this.fileService.takePicture();
if(data.name != null){
let body = {
"message":
{
"rid": this.roomId,
"msg": "",
"attachments": [{
"title": data.name,
"title_link_download": false,
"image_url": data.image,
}]
}
}
this.chatService.sendMessage(body).subscribe(res=> {
console.log(res);
},(error) => {
});
}
else{
this.toastService.badRequest("Não foi possível adicionar a fotografia!");
}
}
});
}
async addContacts(){