X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2Fshared%2Fusers%2Fuser.model.ts;h=2bdc48a1dc81a381ba0cda7915e7f0069aca296d;hb=03e12d7c4954e1071fdeb7ef362ea5c3965d4075;hp=726495d1182721d095bcca3e11ee72da5b782cb5;hpb=44c5275e1bdd1d4b4c23f7c423034e4293c927b3;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 726495d11..2bdc48a1d 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -1,20 +1,70 @@ -export class User { - id: string; - username: string; - role: string; - createdDate: Date; - - constructor(hash: { id: string, username: string, role: string, createdDate?: Date }) { - this.id = hash.id; - this.username = hash.username; - this.role = hash.role; - - if (hash.createdDate) { - this.createdDate = hash.createdDate; +import { hasUserRight, User as UserServerModel, UserRight, UserRole, VideoChannel } from '../../../../../shared' +import { Account } from '../account/account.model' +import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' + +export type UserConstructorHash = { + id: number, + username: string, + email: string, + role: UserRole, + videoQuota?: number, + nsfwPolicy?: NSFWPolicyType, + autoPlayVideo?: boolean, + createdAt?: Date, + account?: Account, + videoChannels?: VideoChannel[] +} +export class User implements UserServerModel { + id: number + username: string + email: string + role: UserRole + nsfwPolicy: NSFWPolicyType + autoPlayVideo: boolean + videoQuota: number + account: Account + videoChannels: VideoChannel[] + createdAt: Date + + constructor (hash: UserConstructorHash) { + this.id = hash.id + this.username = hash.username + this.email = hash.email + this.role = hash.role + this.account = hash.account + + if (hash.videoChannels !== undefined) { + this.videoChannels = hash.videoChannels } + + if (hash.videoQuota !== undefined) { + this.videoQuota = hash.videoQuota + } + + if (hash.nsfwPolicy !== undefined) { + this.nsfwPolicy = hash.nsfwPolicy + } + + if (hash.autoPlayVideo !== undefined) { + this.autoPlayVideo = hash.autoPlayVideo + } + + if (hash.createdAt !== undefined) { + this.createdAt = hash.createdAt + } + } + + hasRight (right: UserRight) { + return hasUserRight(this.role, right) + } + + getAvatarUrl () { + return Account.GET_ACCOUNT_AVATAR_URL(this.account) } - isAdmin() { - return this.role === 'admin'; + patch (obj: UserServerModel) { + for (const key of Object.keys(obj)) { + this[key] = obj[key] + } } }