X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fcore%2Fusers%2Fuser.model.ts;h=d57608f1c66310b04debe4cc738b95e3f570ee8a;hb=HEAD;hp=f0d3a08b84329572972701ee6cf57922789eaf45;hpb=bd45d503e5d007e730f4e81dccd7e7864c9a85cc;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/core/users/user.model.ts b/client/src/app/core/users/user.model.ts index f0d3a08b8..d57608f1c 100644 --- a/client/src/app/core/users/user.model.ts +++ b/client/src/app/core/users/user.model.ts @@ -1,7 +1,9 @@ import { Account } from '@app/shared/shared-main/account/account.model' +import { objectKeysTyped } from '@shared/core-utils' import { hasUserRight } from '@shared/core-utils/users' import { - Avatar, + ActorImage, + HTMLServerConfig, NSFWPolicyType, User as UserServerModel, UserAdminFlag, @@ -10,17 +12,15 @@ import { UserRole, VideoChannel } from '@shared/models' -import { UserKeys } from '@root-helpers/user-keys' export class User implements UserServerModel { - static KEYS = UserKeys - id: number username: string email: string pendingEmail: string | null emailVerified: boolean + emailPublic: boolean nsfwPolicy: NSFWPolicyType adminFlags?: UserAdminFlag @@ -28,12 +28,18 @@ export class User implements UserServerModel { autoPlayVideo: boolean autoPlayNextVideo: boolean autoPlayNextVideoPlaylist: boolean - webTorrentEnabled: boolean + + p2pEnabled: boolean + // FIXME: deprecated in 4.1 + webTorrentEnabled: never + videosHistoryEnabled: boolean videoLanguages: string[] - role: UserRole - roleLabel: string + role: { + id: UserRole + label: string + } videoQuota: number videoQuotaDaily: number @@ -58,11 +64,14 @@ export class User implements UserServerModel { noInstanceConfigWarningModal: boolean noWelcomeModal: boolean + noAccountSetupWarningModal: boolean pluginAuth: string | null lastLoginDate: Date | null + twoFactorEnabled: boolean + createdAt: Date constructor (hash: Partial) { @@ -85,7 +94,7 @@ export class User implements UserServerModel { this.videoCommentsCount = hash.videoCommentsCount this.nsfwPolicy = hash.nsfwPolicy - this.webTorrentEnabled = hash.webTorrentEnabled + this.p2pEnabled = hash.p2pEnabled this.autoPlayVideo = hash.autoPlayVideo this.autoPlayNextVideo = hash.autoPlayNextVideo this.autoPlayNextVideoPlaylist = hash.autoPlayNextVideoPlaylist @@ -101,9 +110,12 @@ export class User implements UserServerModel { this.noInstanceConfigWarningModal = hash.noInstanceConfigWarningModal this.noWelcomeModal = hash.noWelcomeModal + this.noAccountSetupWarningModal = hash.noAccountSetupWarningModal this.notificationSettings = hash.notificationSettings + this.twoFactorEnabled = hash.twoFactorEnabled + this.createdAt = hash.createdAt this.pluginAuth = hash.pluginAuth @@ -114,19 +126,14 @@ export class User implements UserServerModel { } } - get accountAvatarUrl () { - if (!this.account) return '' - - return this.account.avatarUrl - } - hasRight (right: UserRight) { - return hasUserRight(this.role, right) + return hasUserRight(this.role.id, right) } patch (obj: UserServerModel) { - for (const key of Object.keys(obj)) { - this[key] = obj[key] + for (const key of objectKeysTyped(obj)) { + // FIXME: typings + (this as any)[key] = obj[key] } if (obj.account !== undefined) { @@ -134,11 +141,18 @@ export class User implements UserServerModel { } } - updateAccountAvatar (newAccountAvatar: Avatar) { - this.account.updateAvatar(newAccountAvatar) + updateAccountAvatar (newAccountAvatars?: ActorImage[]) { + if (newAccountAvatars) this.account.updateAvatar(newAccountAvatars) + else this.account.resetAvatar() } isUploadDisabled () { return this.videoQuota === 0 || this.videoQuotaDaily === 0 } + + isAutoBlocked (serverConfig: HTMLServerConfig) { + if (serverConfig.autoBlacklist.videos.ofUsers.enabled !== true) return false + + return this.role.id === UserRole.USER && this.adminFlags !== UserAdminFlag.BYPASS_VIDEO_AUTO_BLACKLIST + } }