음성파일 처리 및 expired 처리.
This commit is contained in:
		
							parent
							
								
									0bd29af831
								
							
						
					
					
						commit
						61fd8c00d7
					
				| @ -73,6 +73,7 @@ | |||||||
|     <perfect-scrollbar fxFlex="1 1 auto" #psChatContent> |     <perfect-scrollbar fxFlex="1 1 auto" #psChatContent> | ||||||
|       <ucap-chat-messages |       <ucap-chat-messages | ||||||
|         [messages]="eventList$ | async" |         [messages]="eventList$ | async" | ||||||
|  |         [eventInfoStatus]="eventInfoStatus$ | async" | ||||||
|         [userInfos]="userInfoList" |         [userInfos]="userInfoList" | ||||||
|         [loginRes]="loginRes" |         [loginRes]="loginRes" | ||||||
|         [sessionVerInfo]="sessionVerInfo" |         [sessionVerInfo]="sessionVerInfo" | ||||||
|  | |||||||
| @ -23,7 +23,8 @@ import { | |||||||
|   EventType, |   EventType, | ||||||
|   isRecalled, |   isRecalled, | ||||||
|   isCopyable, |   isCopyable, | ||||||
|   isRecallable |   isRecallable, | ||||||
|  |   InfoResponse | ||||||
| } from '@ucap-webmessenger/protocol-event'; | } from '@ucap-webmessenger/protocol-event'; | ||||||
| 
 | 
 | ||||||
| import * as AppStore from '@app/store'; | import * as AppStore from '@app/store'; | ||||||
| @ -84,6 +85,7 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewChecked { | |||||||
|   userInfoList: UserInfo[]; |   userInfoList: UserInfo[]; | ||||||
|   userInfoListSubscription: Subscription; |   userInfoListSubscription: Subscription; | ||||||
|   eventListProcessing$: Observable<boolean>; |   eventListProcessing$: Observable<boolean>; | ||||||
|  |   eventInfoStatus$: Observable<InfoResponse>; | ||||||
|   sessionVerInfo: VersionInfo2Response; |   sessionVerInfo: VersionInfo2Response; | ||||||
| 
 | 
 | ||||||
|   isRecalledMessage = isRecalled; |   isRecalledMessage = isRecalled; | ||||||
| @ -147,6 +149,10 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewChecked { | |||||||
|       select(AppStore.MessengerSelector.EventSelector.selectAllInfoList) |       select(AppStore.MessengerSelector.EventSelector.selectAllInfoList) | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  |     this.eventInfoStatus$ = this.store.pipe( | ||||||
|  |       select(AppStore.MessengerSelector.EventSelector.infoStatus) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     this.psChatContent.directiveRef.scrollToBottom(0, 0); |     this.psChatContent.directiveRef.scrollToBottom(0, 0); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,20 +1,23 @@ | |||||||
| <div class="bubble-main"> | <div class="bubble-main"> | ||||||
|   <!--파일명에 따라 doc exe hwp ppt xls zip 으로 추가되고 나머지 파일 명은 file로 기간이 만료된 파일은 그뒤에 disable도 추가--> |   <!--파일명에 따라 doc exe hwp ppt xls zip 으로 추가되고 나머지 파일 명은 file로 기간이 만료된 파일은 그뒤에 disable도 추가--> | ||||||
|   <div class="file-img ppt"></div> |   <div class="file-img" [ngClass]="fileInfo.FileExt"></div> | ||||||
|   <ul class="file-info"> |   <ul class="file-info"> | ||||||
|     <li class="file-name"> |     <li class="file-name"> | ||||||
|       {{ fileInfo.FileName }} |       {{ fileInfo.FileName }} | ||||||
|     </li> |     </li> | ||||||
|     <li class="file-size"> |     <li class="file-size"> | ||||||
|       {{ fileInfo.AttSize }} |       {{ fileInfo.AttSize | ucapBytes }} | ||||||
|     </li> |     </li> | ||||||
|     <li class="file-ext"> |     <li class="file-ext"> | ||||||
|       {{ fileInfo.FileExt }} |       {{ fileInfo.FileExt }} | ||||||
|     </li> |     </li> | ||||||
|   </ul> |   </ul> | ||||||
| </div> | </div> | ||||||
| <div *ngIf="fileInfo && fileInfo.AttSEQ" class="btn-box"> | <div class="btn-box"> | ||||||
|   <ul> |   <ul *ngIf="expired"> | ||||||
|  |     <li>기간이 만료된 파일입니다.</li> | ||||||
|  |   </ul> | ||||||
|  |   <ul *ngIf="!expired && fileInfo && fileInfo.AttSEQ"> | ||||||
|     <li> |     <li> | ||||||
|       <button mat-button (click)="onClickSave()">Save</button> |       <button mat-button (click)="onClickSave()">Save</button> | ||||||
|     </li> |     </li> | ||||||
|  | |||||||
| @ -33,13 +33,15 @@ | |||||||
|         background-image: url(/assets/images/file/icon_talk_hwp_d.png); |         background-image: url(/assets/images/file/icon_talk_hwp_d.png); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     &.ppt { |     &.ppt, | ||||||
|  |     &.pptx { | ||||||
|       background-image: url(/assets/images/file/icon_talk_ppt.png); |       background-image: url(/assets/images/file/icon_talk_ppt.png); | ||||||
|       &.disable { |       &.disable { | ||||||
|         background-image: url(/assets/images/file/icon_talk_ppt_d.png); |         background-image: url(/assets/images/file/icon_talk_ppt_d.png); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     &.xls { |     &.xls, | ||||||
|  |     &.xlsx { | ||||||
|       background-image: url(/assets/images/file/icon_talk_xls.png); |       background-image: url(/assets/images/file/icon_talk_xls.png); | ||||||
|       &.disable { |       &.disable { | ||||||
|         background-image: url(/assets/images/file/icon_talk_xls_d.png); |         background-image: url(/assets/images/file/icon_talk_xls_d.png); | ||||||
|  | |||||||
| @ -10,6 +10,9 @@ import { NGXLogger } from 'ngx-logger'; | |||||||
| export class AttachFileComponent implements OnInit { | export class AttachFileComponent implements OnInit { | ||||||
|   @Input() |   @Input() | ||||||
|   fileInfo: FileInfo; |   fileInfo: FileInfo; | ||||||
|  |   @Input() | ||||||
|  |   expired = false; | ||||||
|  | 
 | ||||||
|   @Output() |   @Output() | ||||||
|   save = new EventEmitter<string>(); |   save = new EventEmitter<string>(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,9 +1,35 @@ | |||||||
| <ng-container *ngIf="fileInfo && fileInfo.FileType" [ngSwitch]="fileInfo.FileType"> | <ng-container | ||||||
|   <ucap-chat-message-box-attach-file *ngSwitchCase="FileType.File" [fileInfo]="fileInfo" (save)="onSave($event)"> |   *ngIf="fileInfo && fileInfo.FileType" | ||||||
|  |   [ngSwitch]="fileInfo.FileType" | ||||||
|  | > | ||||||
|  |   <ucap-chat-message-box-attach-file | ||||||
|  |     *ngSwitchCase="FileType.File" | ||||||
|  |     [fileInfo]="fileInfo" | ||||||
|  |     [expired]="getExpiredFile()" | ||||||
|  |     (save)="onSave($event)" | ||||||
|  |   > | ||||||
|   </ucap-chat-message-box-attach-file> |   </ucap-chat-message-box-attach-file> | ||||||
|   <ucap-chat-message-box-image *ngSwitchCase="FileType.Image" [fileInfo]="fileInfo" |   <ucap-chat-message-box-attach-file | ||||||
|     (click)="onClickImageViewer(fileInfo)"></ucap-chat-message-box-image> |     *ngSwitchCase="FileType.Sound" | ||||||
|   <ucap-chat-message-box-video *ngSwitchCase="FileType.Video" [fileInfo]="fileInfo" |     [fileInfo]="fileInfo" | ||||||
|     (click)="onClickImageViewer(fileInfo)"></ucap-chat-message-box-video> |     [expired]="getExpiredFile()" | ||||||
|   <ucap-chat-message-box-text *ngSwitchDefault [message]="message"></ucap-chat-message-box-text> |     (save)="onSave($event)" | ||||||
|  |   > | ||||||
|  |   </ucap-chat-message-box-attach-file> | ||||||
|  |   <ucap-chat-message-box-image | ||||||
|  |     *ngSwitchCase="FileType.Image" | ||||||
|  |     [fileInfo]="fileInfo" | ||||||
|  |     [expired]="getExpiredFile()" | ||||||
|  |     (click)="onClickImageViewer(fileInfo)" | ||||||
|  |   ></ucap-chat-message-box-image> | ||||||
|  |   <ucap-chat-message-box-video | ||||||
|  |     *ngSwitchCase="FileType.Video" | ||||||
|  |     [fileInfo]="fileInfo" | ||||||
|  |     [expired]="getExpiredFile()" | ||||||
|  |     (click)="onClickImageViewer(fileInfo)" | ||||||
|  |   ></ucap-chat-message-box-video> | ||||||
|  |   <ucap-chat-message-box-text | ||||||
|  |     *ngSwitchDefault | ||||||
|  |     [message]="message" | ||||||
|  |   ></ucap-chat-message-box-text> | ||||||
| </ng-container> | </ng-container> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core'; | import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core'; | ||||||
| import { Info } from '@ucap-webmessenger/protocol-event'; | import { Info, InfoResponse } from '@ucap-webmessenger/protocol-event'; | ||||||
| import { StatusCode } from '@ucap-webmessenger/api'; | import { StatusCode } from '@ucap-webmessenger/api'; | ||||||
| import { FileType } from '@ucap-webmessenger/protocol-file'; | import { FileType } from '@ucap-webmessenger/protocol-file'; | ||||||
| import { NGXLogger } from 'ngx-logger'; | import { NGXLogger } from 'ngx-logger'; | ||||||
| @ -13,6 +13,8 @@ import { FileInfo } from '../../models/file-info.json'; | |||||||
| export class FileComponent implements OnInit { | export class FileComponent implements OnInit { | ||||||
|   @Input() |   @Input() | ||||||
|   message: Info; |   message: Info; | ||||||
|  |   @Input() | ||||||
|  |   eventInfoStatus: InfoResponse; | ||||||
| 
 | 
 | ||||||
|   @Output() |   @Output() | ||||||
|   save = new EventEmitter<{ fileInfo: FileInfo; type: string }>(); |   save = new EventEmitter<{ fileInfo: FileInfo; type: string }>(); | ||||||
| @ -34,6 +36,17 @@ export class FileComponent implements OnInit { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   getExpiredFile() { | ||||||
|  |     if ( | ||||||
|  |       !!this.eventInfoStatus && | ||||||
|  |       this.eventInfoStatus.validFileBaseSeq < this.message.seq | ||||||
|  |     ) { | ||||||
|  |       return false; | ||||||
|  |     } else { | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   onClickImageViewer(fileInfo: FileInfo) { |   onClickImageViewer(fileInfo: FileInfo) { | ||||||
|     this.imageViewer.emit(this.fileInfo); |     this.imageViewer.emit(this.fileInfo); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -10,6 +10,8 @@ import { FileInfo } from '../../models/file-info.json'; | |||||||
| export class ImageComponent implements OnInit { | export class ImageComponent implements OnInit { | ||||||
|   @Input() |   @Input() | ||||||
|   fileInfo: FileInfo; |   fileInfo: FileInfo; | ||||||
|  |   @Input() | ||||||
|  |   expired = false; | ||||||
| 
 | 
 | ||||||
|   constructor(private logger: NGXLogger) {} |   constructor(private logger: NGXLogger) {} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -10,6 +10,8 @@ import { FileInfo } from '../../models/file-info.json'; | |||||||
| export class VideoComponent implements OnInit { | export class VideoComponent implements OnInit { | ||||||
|   @Input() |   @Input() | ||||||
|   fileInfo: FileInfo; |   fileInfo: FileInfo; | ||||||
|  |   @Input() | ||||||
|  |   expired = false; | ||||||
| 
 | 
 | ||||||
|   constructor(private logger: NGXLogger) {} |   constructor(private logger: NGXLogger) {} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -103,6 +103,7 @@ | |||||||
|               </ucap-chat-message-box-mass> |               </ucap-chat-message-box-mass> | ||||||
|               <ucap-chat-message-box-file |               <ucap-chat-message-box-file | ||||||
|                 *ngSwitchCase="EventType.File" |                 *ngSwitchCase="EventType.File" | ||||||
|  |                 [eventInfoStatus]="eventInfoStatus" | ||||||
|                 [message]="message" |                 [message]="message" | ||||||
|                 (save)="onSave($event)" |                 (save)="onSave($event)" | ||||||
|                 (imageViewer)="onImageViewer($event)" |                 (imageViewer)="onImageViewer($event)" | ||||||
|  | |||||||
| @ -7,7 +7,11 @@ import { | |||||||
|   ViewEncapsulation |   ViewEncapsulation | ||||||
| } from '@angular/core'; | } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import { Info, EventType } from '@ucap-webmessenger/protocol-event'; | import { | ||||||
|  |   Info, | ||||||
|  |   EventType, | ||||||
|  |   InfoResponse | ||||||
|  | } from '@ucap-webmessenger/protocol-event'; | ||||||
| import { | import { | ||||||
|   LoginResponse, |   LoginResponse, | ||||||
|   UserInfo |   UserInfo | ||||||
| @ -28,6 +32,8 @@ export class MessagesComponent implements OnInit { | |||||||
|   @Input() |   @Input() | ||||||
|   messages: Info[]; |   messages: Info[]; | ||||||
|   @Input() |   @Input() | ||||||
|  |   eventInfoStatus?: InfoResponse; | ||||||
|  |   @Input() | ||||||
|   userInfos?: UserInfo[]; |   userInfos?: UserInfo[]; | ||||||
|   @Input() |   @Input() | ||||||
|   sessionVerInfo: VersionInfo2Response; |   sessionVerInfo: VersionInfo2Response; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user