X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Badmin%2Fusers%2Fuser-edit%2Fuser-edit.ts;h=18ca5805f71139c581b238f2c514ecb73d61d1d8;hb=2bc9bd08cd121bdffbf56a0241c4decfb77bfdd5;hp=6625d65d6ee8709b2bde8a0d6b42cad317aabeb6;hpb=a95a4cc89155f448e6f9ca0957170f3c72a9d964;p=oweals%2Fpeertube.git diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index 6625d65d6..18ca5805f 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -1,30 +1,61 @@ import { AuthService, ServerService } from '../../../core' import { FormReactive } from '../../../shared' -import { USER_ROLE_LABELS, UserRole, VideoResolution } from '../../../../../../shared' +import { ServerConfig, USER_ROLE_LABELS, UserRole, VideoResolution } from '../../../../../../shared' import { ConfigService } from '@app/+admin/config/shared/config.service' import { UserAdminFlag } from '@shared/models/users/user-flag.model' +import { OnInit } from '@angular/core' +import { User } from '@app/shared/users/user.model' +import { ScreenService } from '@app/shared/misc/screen.service' -export abstract class UserEdit extends FormReactive { - videoQuotaOptions: { value: string, label: string }[] = [] - videoQuotaDailyOptions: { value: string, label: string }[] = [] +export abstract class UserEdit extends FormReactive implements OnInit { + videoQuotaOptions: { value: string, label: string, disabled?: boolean }[] = [] + videoQuotaDailyOptions: { value: string, label: string, disabled?: boolean }[] = [] username: string - userId: number + user: User + + roles: { value: string, label: string }[] = [] + + protected serverConfig: ServerConfig protected abstract serverService: ServerService protected abstract configService: ConfigService + protected abstract screenService: ScreenService protected abstract auth: AuthService abstract isCreation (): boolean abstract getFormButtonTitle (): string - getRoles () { + ngOnInit (): void { + this.serverConfig = this.serverService.getTmpConfig() + this.serverService.getConfig() + .subscribe(config => this.serverConfig = config) + + this.buildRoles() + } + + get subscribersCount () { + const forAccount = this.user + ? this.user.account.followersCount + : 0 + const forChannels = this.user + ? this.user.videoChannels.map(c => c.followersCount).reduce((a, b) => a + b, 0) + : 0 + return forAccount + forChannels + } + + isInBigView () { + return this.screenService.getWindowInnerWidth() > 1600 + } + + buildRoles () { const authUser = this.auth.getUser() if (authUser.role === UserRole.ADMINISTRATOR) { - return Object.keys(USER_ROLE_LABELS) + this.roles = Object.keys(USER_ROLE_LABELS) .map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) + return } - return [ + this.roles = [ { value: UserRole.USER.toString(), label: USER_ROLE_LABELS[UserRole.USER] } ] } @@ -32,12 +63,12 @@ export abstract class UserEdit extends FormReactive { isTranscodingInformationDisplayed () { const formVideoQuota = parseInt(this.form.value['videoQuota'], 10) - return this.serverService.getConfig().transcoding.enabledResolutions.length !== 0 && + return this.serverConfig.transcoding.enabledResolutions.length !== 0 && formVideoQuota > 0 } computeQuotaWithTranscoding () { - const transcodingConfig = this.serverService.getConfig().transcoding + const transcodingConfig = this.serverConfig.transcoding const resolutions = transcodingConfig.enabledResolutions const higherResolution = VideoResolution.H_4K @@ -63,9 +94,14 @@ export abstract class UserEdit extends FormReactive { protected buildQuotaOptions () { // These are used by a HTML select, so convert key into strings this.videoQuotaOptions = this.configService - .videoQuotaOptions.map(q => ({ value: q.value.toString(), label: q.label })) + .videoQuotaOptions.map(q => ({ value: q.value?.toString(), label: q.label, disabled: q.disabled })) this.videoQuotaDailyOptions = this.configService - .videoQuotaDailyOptions.map(q => ({ value: q.value.toString(), label: q.label })) + .videoQuotaDailyOptions.map(q => ({ value: q.value?.toString(), label: q.label, disabled: q.disabled })) + + console.log( + this.videoQuotaOptions, + this.videoQuotaDailyOptions + ) } }