next-ucap-messenger/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.html

375 lines
13 KiB
HTML
Raw Normal View History

<!-- CHAT -->
2019-09-26 05:38:21 +00:00
<div class="container" fxFlex fxLayout="column">
<!-- CHAT TOOLBAR -->
<mat-toolbar class="chat-toolbar">
<div fxFlex fxLayout="row" class="chat-header">
2019-10-21 04:20:14 +00:00
<div fxLayout="row" fxLayoutAlign="start center" class="profile-img">
<!-- RESPONSIVE CHATS BUTTON-->
2019-10-16 07:33:19 +00:00
<button
mat-icon-button
aria-label="chats button"
class="responsive-chats-button"
>
2019-11-07 23:58:22 +00:00
<!--<mat-icon>chat</mat-icon>-->
<svg
xmlns="http://www.w3.org/2000/svg"
2020-01-20 09:54:24 +00:00
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
stroke-width="1.5"
stroke-linecap="butt"
stroke-linejoin="round"
>
2019-11-07 23:58:22 +00:00
<g>
<path
d="M3,21.8c-0.2,0-0.4-0.1-0.5-0.2c-0.2-0.2-0.3-0.5-0.2-0.8l1.8-5.4c-0.6-1.2-0.8-2.5-0.8-3.9c0-3.5,2-6.7,5.1-8.3
2019-11-07 23:58:22 +00:00
c1.3-0.6,2.7-0.9,4.1-1H13c4.7,0.3,8.5,4,8.7,8.7l0,0.5c0,1.4-0.3,2.9-1,4.1c-1.6,3.2-4.7,5.1-8.3,5.1c0,0,0,0,0,0
c-1.3,0-2.6-0.3-3.8-0.8l-5.4,1.8C3.2,21.7,3.1,21.8,3,21.8z M12.5,3.8C11.3,3.8,10.1,4,9,4.6c-2.6,1.3-4.3,4-4.3,6.9
c0,1.2,0.3,2.4,0.8,3.5c0.1,0.2,0.1,0.4,0,0.6l-1.4,4.3l4.3-1.4c0.2-0.1,0.4,0,0.6,0c1.1,0.5,2.3,0.8,3.5,0.8c3,0,5.6-1.6,6.9-4.3
c0.5-1.1,0.8-2.3,0.8-3.5c0,0,0,0,0,0V11C20,7.1,16.9,4,13,3.7L12.5,3.8C12.5,3.8,12.5,3.8,12.5,3.8z"
/>
2019-11-07 23:58:22 +00:00
</g>
<g>
<circle cx="9" cy="12" r="1" />
<circle cx="12.5" cy="12" r="1" />
<circle cx="16" cy="12" r="1" />
</g>
</svg>
</button>
<!-- / RESPONSIVE CHATS BUTTON-->
2019-11-01 04:03:57 +00:00
<button
mat-icon-button
aria-label="chats button"
2020-01-10 06:22:45 +00:00
class="responsive-chats-button chat-timer"
2020-01-17 01:41:22 +00:00
*ngIf="!!roomInfoSubject.value && roomInfoSubject.value.isTimeRoom"
2019-11-01 06:53:54 +00:00
>
2019-11-01 04:03:57 +00:00
<mat-icon>timer</mat-icon>
</button>
</div>
2019-11-01 04:03:57 +00:00
<div class="room-info">
2020-01-20 09:54:24 +00:00
<div *ngIf="roomInfoSubject.value && roomInfoSubject.value.isTimeRoom" class="room-type text-accent-color ">
<span class="bg-accent-darkest">{{
getConvertTimer(roomInfoSubject.value.timeRoomInterval)
}} </span>
</div>
2019-11-01 04:03:57 +00:00
<h3 class="room-name">
2020-01-17 01:41:22 +00:00
<ng-container
*ngIf="!roomInfoSubject.value || !userInfoListSubject.value"
>
2020-01-08 09:23:49 +00:00
{{ 'chat.getRoomNameInProgress' | translate }}
2019-12-17 07:13:38 +00:00
</ng-container>
2020-01-17 01:41:22 +00:00
<ng-container
*ngIf="!!roomInfoSubject.value && !!userInfoListSubject.value"
>
<ng-container [ngSwitch]="roomInfoSubject.value.roomType">
2019-12-17 07:13:38 +00:00
<ng-container *ngSwitchCase="RoomType.Mytalk">
MyTalk
</ng-container>
<ng-container
*ngSwitchCase="
RoomType.Bot ||
RoomType.Allim ||
RoomType.Allim_Elephant ||
RoomType.Allim_TMS
"
>
2019-12-17 07:13:38 +00:00
{{ _roomUserInfos | ucapTranslate: 'name':',' }}
</ng-container>
<ng-container *ngSwitchDefault>
<ng-template
[ngIf]="
2020-01-17 01:41:22 +00:00
!!roomInfoSubject.value.roomName &&
'' !== roomInfoSubject.value.roomName.trim()
2019-12-17 07:13:38 +00:00
"
[ngIfElse]="roomNameNotExist"
>
2020-01-17 01:41:22 +00:00
{{ roomInfoSubject.value.roomName }}
2019-12-17 07:13:38 +00:00
</ng-template>
<ng-template #roomNameNotExist>
{{ getRoomNameByRoomUser(_roomUserInfos) }}
2019-12-17 07:13:38 +00:00
</ng-template>
</ng-container>
</ng-container>
</ng-container>
2019-11-01 04:03:57 +00:00
</h3>
<!-- Timer Room Info -->
2020-01-20 09:54:24 +00:00
<!--<div
2020-01-17 01:41:22 +00:00
*ngIf="roomInfoSubject.value && roomInfoSubject.value.isTimeRoom"
2019-11-01 06:53:54 +00:00
class="room-type text-accent-color "
>
2020-01-08 11:42:14 +00:00
<span class="bg-accent-darkest"
2020-01-17 01:41:22 +00:00
>{{
getConvertTimer(roomInfoSubject.value.timeRoomInterval)
}} </span
2020-01-08 09:23:49 +00:00
>{{ 'chat.isRoomTypeSecret' | translate }}
2020-01-20 09:54:24 +00:00
</div>-->
2019-11-01 04:03:57 +00:00
<!-- Timer Room Info -->
2019-10-21 04:20:14 +00:00
</div>
<div class="room-option">
2019-10-16 07:33:19 +00:00
<button
2020-01-17 01:41:22 +00:00
*ngIf="!!roomInfoSubject.value"
2019-10-16 07:33:19 +00:00
mat-icon-button
2019-11-12 09:54:21 +00:00
(click)="onClickReceiveAlarm()"
2019-10-16 07:33:19 +00:00
aria-label="Toggle Receive Alarm"
>
2020-01-30 10:41:37 +00:00
<!--<mat-icon
2019-12-31 07:10:24 +00:00
class="amber-fg"
2020-01-17 01:41:22 +00:00
*ngIf="roomInfoSubject.value.receiveAlarm"
2020-01-08 09:23:49 +00:00
matTooltip="{{ 'chat.notificationIsOn' | translate }}"
2020-01-30 10:41:37 +00:00
>notifications_active</mat-icon>-->
<mat-icon class="icon-button" *ngIf="roomInfoSubject.value.receiveAlarm"
matTooltip="{{ 'chat.notificationIsOn' | translate }}"><i class="mid mdi-bell-ring-outline"></i></mat-icon>
2019-12-31 07:10:24 +00:00
<mat-icon
2020-01-30 10:41:37 +00:00
class="icon-button"
2020-01-17 01:41:22 +00:00
*ngIf="!roomInfoSubject.value.receiveAlarm"
2020-01-08 09:23:49 +00:00
matTooltip="{{ 'chat.notificationIsOff' | translate }}"
2020-01-30 10:41:37 +00:00
><i class="mid mdi-bell-off-outline"></i></mat-icon>
2019-10-11 06:55:27 +00:00
</button>
2019-10-16 07:33:19 +00:00
<button
mat-icon-button
#chatMenuTrigger="matMenuTrigger"
2019-10-16 07:33:19 +00:00
[matMenuTriggerFor]="contactMenu"
aria-label="more"
>
<mat-icon>more_vert</mat-icon>
</button>
2020-01-10 04:12:55 +00:00
<mat-menu #contactMenu="matMenu">
<button
mat-menu-item
*ngIf="getShowContextMenu('OPEN_ALBUM_LIST')"
(click)="onClickContextMenu('OPEN_ALBUM_LIST')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.albumBox.label' | translate }}
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('OPEN_FILE_LIST')"
(click)="onClickContextMenu('OPEN_FILE_LIST')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.fileBox.label' | translate }}
</button>
2019-12-23 06:23:27 +00:00
<button
mat-menu-item
*ngIf="getShowContextMenu('CHAT_SEARCH')"
(click)="onClickContextMenu('CHAT_SEARCH')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.searchEventByText' | translate }}
2019-12-23 06:23:27 +00:00
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('OPEN_ROOM_USER')"
(click)="onClickContextMenu('OPEN_ROOM_USER')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.listOfRoomMember' | translate }}
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('ADD_MEMBER')"
(click)="onClickContextMenu('ADD_MEMBER')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.addMemberToRoom' | translate }}
2019-11-01 06:53:54 +00:00
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('ADD_GROUP')"
(click)="onClickContextMenu('ADD_GROUP')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.addMemberToGroup' | translate }}
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('EDIT_ROOM')"
(click)="onClickContextMenu('EDIT_ROOM')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.settingsOfRoom' | translate }}
</button>
<button
mat-menu-item
*ngIf="getShowContextMenu('CLOSE_ROOM')"
(click)="onClickContextMenu('CLOSE_ROOM')"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.closeRoom' | translate }}
</button>
</mat-menu>
</div>
</div>
2020-01-07 10:30:58 +00:00
<div class="chat-search-frame">
2020-01-07 23:19:57 +00:00
<div
*ngIf="(eventListProcessing$ | async) || isTranslationProcess"
style="position: absolute; width: 100%;"
>
2020-01-07 10:30:58 +00:00
<mat-progress-bar mode="indeterminate"></mat-progress-bar>
</div>
<div *ngIf="isShowSearchArea" class="chat-search bg-accent-color">
2020-01-07 23:19:57 +00:00
<ucap-chat-search
[totalCount]="searchTotalCount"
[curIndex]="searchCurrentIndex"
(searchText)="onSearchChat($event)"
(prevSearch)="onPrevSearch()"
(nextSearch)="onNextSearch()"
(searchAndPrev)="onSearchAndPrev()"
(closeSearchArea)="onCloseSearchArea()"
></ucap-chat-search>
2020-01-07 10:30:58 +00:00
</div>
</div>
</mat-toolbar>
<!-- / CHAT TOOLBAR -->
2020-01-07 10:30:58 +00:00
<!-- CHAT CONTENT -->
2019-10-21 04:36:58 +00:00
<div
fxFlex="1 1 auto"
class="chat-content"
2019-11-05 04:46:17 +00:00
ucapFileUploadFor
[fileUploadQueue]="fileUploadQueue"
2019-10-21 04:36:58 +00:00
(fileSelected)="onFileSelected($event)"
2019-10-31 08:09:38 +00:00
(fileDragEnter)="onFileDragEnter($event)"
2019-10-21 04:36:58 +00:00
(fileDragOver)="onFileDragOver()"
(fileDragLeave)="onFileDragLeave()"
>
<!-- CHAT MESSAGES -->
2020-01-17 01:41:22 +00:00
<ucap-chat-messages
#chatMessages
[eventList$]="eventListSubject.asObservable()"
[newEventList$]="eventListNewSubject.asObservable()"
[searchedList$]="searchedListSubject.asObservable()"
[roomInfo$]="roomInfoSubject.asObservable()"
[eventInfoStatus$]="eventInfoStatusSubject.asObservable()"
[eventRemained$]="eventRemainedSubject.asObservable()"
[userInfos$]="userInfoListSubject.asObservable()"
[loginRes$]="loginResSubject.asObservable()"
[sessionVerInfo]="sessionVerInfo"
[isShowUnreadCount]="getShowUnreadCount()"
[clearReadHere]="clearReadHere"
[minShowReadHere]="
environment.productConfig.CommonSetting.readHereShowMinimumEventCount
"
[translationSimpleview]="translationSimpleview"
[searchingMode]="moreSearchProcessing"
(moreEvent)="onMoreEvent($event)"
(massDetail)="onMassDetail($event)"
(massTranslationDetail)="onMassTranslationDetail($event)"
(save)="onSave($event)"
(fileViewer)="onFileViewer($event)"
(contextMenu)="onContextMenuMessage($event)"
(openProfile)="onClickOpenProfile($event)"
(scrollUp)="onScrollupMessages($event)"
(yReachStart)="onYReachStartMessages($event)"
(yReachEnd)="onYReachEndMessages($event)"
(existNewMessage)="onExistNewMessage($event)"
>
2020-01-17 01:41:22 +00:00
</ucap-chat-messages>
<!-- CHAT MESSAGES -->
2019-11-05 04:46:17 +00:00
<div class="file-drop-zone-container">
<ucap-file-upload-queue
#fileUploadQueue
2019-11-05 05:55:17 +00:00
[dropZoneIncludeParent]="true"
2019-11-05 04:46:17 +00:00
class="file-drop-zone"
></ucap-file-upload-queue>
2019-10-21 04:36:58 +00:00
</div>
2019-10-31 08:09:38 +00:00
</div>
<!-- / CHAT CONTENT -->
<!-- sticker-selector -->
<div class="sticker-selector-container">
2019-12-17 07:13:38 +00:00
<ucap-sticker-selector
*ngIf="isShowStickerSelector"
#stickerSelector
[stickerHistory]="getStickerHistory()"
(selectedSticker)="onSelectedSticker($event)"
2019-12-23 06:23:15 +00:00
(closeSticker)="onShowToggleStickerSelector()"
2019-12-17 07:13:38 +00:00
class="sticker-selector-zone"
></ucap-sticker-selector>
<div></div>
</div>
<!-- / sticker-selector -->
2019-12-31 05:36:32 +00:00
<!-- Translation -->
<div class="translation-container">
<ucap-translation-section
*ngIf="isShowTranslation"
[destLocale]="destLocale"
[simpleView]="translationSimpleview"
[preView]="translationPreview"
[translationPreviewInfo]="translationPreviewInfo"
(changeTranslationSimpleview)="onChangeTranslationSimpleView($event)"
(changeTranslationPreview)="onChangeTranslationPreView($event)"
(changeDestLocale)="onChangeDestLocale($event)"
(cancelTranslation)="onCancelTranslation($event)"
(sendTranslationMessage)="onSendTranslationMessage($event)"
>
</ucap-translation-section>
</div>
<!-- / Translation -->
2019-10-31 08:09:38 +00:00
<!-- CHAT FOOTER -->
<div fxFlex="0 0 auto" fxLayout="column" *ngIf="getEnableSend()">
<!-- REPLY FORM -->
<ucap-chat-form
2019-11-01 06:06:37 +00:00
#chatForm
2019-11-05 04:46:17 +00:00
[fileUploadQueue]="fileUploadQueue"
(send)="onSendMessage($event)"
(sendFiles)="onFileSelected($event)"
(clearView)="clearView()"
2019-11-20 09:04:24 +00:00
(toggleStickerSelector)="onShowToggleStickerSelector($event)"
2019-12-31 05:36:32 +00:00
(toggleTranslation)="onShowToggleTranslation($event)"
></ucap-chat-form>
<!-- / REPLY FORM -->
</div>
<!-- / CHAT FOOTER-->
</div>
<!-- / CHAT -->
2019-10-16 07:33:19 +00:00
<div
style="visibility: hidden; position: fixed"
[style.left]="messageContextMenuPosition.x"
[style.top]="messageContextMenuPosition.y"
#messageContextMenuTrigger="matMenuTrigger"
[matMenuTriggerFor]="messageContextMenu"
></div>
2020-01-17 01:41:22 +00:00
<mat-menu #messageContextMenu="matMenu">
<ng-template matMenuContent let-message="message" let-clicktype="clicktype">
2019-10-16 07:33:19 +00:00
<ng-container *ngIf="!isRecalledMessage(message.type)">
<button
mat-menu-item
*ngIf="isCopyableMessage(message.type)"
(click)="onClickMessageContextMenu('COPY', message, clicktype)"
2019-10-16 07:33:19 +00:00
>
2020-01-07 02:36:25 +00:00
{{ 'chat.copyChatText' | translate }}
2019-10-16 07:33:19 +00:00
</button>
<button
mat-menu-item
2020-01-17 01:41:22 +00:00
*ngIf="isForwardableMessage(message, eventInfoStatusSubject.value)"
2019-10-16 07:33:19 +00:00
(click)="onClickMessageContextMenu('REPLAY', message)"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.forwardEventTo' | translate }}
2019-10-16 07:33:19 +00:00
</button>
<button
mat-menu-item
2020-01-17 01:41:22 +00:00
*ngIf="isForwardableMessage(message, eventInfoStatusSubject.value)"
2019-10-16 07:33:19 +00:00
(click)="onClickMessageContextMenu('REPLAY_TO_ME', message)"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.forwardEventToMe' | translate }}
2019-10-16 07:33:19 +00:00
</button>
<button
mat-menu-item
(click)="onClickMessageContextMenu('DELETE', message)"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.removeEvent' | translate }}
2019-10-16 07:33:19 +00:00
</button>
<button
mat-menu-item
2020-01-17 01:41:22 +00:00
*ngIf="isRecallableMessage(message, loginResSubject.value.userSeq)"
2019-10-16 07:33:19 +00:00
(click)="onClickMessageContextMenu('RECALL', message)"
>
2020-01-07 02:36:25 +00:00
{{ 'chat.recallEvent' | translate }}
2019-10-16 07:33:19 +00:00
</button>
</ng-container>
</ng-template>
</mat-menu>