X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-main%2Faccount%2Factor-avatar-info.component.ts;h=87e9e917c6fb6db69ec0d4e997994ba6988bf863;hb=deb8b9cdb03213efd8f1fc4b40ab94ae499fe058;hp=5daa54cb59c208806d156350a3c8a02b3d0ab253;hpb=b4c3c51dc874711febf43b719ca878436b31084d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts b/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts index 5daa54cb5..87e9e917c 100644 --- a/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts +++ b/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts @@ -1,61 +1,77 @@ -import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' +import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core' import { Notifier, ServerService } from '@app/core' +import { NgbPopover } from '@ng-bootstrap/ng-bootstrap' import { getBytes } from '@root-helpers/bytes' -import { ServerConfig } from '@shared/models' -import { VideoChannel } from '../video-channel/video-channel.model' import { Account } from '../account/account.model' +import { VideoChannel } from '../video-channel/video-channel.model' +import { Actor } from './actor.model' @Component({ selector: 'my-actor-avatar-info', templateUrl: './actor-avatar-info.component.html', styleUrls: [ './actor-avatar-info.component.scss' ] }) -export class ActorAvatarInfoComponent implements OnInit { +export class ActorAvatarInfoComponent implements OnInit, OnChanges { @ViewChild('avatarfileInput') avatarfileInput: ElementRef + @ViewChild('avatarPopover') avatarPopover: NgbPopover @Input() actor: VideoChannel | Account @Output() avatarChange = new EventEmitter() + @Output() avatarDelete = new EventEmitter() - maxSizeText: string + avatarFormat = '' + maxAvatarSize = 0 + avatarExtensions = '' - private serverConfig: ServerConfig + private avatarUrl: string constructor ( private serverService: ServerService, private notifier: Notifier - ) { - this.maxSizeText = $localize`max size` - } + ) { } ngOnInit (): void { - this.serverConfig = this.serverService.getTmpConfig() this.serverService.getConfig() - .subscribe(config => this.serverConfig = config) + .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}` + }) } - onAvatarChange () { + ngOnChanges (changes: SimpleChanges) { + if (changes['actor']) { + this.avatarUrl = Actor.GET_ACTOR_AVATAR_URL(this.actor) + } + } + + onAvatarChange (input: HTMLInputElement) { + this.avatarfileInput = new ElementRef(input) + const avatarfile = this.avatarfileInput.nativeElement.files[ 0 ] if (avatarfile.size > this.maxAvatarSize) { - this.notifier.error('Error', 'This image is too large.') + this.notifier.error('Error', $localize`This image is too large.`) return } const formData = new FormData() formData.append('avatarfile', avatarfile) - + this.avatarPopover?.close() this.avatarChange.emit(formData) } - get maxAvatarSize () { - return this.serverConfig.avatar.file.size.max + deleteAvatar () { + this.avatarDelete.emit() } - get maxAvatarSizeInBytes () { - return getBytes(this.maxAvatarSize) + hasAvatar () { + return !!this.avatarUrl } - get avatarExtensions () { - return this.serverConfig.avatar.file.extensions.join(', ') + isChannel () { + return !!(this.actor as VideoChannel).ownerAccount } }