2019-09-23 05:23:24 +00:00
|
|
|
<!-- CHAT -->
|
2019-09-26 05:38:21 +00:00
|
|
|
<div class="container" fxFlex fxLayout="column">
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- CHAT TOOLBAR -->
|
|
|
|
<mat-toolbar class="chat-toolbar">
|
2019-10-22 00:30:23 +00:00
|
|
|
<div fxFlex fxLayout="row" class="chat-header">
|
2019-10-21 04:20:14 +00:00
|
|
|
<div fxLayout="row" fxLayoutAlign="start center" class="profile-img">
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- 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>-->
|
2019-11-11 05:31:26 +00:00
|
|
|
<svg
|
|
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
|
|
width="30"
|
|
|
|
height="30"
|
|
|
|
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>
|
2019-11-11 05:31:26 +00:00
|
|
|
<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
|
2019-11-11 05:31:26 +00:00
|
|
|
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>
|
2019-09-23 05:23:24 +00:00
|
|
|
</button>
|
|
|
|
<!-- / RESPONSIVE CHATS BUTTON-->
|
2019-11-01 04:03:57 +00:00
|
|
|
<button
|
|
|
|
mat-icon-button
|
|
|
|
aria-label="chats button"
|
|
|
|
class="responsive-chats-button"
|
2019-11-01 06:53:54 +00:00
|
|
|
*ngIf="!!roomInfo && roomInfo.isTimeRoom"
|
|
|
|
>
|
2019-11-01 04:03:57 +00:00
|
|
|
<mat-icon>timer</mat-icon>
|
|
|
|
</button>
|
2019-09-23 05:23:24 +00:00
|
|
|
</div>
|
2019-11-01 04:03:57 +00:00
|
|
|
<div class="room-info">
|
|
|
|
<h3 class="room-name">
|
2019-12-17 07:13:38 +00:00
|
|
|
<ng-container *ngIf="!roomInfo || !userInfoList">
|
|
|
|
대화방명을 가져오고 있습니다..
|
|
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="!!roomInfo && !!userInfoList">
|
|
|
|
<ng-container [ngSwitch]="roomInfo.roomType">
|
|
|
|
<ng-container *ngSwitchCase="RoomType.Mytalk">
|
|
|
|
MyTalk
|
|
|
|
</ng-container>
|
2019-12-26 01:20:36 +00:00
|
|
|
<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]="
|
|
|
|
!!roomInfo.roomName && '' !== roomInfo.roomName.trim()
|
|
|
|
"
|
|
|
|
[ngIfElse]="roomNameNotExist"
|
|
|
|
>
|
|
|
|
{{ roomInfo.roomName }}
|
|
|
|
</ng-template>
|
|
|
|
<ng-template #roomNameNotExist>
|
|
|
|
{{ _roomUserInfos | ucapTranslate: 'name':',' }}
|
|
|
|
</ng-template>
|
|
|
|
</ng-container>
|
|
|
|
</ng-container>
|
|
|
|
</ng-container>
|
2019-11-01 04:03:57 +00:00
|
|
|
</h3>
|
|
|
|
<!-- Timer Room Info -->
|
2019-11-01 06:53:54 +00:00
|
|
|
<div
|
|
|
|
*ngIf="roomInfo && roomInfo.isTimeRoom"
|
|
|
|
class="room-type text-accent-color "
|
|
|
|
>
|
2019-11-11 02:42:08 +00:00
|
|
|
<span class="bg-accent-dark"
|
2019-11-01 06:53:54 +00:00
|
|
|
>{{ getConvertTimer(roomInfo.timeRoomInterval) }} </span
|
|
|
|
>비밀 대화방입니다.
|
2019-11-01 04:03:57 +00:00
|
|
|
</div>
|
|
|
|
<!-- 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
|
|
|
|
*ngIf="!!roomInfo"
|
|
|
|
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"
|
|
|
|
>
|
|
|
|
<mat-icon class="amber-fg" *ngIf="roomInfo.receiveAlarm"
|
|
|
|
>notifications_active</mat-icon
|
|
|
|
>
|
|
|
|
<mat-icon class="secondary-text" *ngIf="!roomInfo.receiveAlarm"
|
|
|
|
>notifications_off</mat-icon
|
|
|
|
>
|
2019-10-11 06:55:27 +00:00
|
|
|
</button>
|
|
|
|
|
2019-10-16 07:33:19 +00:00
|
|
|
<button
|
|
|
|
mat-icon-button
|
2019-11-25 05:12:49 +00:00
|
|
|
#chatMenuTrigger="matMenuTrigger"
|
2019-10-16 07:33:19 +00:00
|
|
|
[matMenuTriggerFor]="contactMenu"
|
|
|
|
aria-label="more"
|
2019-11-25 05:12:49 +00:00
|
|
|
(ucapClickOutside)="chatMenuTrigger.closeMenu()"
|
2019-10-16 07:33:19 +00:00
|
|
|
>
|
2019-09-23 05:23:24 +00:00
|
|
|
<mat-icon>more_vert</mat-icon>
|
|
|
|
</button>
|
|
|
|
|
2019-10-25 04:04:21 +00:00
|
|
|
<mat-menu #contactMenu="matMenu" [hasBackdrop]="false">
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('OPEN_ALBUM_LIST')"
|
|
|
|
(click)="onClickContextMenu('OPEN_ALBUM_LIST')"
|
|
|
|
>
|
2019-11-11 05:31:26 +00:00
|
|
|
앨범함
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('OPEN_FILE_LIST')"
|
|
|
|
(click)="onClickContextMenu('OPEN_FILE_LIST')"
|
|
|
|
>
|
2019-11-11 05:31:26 +00:00
|
|
|
파일함
|
|
|
|
</button>
|
2019-12-23 06:23:27 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('CHAT_SEARCH')"
|
|
|
|
(click)="onClickContextMenu('CHAT_SEARCH')"
|
|
|
|
>
|
|
|
|
대화내용 검색
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('OPEN_ROOM_USER')"
|
|
|
|
(click)="onClickContextMenu('OPEN_ROOM_USER')"
|
|
|
|
>
|
2019-11-12 09:10:38 +00:00
|
|
|
대화참여자목록
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('ADD_MEMBER')"
|
|
|
|
(click)="onClickContextMenu('ADD_MEMBER')"
|
|
|
|
>
|
2019-11-01 06:53:54 +00:00
|
|
|
대화상대추가
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('ADD_GROUP')"
|
|
|
|
(click)="onClickContextMenu('ADD_GROUP')"
|
|
|
|
>
|
2019-11-11 01:53:24 +00:00
|
|
|
그룹멤버로추가
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('EDIT_ROOM')"
|
|
|
|
(click)="onClickContextMenu('EDIT_ROOM')"
|
|
|
|
>
|
2019-11-06 04:58:56 +00:00
|
|
|
대화방설정
|
|
|
|
</button>
|
2019-11-21 05:02:11 +00:00
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="getShowContextMenu('CLOSE_ROOM')"
|
|
|
|
(click)="onClickContextMenu('CLOSE_ROOM')"
|
|
|
|
>
|
2019-10-24 07:53:21 +00:00
|
|
|
방닫기
|
2019-09-23 05:23:24 +00:00
|
|
|
</button>
|
|
|
|
</mat-menu>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</mat-toolbar>
|
|
|
|
<!-- / CHAT TOOLBAR -->
|
2019-11-26 05:06:50 +00:00
|
|
|
<div style="position: relative;">
|
|
|
|
<div
|
|
|
|
*ngIf="eventListProcessing$ | async"
|
|
|
|
style="position: absolute; width: 100%;"
|
|
|
|
>
|
|
|
|
<mat-progress-bar mode="indeterminate"></mat-progress-bar>
|
|
|
|
</div>
|
2019-12-23 06:23:27 +00:00
|
|
|
<div *ngIf="isShowSearchArea" class="char-search">
|
|
|
|
<ucap-chat-search
|
|
|
|
[totalCount]="searchTotalCount"
|
|
|
|
[curIndex]="searchCurrentIndex"
|
|
|
|
(searchText)="onSearchChat($event)"
|
|
|
|
(prevSearch)="onPrevSearch()"
|
|
|
|
(nextSearch)="onNextSearch()"
|
|
|
|
(searchAndPrev)="onSearchAndPrev()"
|
|
|
|
(closeSearchArea)="onCloseSearchArea()"
|
|
|
|
></ucap-chat-search>
|
|
|
|
</div>
|
2019-11-26 05:06:50 +00:00
|
|
|
</div>
|
2019-09-23 05:23:24 +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()"
|
|
|
|
>
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- CHAT MESSAGES -->
|
2019-10-31 09:12:38 +00:00
|
|
|
<perfect-scrollbar
|
|
|
|
fxFlex="1 1 auto"
|
|
|
|
#psChatContent
|
2019-11-07 04:14:44 +00:00
|
|
|
(psScrollUp)="onScrollup($event)"
|
|
|
|
(psYReachStart)="onScrollReachStart($event)"
|
|
|
|
(psYReachEnd)="onScrollReachEnd($event)"
|
2019-10-31 09:12:38 +00:00
|
|
|
>
|
2019-10-29 02:39:34 +00:00
|
|
|
<ucap-chat-messages
|
2019-12-19 05:23:11 +00:00
|
|
|
[eventList]="eventList"
|
2019-12-23 06:23:27 +00:00
|
|
|
[searchedList]="searchedList"
|
2019-12-19 05:23:11 +00:00
|
|
|
[roomInfo]="roomInfo"
|
2019-12-04 05:36:15 +00:00
|
|
|
[eventInfoStatus]="eventInfoStatus"
|
2019-10-31 09:12:38 +00:00
|
|
|
[eventRemain]="eventRemain$ | async"
|
2019-10-29 02:39:34 +00:00
|
|
|
[userInfos]="userInfoList"
|
|
|
|
[loginRes]="loginRes"
|
|
|
|
[sessionVerInfo]="sessionVerInfo"
|
2019-11-22 00:17:47 +00:00
|
|
|
[isShowUnreadCount]="getShowUnreadCount()"
|
2019-12-19 05:23:11 +00:00
|
|
|
[clearReadHere]="clearReadHere"
|
2019-12-19 07:07:33 +00:00
|
|
|
[minShowReadHere]="
|
|
|
|
environment.productConfig.CommonSetting.readHereShowMinimumEventCount
|
|
|
|
"
|
2019-12-31 05:36:32 +00:00
|
|
|
[translationSimpleview]="translationSimpleview"
|
2019-10-31 09:12:38 +00:00
|
|
|
(moreEvent)="onMoreEvent($event)"
|
2019-10-29 02:39:34 +00:00
|
|
|
(massDetail)="onMassDetail($event)"
|
|
|
|
(save)="onSave($event)"
|
2019-11-07 06:46:02 +00:00
|
|
|
(fileViewer)="onFileViewer($event)"
|
2019-10-29 02:39:34 +00:00
|
|
|
(contextMenu)="onContextMenuMessage($event)"
|
2019-11-08 04:35:39 +00:00
|
|
|
(openProfile)="onClickOpenProfile($event)"
|
2019-10-29 02:39:34 +00:00
|
|
|
>
|
|
|
|
</ucap-chat-messages>
|
|
|
|
</perfect-scrollbar>
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- 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 -->
|
2019-09-23 05:23:24 +00:00
|
|
|
|
2019-12-17 00:18:48 +00:00
|
|
|
<!-- 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>
|
2019-12-17 00:18:48 +00:00
|
|
|
<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 -->
|
2019-11-06 08:32:27 +00:00
|
|
|
<div fxFlex="0 0 auto" fxLayout="column" *ngIf="getEnableSend()">
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- REPLY FORM -->
|
2019-10-29 09:19:41 +00:00
|
|
|
<ucap-chat-form
|
2019-11-01 06:06:37 +00:00
|
|
|
#chatForm
|
2019-11-05 04:46:17 +00:00
|
|
|
[fileUploadQueue]="fileUploadQueue"
|
2019-10-29 09:19:41 +00:00
|
|
|
(send)="onSendMessage($event)"
|
|
|
|
(sendFiles)="onFileSelected($event)"
|
2019-11-25 05:12:49 +00:00
|
|
|
(clearView)="clearView()"
|
2019-11-20 09:04:24 +00:00
|
|
|
(toggleStickerSelector)="onShowToggleStickerSelector($event)"
|
2019-12-31 05:36:32 +00:00
|
|
|
(toggleTranslation)="onShowToggleTranslation($event)"
|
2019-10-29 09:19:41 +00:00
|
|
|
></ucap-chat-form>
|
2019-09-23 05:23:24 +00:00
|
|
|
<!-- / 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>
|
2019-10-25 06:56:03 +00:00
|
|
|
<mat-menu
|
|
|
|
#messageContextMenu="matMenu"
|
|
|
|
[hasBackdrop]="false"
|
2019-11-05 04:46:17 +00:00
|
|
|
(ucapClickOutside)="messageContextMenuTrigger.closeMenu()"
|
2019-10-25 06:56:03 +00:00
|
|
|
>
|
2019-12-23 06:23:27 +00:00
|
|
|
<ng-template matMenuContent let-message="message">
|
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)"
|
|
|
|
>
|
|
|
|
대화 복사
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
mat-menu-item
|
2019-12-04 05:36:15 +00:00
|
|
|
*ngIf="isForwardableMessage(message, eventInfoStatus.validFileBaseSeq)"
|
2019-10-16 07:33:19 +00:00
|
|
|
(click)="onClickMessageContextMenu('REPLAY', message)"
|
|
|
|
>
|
|
|
|
대화 전달
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
mat-menu-item
|
2019-12-04 05:36:15 +00:00
|
|
|
*ngIf="isForwardableMessage(message, eventInfoStatus.validFileBaseSeq)"
|
2019-10-16 07:33:19 +00:00
|
|
|
(click)="onClickMessageContextMenu('REPLAY_TO_ME', message)"
|
|
|
|
>
|
|
|
|
대화 나에게 전달
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
(click)="onClickMessageContextMenu('DELETE', message)"
|
|
|
|
>
|
|
|
|
대화 삭제
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
mat-menu-item
|
|
|
|
*ngIf="isRecallableMessage(message, loginRes.userSeq)"
|
|
|
|
(click)="onClickMessageContextMenu('RECALL', message)"
|
|
|
|
>
|
|
|
|
대화 회수
|
|
|
|
</button>
|
|
|
|
</ng-container>
|
|
|
|
</ng-template>
|
|
|
|
</mat-menu>
|