Files
doneit-web/src/app/shared/chat/messages/messages.page.html
T

297 lines
18 KiB
HTML
Raw Normal View History

2022-01-12 17:02:41 +01:00
<ion-header class="ion-no-border">
2021-03-04 18:50:26 +01:00
<ion-toolbar class="header-toolbar">
<div class="main-header">
<div class="header-top">
2022-01-14 12:38:51 +01:00
<div class="middle">
2022-10-04 11:33:46 +01:00
<ion-label class="title">{{ ChatSystemService.getDmRoom(this.roomId).name }}</ion-label>
2022-09-29 14:44:21 +01:00
<button (click)="ChatMessageDebuggingPage()">Dev</button>
2022-10-04 11:33:46 +01:00
<span><ion-icon class="{{ ChatSystemService.getDmRoom(this.roomId).online }}" name="ellipse"></ion-icon></span>
2021-03-04 18:50:26 +01:00
</div>
2021-08-20 15:08:36 +01:00
<div hidden class="right">
2022-01-19 12:32:29 +01:00
<button title="Menu" class="btn-no-color" (click)="_openMessagesOptions()">
2021-10-25 10:53:01 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-menu.svg"></ion-icon>
2022-01-12 17:02:41 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-menu.svg">
</ion-icon>
2021-04-09 08:59:22 +01:00
</button>
2021-07-23 14:43:51 +01:00
</div>
2021-03-04 18:50:26 +01:00
</div>
<div hidden class="header-bottom" (click)="addContacts()">
2021-03-04 18:50:26 +01:00
<div class="header-bottom-icon">
2021-10-25 13:21:48 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/icon/icons-user.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/icon/theme/gov/icons-user.svg"></ion-icon>
2021-03-04 18:50:26 +01:00
</div>
<div class="header-bottom-contacts">
<ion-label class="text-color-blue">Adicionar contacto</ion-label>
</div>
</div>
</div>
</ion-toolbar>
</ion-header>
<ion-content>
2022-01-12 17:02:41 +01:00
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh($event)">
2021-03-04 18:50:26 +01:00
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-refresher-content>
</ion-refresher-content>
</ion-refresher>
2021-03-04 18:50:26 +01:00
<div class="messages" #scrollMe>
<ion-list>
<div class="messages-list-item-wrapper container-width-100"
2022-09-30 15:13:36 +01:00
*ngFor="let msg of ChatSystemService.getDmRoom(roomId).messages; index as i; let last = last">
2022-08-01 15:15:02 +01:00
2022-04-19 16:03:59 +01:00
<div class='message-item incoming-{{msg.u.username!=sessionStore.user.UserName}} max-width-45' *ngIf="msg.msg !=''">
2021-09-24 15:39:25 +01:00
<div class="message-item-options d-flex justify-content-end">
2022-01-12 17:02:41 +01:00
<fa-icon [matMenuTriggerFor]="beforeMenu" icon="chevron-down" class="message-options-icon cursor-pointer">
</fa-icon>
2021-09-28 12:00:11 +01:00
<mat-menu #beforeMenu="matMenu" xPosition="before">
2022-03-15 15:49:59 +01:00
<button (click)="deleteMessage(msg._id, msg)" class="menuButton">Apagar mensagem</button>
2021-09-28 12:00:11 +01:00
</mat-menu>
2021-09-24 15:39:25 +01:00
</div>
<div class="title">
2022-03-23 23:00:19 +01:00
<ion-label>{{msg.u.name}}</ion-label>
2022-02-10 15:50:11 +01:00
<span class="time">{{msg.duration}}</span>
</div>
2022-02-16 15:52:59 +01:00
<div class="d-flex justify-space-between">
2022-03-25 12:25:17 +01:00
2022-05-12 16:54:11 +01:00
<div *ngIf="msg.delate == false" class="message-box">{{msg.msg}} </div>
2022-03-15 15:49:59 +01:00
<ion-label *ngIf="msg.delate == true" class="flex-0">Apagou a mensagem</ion-label>
2022-04-26 14:34:52 +01:00
<ion-label class="float-status-all float-status" *ngIf="msg.u.username==sessionStore.user.UserName">
2022-03-25 12:25:17 +01:00
2022-03-03 22:57:33 +01:00
<ion-icon *ngIf="msg.messageSend == false" src="assets/images/clock-regular.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend == true && msg.received.length == 0" src="assets/images/check-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend && msg.received.length >= 1 && msg.viewed.length == 0" src="assets/images/check-double-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.viewed.length >= 1" src="assets/images/check-double-solid -viewed.svg"></ion-icon>
2022-02-16 15:52:59 +01:00
</ion-label>
{{last ? scrollToBottom() : ''}}
</div>
</div>
2022-01-12 17:02:41 +01:00
2022-03-21 21:06:54 +01:00
<div *ngIf="msg.file && msg.delate == false">
2022-04-26 14:34:52 +01:00
<div class='message-item incoming-{{msg.u.username!=sessionStore.user.UserName}} max-width-45'
2022-03-03 08:21:22 +01:00
*ngIf="msg.file.type != 'application/meeting'">
2022-01-27 14:26:18 +01:00
<div class="message-item-options d-flex justify-content-end">
<fa-icon [matMenuTriggerFor]="beforeMenu" icon="chevron-down" class="message-options-icon cursor-pointer">
</fa-icon>
<mat-menu #beforeMenu="matMenu" xPosition="before">
2022-03-15 15:49:59 +01:00
<button (click)="deleteMessage(msg._id, msg)" class="menuButton">Apagar mensagem</button>
2022-01-27 14:26:18 +01:00
</mat-menu>
</div>
<div class="title">
2022-03-23 23:00:19 +01:00
<ion-label>{{msg.u.name}}</ion-label>
2022-02-10 15:50:11 +01:00
<span class="time">{{msg.duration}}</span>
2022-01-27 14:26:18 +01:00
</div>
<div>
<div *ngIf="msg.attachments" class="message-attachments">
<div *ngFor="let file of msg.attachments">
<div *ngIf="msg.file.type == 'application/img'" (click)="openPreview(msg)" dfsdvsvs>
<div *ngIf="!msg.attachments[0].image_url">
<ion-item class="add-attachment-bg-color" shape="round" lines="none" type="button">
<ion-icon name="image" class="file-icon"></ion-icon>
<ion-label>{{"Imagem"}}</ion-label>
2022-08-05 15:36:09 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && msg.downloadLoader == false && msg.downloadAttachmentsTemp == 0 " class="icon-download" src="assets/icon/theme/default/icons-download.svg" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && msg.downloadLoader == false && msg.downloadAttachmentsTemp == 0" class="icon-download" src="assets/icon/theme/gov/icons-download.svg" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && msg.downloadLoader == true " class="icon-download" src="assets/gif/theme/default/Blocks-loader.svg" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && msg.downloadLoader == true" class="icon-download" src="assets/gif/theme/gov/Blocks-loader.svg" slot="end"></ion-icon>
<ion-icon *ngIf="msg.downloadAttachments == false && msg.downloadAttachmentsTemp >= 1 && msg.downloadLoader == false" src="assets/images/retry-svgrepo-com.svg" class="icon-download font-12"> </ion-icon>
2022-08-04 16:13:11 +01:00
</ion-item>
</div>
<img *ngIf="msg.attachments[0].image_url" src={{msg.attachments[0].image_url}} alt="image">
2022-04-26 14:34:52 +01:00
<ion-label class="float-status-all float-status" *ngIf="msg.u.username==sessionStore.user.UserName">
2022-03-11 10:28:15 +01:00
<ion-icon *ngIf="msg.messageSend == false" src="assets/images/clock-regular.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend == true && msg.received.length == 0" src="assets/images/check-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend && msg.received.length >= 1 && msg.viewed.length == 0" src="assets/images/check-double-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.viewed.length >= 1" src="assets/images/check-double-solid -viewed.svg"></ion-icon>
2022-02-16 15:52:59 +01:00
</ion-label>
2022-01-12 17:02:41 +01:00
</div>
2022-01-27 14:56:55 +01:00
<div *ngIf="msg.file.type != 'application/img'">
2022-03-18 16:43:15 +01:00
<div *ngIf="msg.file.type != 'application/audio'" class="file add-attachment-bg-color">
2022-03-03 08:21:22 +01:00
<div (click)="openPreview(msg)" class="file-details add-ellipsis cursor-pointer" *ngIf="msg.file">
<div *ngIf="!msg.attachments[0].image_url">
<ion-item class="add-attachment-bg-color" shape="round" lines="none" type="button">
2022-08-01 15:15:02 +01:00
<ion-icon *ngIf="msg.attachments[0].type != 'webtrix'" name="document" class="file-icon"></ion-icon>
<ion-icon *ngIf="msg.attachments[0].type == 'webtrix'" src="assets/icon/webtrix.svg" class="file-icon"></ion-icon>
<ion-label>{{ file.title}}</ion-label>
2022-08-01 15:15:02 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && msg.attachments[0].type != 'webtrix' " class="icon-download" src="assets/icon/theme/default/icons-download.svg" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && msg.attachments[0].type != 'webtrix' " class="icon-download" src="assets/icon/theme/gov/icons-download.svg" slot="end"></ion-icon>
</ion-item>
</div>
<div *ngIf="msg.attachments[0].image_url">
2022-08-01 15:15:02 +01:00
<span *ngIf="msg.file.type">
<fa-icon *ngIf="msg.file.type == 'application/pdf'" icon="file-pdf" class="pdf-icon"></fa-icon>
<fa-icon *ngIf="msg.file.type == 'application/word'" icon="file-word" class="word-icon">
</fa-icon>
<fa-icon *ngIf="msg.file.type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'" icon="file-word" class="word-icon"></fa-icon>
<fa-icon
*ngIf="msg.file.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'"
icon="file-word" class="excel-icon"></fa-icon>
<ion-icon *ngIf="msg.file.type == 'application/webtrix'" src="assets/icon/webtrix.svg">
</ion-icon>
<ion-icon *ngIf="msg.file.type == 'application/meeting'" src="assets/icon/webtrix.svg">
</ion-icon>
</span>
<ion-label class="file-title">{{file.title}}</ion-label>
</div>
2022-01-27 14:26:18 +01:00
</div>
</div>
2022-03-21 17:39:44 +01:00
<div (click)="audioPreview(msg)" class="audio-contentainer" *ngIf="msg.file.type == 'application/audio' && !file.title_link">
<ion-item class="add-attachment-bg-color" shape="round" lines="none" type="button">
<ion-icon name="mic-outline" class="file-icon"></ion-icon>
<ion-label>{{'Mensagem de voz'}}</ion-label>
2022-08-05 15:36:09 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && msg.downloadLoader == false && msg.downloadAttachmentsTemp == 0 " class="icon-download" src="assets/icon/theme/default/icons-download.svg" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && msg.downloadLoader == false && msg.downloadAttachmentsTemp == 0" class="icon-download" src="assets/icon/theme/gov/icons-download.svg" slot="end"></ion-icon>
2022-08-04 16:13:11 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && msg.downloadLoader == true " class="icon-download" src="assets/gif/theme/default/Blocks-loader.svg" slot="end"></ion-icon>
2022-08-05 15:36:09 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && msg.downloadLoader == true" class="icon-download" src="assets/gif/theme/gov/Blocks-loader.svg" slot="end"></ion-icon>s
<ion-icon *ngIf="msg.downloadAttachments == false && msg.downloadAttachmentsTemp >= 1 && msg.downloadLoader == false" src="assets/images/retry-svgrepo-com.svg" class="icon-download font-12"> </ion-icon>
2022-03-21 17:39:44 +01:00
</ion-item>
</div>
<div class="audio-contentainer" *ngIf="msg.file.type == 'application/audio' && file.title_link">
2022-03-15 15:32:49 +01:00
<audio [src]="file.title_link|safehtml" preload="metadata" class="flex-grow-1" controls controlsList="nodownload noplaybackrate"></audio>
2022-03-14 17:11:00 +01:00
</div>
<div class="file-details-optional add-attachment-bg-color">
2022-01-27 14:26:18 +01:00
<ion-label *ngIf="msg.file">
<span *ngIf="file.description">{{file.description}}</span>
<span *ngIf="file.description && msg.file.type != 'application/webtrix'"></span>
2022-01-27 14:26:18 +01:00
</ion-label>
2022-04-26 14:34:52 +01:00
<ion-label class="float-status-all float-status" *ngIf="msg.u.username==sessionStore.user.UserName">
2022-03-25 12:25:17 +01:00
2022-03-11 10:28:15 +01:00
<ion-icon *ngIf="msg.messageSend == false" src="assets/images/clock-regular.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend == true && msg.received.length == 0" src="assets/images/check-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.messageSend && msg.received.length >= 1 && msg.viewed.length == 0" src="assets/images/check-double-solid.svg"></ion-icon>
<ion-icon *ngIf="msg.viewed.length >= 1" src="assets/images/check-double-solid -viewed.svg"></ion-icon>
2022-02-16 15:52:59 +01:00
</ion-label>
2022-01-27 14:26:18 +01:00
</div>
2021-09-21 14:05:59 +01:00
</div>
</div>
2021-09-21 14:05:59 +01:00
</div>
2022-01-27 14:26:18 +01:00
{{last ? scrollToBottom() : ''}}
2021-09-21 14:05:59 +01:00
</div>
</div>
2022-08-01 15:15:02 +01:00
2022-01-27 14:26:18 +01:00
<div class="info-meeting" *ngIf="msg.file.type == 'application/meeting'">
2022-03-23 22:01:59 +01:00
<ion-label *ngIf="msg.delate == true" class="info-meeting-small">Apagou a mensagem</ion-label><br />
2022-03-27 15:18:54 +01:00
2022-03-23 22:01:59 +01:00
<ion-label *ngIf="msg.delate == false" class="info-meeting-small">{{msg.u.name}} criou esta reunião</ion-label><br />
2022-08-03 16:31:03 +01:00
<button *ngIf="msg.delate == false" (click)="goToEvent(msg.file)" class="btn-no-color info-meeting-normal">
2022-01-27 14:26:18 +01:00
<ion-label class="info-meeting-normal">{{msg.file.subject}}</ion-label>
</button><br />
2022-03-23 22:01:59 +01:00
<ion-label *ngIf="msg.delate == false" class="info-meeting-medium">
2022-01-27 14:26:18 +01:00
<ion-icon name="calendar-outline"></ion-icon> De {{showDateDuration(msg.file.start_date)}} a
{{showDateDuration(msg.file.end_date)}}
</ion-label><br />
2022-03-23 22:01:59 +01:00
<ion-label *ngIf="msg.delate == false" class="info-meeting-medium">
2022-01-27 14:26:18 +01:00
<ion-icon></ion-icon>
<ion-icon name="location-outline"></ion-icon> {{msg.file.venue}}
</ion-label><br />
</div>
2021-03-04 18:50:26 +01:00
</div>
2022-03-21 21:06:54 +01:00
2022-03-23 22:01:59 +01:00
2022-03-21 21:06:54 +01:00
2021-03-04 18:50:26 +01:00
</div>
</ion-list>
2021-03-04 18:50:26 +01:00
</div>
2022-03-25 12:25:17 +01:00
2021-09-24 15:39:25 +01:00
<ion-fab horizontal="end" vertical="bottom" slot="fixed">
<ion-fab-button *ngIf="scrollToBottomBtn" (click)="scrollToBottomClicked()" color="light" size="small">
<ion-icon name="chevron-down"></ion-icon>
</ion-fab-button>
</ion-fab>
2021-03-04 18:50:26 +01:00
</ion-content>
2021-03-12 11:56:54 +01:00
2022-09-30 15:13:36 +01:00
<ion-footer (click)="ChatSystemService.getDmRoom(roomId).sendReadMessage()">
2022-03-25 12:25:17 +01:00
2022-09-30 15:13:36 +01:00
<div class="typing" *ngIf="ChatSystemService.getDmRoom(roomId).otherUserType == true" >
2022-02-24 14:59:47 +01:00
<ngx-letters-avatar *ngIf="showAvatar"
2022-09-30 15:13:36 +01:00
[avatarName]= "ChatSystemService.getDmRoom(roomId).name"
2022-02-25 09:54:37 +01:00
[width]="30"
2022-02-24 14:59:47 +01:00
[circular]="true"
2022-02-24 16:21:26 +01:00
fontFamily="Roboto"></ngx-letters-avatar>
2022-02-25 11:08:13 +01:00
está a escrever...
2022-02-24 14:59:47 +01:00
</div>
2022-03-14 17:11:00 +01:00
<div class="width-100 pl-20 pr-20">
<span *ngIf="!lastAudioRecorded">{{durationDisplay}}</span>
2022-06-29 11:42:31 +01:00
<div class=" audioDiv d-flex width-100 mt-10 mb-10" *ngIf="lastAudioRecorded">
<div (click)="start(audioRecorded)" *ngIf="!isPlaying" > <ion-icon slot="icon-only" name="play"></ion-icon> </div>
<div (click)="togglePlayer(isPlaying)" *ngIf="isPlaying"> <ion-icon slot="icon-only" name="pause"></ion-icon> </div>
<ion-range #range [(ngModel)]="audioProgress" max="100" (mouseup)="seek()"></ion-range>
</div>
2022-03-14 17:11:00 +01:00
</div>
2022-02-24 13:35:54 +01:00
<div class="container width-100 d-flex">
<div>
2022-03-14 17:11:00 +01:00
<ion-fab *ngIf="!recording && !lastAudioRecorded && allowTyping" horizontal="start" vertical="bottom" slot="fixed">
<ion-fab-button color="light" size="small">
<ion-icon name="add"></ion-icon>
</ion-fab-button>
<ion-fab-list side="top">
2022-01-19 12:32:29 +01:00
<ion-fab-button title="Nova Reunião" (click)="bookMeeting()" color="light">
<ion-icon name="calendar"></ion-icon>
</ion-fab-button>
<ion-fab-button title="Adicionar Documento" (click)="addFile()" color="light">
<ion-icon name="document"></ion-icon>
</ion-fab-button>
2022-01-24 15:21:37 +01:00
<ion-fab-button title="Anexar Fotografia" (click)="addImage()" color="light">
<ion-icon name="image"></ion-icon>
2021-12-23 07:40:01 +01:00
</ion-fab-button>
2022-02-09 14:34:23 +01:00
<ion-fab-button title="Tirar Fotografia" (click)="takePictureMobile()" color="light">
<ion-icon name="camera"></ion-icon>
2021-12-23 07:40:01 +01:00
</ion-fab-button>
2022-01-24 15:21:37 +01:00
<ion-fab-button title="Documento da Gestão Documental" (click)="addFileWebtrix()" color="light">
2021-10-07 15:30:36 +01:00
<ion-icon src="assets/icon/webtrix.svg"></ion-icon>
</ion-fab-button>
</ion-fab-list>
</ion-fab>
2022-03-18 11:45:38 +01:00
<button *ngIf="recording || lastAudioRecorded || !allowTyping" class="btn-no-color" (click)="deleteRecording()">
2022-03-14 17:11:00 +01:00
<fa-icon class="icon-size-27" icon="trash"></fa-icon>
</button>
</div>
<div class="width-100">
2022-03-14 17:11:00 +01:00
<div *ngIf="!recording && !lastAudioRecorded" class="type-message">
2022-09-30 15:13:36 +01:00
<ion-textarea *ngIf="allowTyping" (keyup.enter)="sendMessage()" clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="ChatSystemService.getDmRoom(roomId).message" (ionChange)="ChatSystemService.getDmRoom(roomId).sendTyping()"></ion-textarea>
2022-03-14 17:11:00 +01:00
</div>
<div *ngIf="recording" class="d-flex align-items-center justify-content-center">
<button (click)="stopRecording()" class="btn-no-color d-flex align-items-center justify-content-center">
2022-03-14 19:07:46 +01:00
<ion-icon class="icon-size-45" name="stop-circle-outline" color="danger"></ion-icon>
2021-04-13 14:14:55 +01:00
</button>
2022-03-14 17:11:00 +01:00
</div>
</div>
2022-03-14 19:07:46 +01:00
<div>
2022-09-30 15:13:36 +01:00
<button #recordbtn *ngIf="!ChatSystemService.getDmRoom(roomId).message && !lastAudioRecorded" (click)="startRecording()" class="btn-no-color">
2022-03-14 17:11:00 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/default/icons-chat-record-audio.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-record-audio.svg"></ion-icon>
2022-04-02 09:40:09 +01:00
<!-- <ion-icon *ngIf="audioPermissionStatus != 'granted' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-record-audio-disable.svg"></ion-icon> -->
2022-03-14 17:11:00 +01:00
</button>
2022-09-30 15:13:36 +01:00
<button *ngIf="ChatSystemService.getDmRoom(roomId).message" class="btn-no-color" (click)="sendMessage()">
2022-03-14 17:11:00 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
2021-04-12 00:22:47 +01:00
</button>
2022-09-30 15:13:36 +01:00
<button *ngIf="!ChatSystemService.getDmRoom(roomId).message && lastAudioRecorded" class="btn-no-color" (click)="sendAudio(lastAudioRecorded)">
2022-03-14 17:11:00 +01:00
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
2021-04-09 08:59:22 +01:00
</button>
</div>
</div>
2022-01-24 15:21:37 +01:00
</ion-footer>