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=649b35b0c4d665431c69a1a9522525400167f233;hpb=b426edd4854adc6e65844d8c54b8998e792b5778;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 649b35b0c..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,32 +1,77 @@ -import { ServerService } from '../../../core' +import { AuthService, ServerService } from '../../../core' import { FormReactive } from '../../../shared' -import { USER_ROLE_LABELS, 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 }[] = [] - roles = Object.keys(USER_ROLE_LABELS).map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) +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 + 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) { + this.roles = Object.keys(USER_ROLE_LABELS) + .map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) + return + } + + this.roles = [ + { value: UserRole.USER.toString(), label: USER_ROLE_LABELS[UserRole.USER] } + ] + } + 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_1080P + const higherResolution = VideoResolution.H_4K let multiplier = 0 for (const resolution of resolutions) { @@ -42,12 +87,21 @@ export abstract class UserEdit extends FormReactive { return } + protected buildAdminFlags (formValue: any) { + return formValue.byPassAutoBlacklist ? UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST : UserAdminFlag.NONE + } + 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 + ) } }