X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2Fshared%2Fusers%2Fuser.model.ts;h=7c840ffa7054c9109bff031e148a91a18ec988e1;hb=6d8c8ea73a774c3568e6d28a4cbebcf7979d5c2a;hp=09722704a3f0ff3dbe94cc9363aba5aa6481087d;hpb=69f616ab3aeefd6ce330600604df90f2f48bfe3b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 09722704a..7c840ffa7 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -1,33 +1,91 @@ -import { User as UserServerModel } from '../../../../../shared'; +import { + Account as AccountServerModel, + hasUserRight, + User as UserServerModel, + UserRight, + UserRole, + VideoChannel +} from '../../../../../shared' +import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' +import { Account } from '@app/shared/account/account.model' +import { Avatar } from '../../../../../shared/models/avatars/avatar.model' +export type UserConstructorHash = { + id: number, + username: string, + email: string, + role: UserRole, + videoQuota?: number, + videoQuotaDaily?: number, + nsfwPolicy?: NSFWPolicyType, + webTorrentEnabled?: boolean, + autoPlayVideo?: boolean, + createdAt?: Date, + account?: AccountServerModel, + videoChannels?: VideoChannel[] + + blocked?: boolean + blockedReason?: string +} export class User implements UserServerModel { - id: number; - username: string; - email: string; - role: string; - displayNSFW: boolean; - createdAt: Date; - - constructor(hash: { - id: number, - username: string, - email: string, - role: string, - displayNSFW?: boolean, - createdAt?: Date, - }) { - this.id = hash.id; - this.username = hash.username; - this.email = hash.email; - this.role = hash.role; - this.displayNSFW = hash.displayNSFW; - - if (hash.createdAt) { - this.createdAt = hash.createdAt; + id: number + username: string + email: string + role: UserRole + nsfwPolicy: NSFWPolicyType + webTorrentEnabled: boolean + autoPlayVideo: boolean + videoQuota: number + videoQuotaDaily: number + account: Account + videoChannels: VideoChannel[] + createdAt: Date + + blocked: boolean + blockedReason?: string + + constructor (hash: UserConstructorHash) { + this.id = hash.id + this.username = hash.username + this.email = hash.email + this.role = hash.role + + this.videoChannels = hash.videoChannels + this.videoQuota = hash.videoQuota + this.videoQuotaDaily = hash.videoQuotaDaily + this.nsfwPolicy = hash.nsfwPolicy + this.webTorrentEnabled = hash.webTorrentEnabled + this.autoPlayVideo = hash.autoPlayVideo + this.createdAt = hash.createdAt + this.blocked = hash.blocked + this.blockedReason = hash.blockedReason + + if (hash.account !== undefined) { + this.account = new Account(hash.account) + } + } + + get accountAvatarUrl () { + if (!this.account) return '' + + return this.account.avatarUrl + } + + hasRight (right: UserRight) { + return hasUserRight(this.role, right) + } + + patch (obj: UserServerModel) { + for (const key of Object.keys(obj)) { + this[key] = obj[key] + } + + if (obj.account !== undefined) { + this.account = new Account(obj.account) } } - isAdmin() { - return this.role === 'admin'; + updateAccountAvatar (newAccountAvatar: Avatar) { + this.account.updateAvatar(newAccountAvatar) } }