import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'
+import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
import { Notifier, ServerService } from '@app/core'
import { VideoChannel } from '@app/shared/shared-main'
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'
@ViewChild('bannerPopover') bannerPopover: NgbPopover
@Input() actor: VideoChannel
+ @Input() previewImage = false
@Output() bannerChange = new EventEmitter<FormData>()
@Output() bannerDelete = new EventEmitter<void>()
maxBannerSize = 0
bannerExtensions = ''
+ preview: SafeResourceUrl
+
constructor (
+ private sanitizer: DomSanitizer,
private serverService: ServerService,
private notifier: Notifier
) { }
this.maxBannerSize = config.banner.file.size.max
this.bannerExtensions = config.banner.file.extensions.join(', ')
- this.bannerFormat = $localize`maxsize: ${getBytes(this.maxBannerSize)}, extensions: ${this.bannerExtensions}`
+ // tslint:disable:max-line-length
+ this.bannerFormat = $localize`ratio 6/1, recommended size: 1600x266, max size: ${getBytes(this.maxBannerSize)}, extensions: ${this.bannerExtensions}`
})
}
formData.append('bannerfile', bannerfile)
this.bannerPopover?.close()
this.bannerChange.emit(formData)
+
+ if (this.previewImage) {
+ this.preview = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(bannerfile))
+ }
}
deleteBanner () {
+ this.preview = undefined
this.bannerDelete.emit()
}
hasBanner () {
- return !!this.actor.bannerUrl
+ return !!this.preview || !!this.actor.bannerUrl
}
}