import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
-import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
import { Notifier, ServerService } from '@app/core'
import { Account, VideoChannel } from '@app/shared/shared-main'
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'
import { getBytes } from '@root-helpers/bytes'
+import { imageToDataURL } from '@root-helpers/images'
@Component({
selector: 'my-actor-avatar-edit',
maxAvatarSize = 0
avatarExtensions = ''
- preview: SafeResourceUrl
+ preview: string
constructor (
- private sanitizer: DomSanitizer,
private serverService: ServerService,
private notifier: Notifier
) { }
ngOnInit (): void {
- this.serverService.getConfig()
- .subscribe(config => {
- this.maxAvatarSize = config.avatar.file.size.max
- this.avatarExtensions = config.avatar.file.extensions.join(', ')
-
- this.avatarFormat = `${$localize`max size`}: 192*192px, ` +
- `${getBytes(this.maxAvatarSize)} ${$localize`extensions`}: ${this.avatarExtensions}`
- })
+ const config = this.serverService.getHTMLConfig()
+
+ this.maxAvatarSize = config.avatar.file.size.max
+ this.avatarExtensions = config.avatar.file.extensions.join(', ')
+
+ this.avatarFormat = `${$localize`max size`}: 192*192px, ` +
+ `${getBytes(this.maxAvatarSize)} ${$localize`extensions`}: ${this.avatarExtensions}`
}
onAvatarChange (input: HTMLInputElement) {
this.avatarfileInput = new ElementRef(input)
- const avatarfile = this.avatarfileInput.nativeElement.files[ 0 ]
+ const avatarfile = this.avatarfileInput.nativeElement.files[0]
if (avatarfile.size > this.maxAvatarSize) {
this.notifier.error('Error', $localize`This image is too large.`)
return
this.avatarChange.emit(formData)
if (this.previewImage) {
- this.preview = this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(avatarfile))
+ imageToDataURL(avatarfile).then(result => this.preview = result)
}
}
}
hasAvatar () {
- return !!this.preview || !!this.actor.avatar
- }
-
- isChannel () {
- return !!(this.actor as VideoChannel).ownerAccount
- }
-
- getChannel (): VideoChannel {
- if (this.isChannel()) return this.actor as VideoChannel
-
- return undefined
+ return !!this.preview || this.actor.avatars.length !== 0
}
- getAccount (): Account {
- if (this.isChannel()) return undefined
+ getActorType () {
+ if ((this.actor as VideoChannel).ownerAccount) return 'channel'
- return this.actor as Account
+ return 'account'
}
}