next-ucap-messenger/projects/ucap-webmessenger-ui/src/lib/components/file-viewer.component.ts

59 lines
1.4 KiB
TypeScript
Raw Normal View History

2019-11-06 04:48:06 +00:00
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { ucapAnimations } from '../animations';
2019-11-07 04:48:25 +00:00
import { FileEventJson } from '@ucap-webmessenger/protocol-event';
import { FileViewerType } from '../types/file-viewer.type';
import { FileType } from '@ucap-webmessenger/protocol-file';
2019-11-06 04:48:06 +00:00
@Component({
selector: 'ucap-file-viewer',
templateUrl: './file-viewer.component.html',
styleUrls: ['./file-viewer.component.scss'],
animations: ucapAnimations
})
export class FileViewerComponent implements OnInit {
@Input()
fileInfo: FileEventJson;
@Input()
2019-11-07 04:48:25 +00:00
fileDownloadUrl: string;
2019-11-06 09:19:37 +00:00
@Output()
2019-11-07 04:48:25 +00:00
download = new EventEmitter<void>();
2019-11-06 09:19:37 +00:00
2019-11-06 04:48:06 +00:00
@Output()
closed = new EventEmitter<void>();
FileViewerType = FileViewerType;
2019-11-06 04:48:06 +00:00
constructor() {}
2019-11-06 04:48:06 +00:00
ngOnInit() {}
detectFileViewerType(fileInfo: FileEventJson): FileViewerType {
switch (fileInfo.fileType) {
case FileType.Image:
return FileViewerType.Image;
case FileType.Sound:
return FileViewerType.Sound;
case FileType.Video:
return FileViewerType.Video;
default:
2019-11-07 06:46:02 +00:00
if (this.isSoundFile(fileInfo.fileExt)) {
return FileViewerType.Sound;
}
return FileViewerType.Binary;
}
}
2019-11-07 04:48:25 +00:00
onDownload(): void {
this.download.emit();
2019-11-06 09:19:37 +00:00
}
onClosedViewer(): void {
this.closed.emit();
}
2019-11-07 06:46:02 +00:00
private isSoundFile(fileExt: string): boolean {
return -1 !== ['mp3'].indexOf(fileExt);
}
2019-11-06 04:48:06 +00:00
}