X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Badmin%2Fusers%2Fuser-edit%2Fuser-edit.ts;h=af5e674a7df718b6df9c282c44090f0ab16ebec5;hb=9df52d660feb722404be00a50f3c8a612bec1c15;hp=649b35b0c4d665431c69a1a9522525400167f233;hpb=88108880bbdba473cfe36ecbebc1c3c4f972e102;p=github%2FChocobozzz%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..af5e674a7 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,81 @@ -import { ServerService } from '../../../core' -import { FormReactive } from '../../../shared' -import { USER_ROLE_LABELS, VideoResolution } from '../../../../../../shared' +import { Directive, OnInit } from '@angular/core' import { ConfigService } from '@app/+admin/config/shared/config.service' +import { AuthService, ScreenService, ServerService, User } from '@app/core' +import { FormReactive } from '@app/shared/shared-forms' +import { USER_ROLE_LABELS } from '@shared/core-utils/users' +import { HTMLServerConfig, UserAdminFlag, UserRole, VideoResolution } from '@shared/models' +import { SelectOptionsItem } from '../../../../types/select-options-item.model' -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] })) +@Directive() +// eslint-disable-next-line @angular-eslint/directive-class-suffix +export abstract class UserEdit extends FormReactive implements OnInit { + videoQuotaOptions: SelectOptionsItem[] = [] + videoQuotaDailyOptions: SelectOptionsItem[] = [] username: string - userId: number + user: User + + roles: { value: string, label: string }[] = [] + + protected serverConfig: HTMLServerConfig 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.getHTMLConfig() + + 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 + } + + getAuthPlugins () { + return this.serverConfig.plugin.registeredIdAndPassAuths.map(p => p.npmName) + .concat(this.serverConfig.plugin.registeredExternalAuths.map(p => p.npmName)) + } + + 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 +91,12 @@ export abstract class UserEdit extends FormReactive { return } - 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 })) + protected buildAdminFlags (formValue: any) { + return formValue.byPassAutoBlock ? UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST : UserAdminFlag.NONE + } - this.videoQuotaDailyOptions = this.configService - .videoQuotaDailyOptions.map(q => ({ value: q.value.toString(), label: q.label })) + protected buildQuotaOptions () { + this.videoQuotaOptions = this.configService.videoQuotaOptions + this.videoQuotaDailyOptions = this.configService.videoQuotaDailyOptions } }