86 lines
1.9 KiB
TypeScript
Raw Normal View History

2019-11-06 13:48:06 +09:00
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { ucapAnimations } from '../../animations';
import { FileEventJson } from '@ucap-webmessenger/protocol-event';
2019-11-06 17:25:59 +09:00
import { DeviceType, FileUtil, MimeUtil } from '@ucap-webmessenger/core';
import {
CommonApiService,
FileDownloadItem
} from '@ucap-webmessenger/api-common';
import { take, map } from 'rxjs/operators';
2019-11-06 18:19:37 +09:00
import { DomSanitizer } from '@angular/platform-browser';
2019-11-06 13:48:06 +09:00
@Component({
selector: 'ucap-image-viewer',
templateUrl: './image-viewer.component.html',
styleUrls: ['./image-viewer.component.scss'],
animations: ucapAnimations
})
export class ImageViewerComponent implements OnInit {
@Input()
fileInfo: FileEventJson;
@Input()
downloadUrl: string;
@Input()
userSeq: number;
@Input()
deviceType: DeviceType;
@Input()
token: string;
2019-11-06 13:48:06 +09:00
@Output()
closed = new EventEmitter<void>();
2019-11-06 18:19:37 +09:00
@Output()
download = new EventEmitter<Blob>();
blob: Blob;
2019-11-06 17:25:59 +09:00
imageSrc: string | ArrayBuffer;
fileDownloadItem: FileDownloadItem;
2019-11-06 18:19:37 +09:00
constructor(
private domSanitizer: DomSanitizer,
private commonApiService: CommonApiService
) {
this.fileDownloadItem = new FileDownloadItem();
2019-11-06 17:25:59 +09:00
}
2019-11-06 17:25:59 +09:00
ngOnInit() {
this.commonApiService
.fileTalkDownload(
{
userSeq: this.userSeq,
deviceType: this.deviceType,
token: this.token,
attachmentsSeq: this.fileInfo.attachmentSeq,
fileDownloadItem: this.fileDownloadItem
},
this.downloadUrl
)
.pipe(
take(1),
2019-11-06 17:25:59 +09:00
map(async blob => {
2019-11-06 18:19:37 +09:00
this.blob = blob.slice(
2019-11-06 17:25:59 +09:00
0,
blob.size,
MimeUtil.getMimeFromExtension(this.fileInfo.fileExt)
);
2019-11-07 11:37:33 +09:00
this.imageSrc = await FileUtil.fromBlobToDataUrl(this.blob);
})
)
.subscribe();
}
2019-11-06 18:19:37 +09:00
onClickDownload(): void {
this.download.emit(this.blob);
}
onClickClose(): void {
this.closed.emit();
}
2019-11-06 13:48:06 +09:00
}