X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fusers%2Fuser.model.ts;h=7707d7dda7ecc73bda9d2b7ec485de0b7c224b85;hb=dd4f25eea802fd88ea641d730432b56f562e0861;hp=ca0a5f26ca01213471b2ec263c6cbbc0fe6dc3f2;hpb=4a6995be18b15de1834a39c8921a0e4109671bb6;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 ca0a5f26c..7707d7dda 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -1,20 +1,108 @@ -import { Token } from './token.model'; +import { hasUserRight, User as UserServerModel, UserNotificationSetting, 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' +import { UserAdminFlag } from '@shared/models/users/user-flag.model' -export class User { - username: string; - token: Token; +export class User implements UserServerModel { + id: number + username: string + email: string + pendingEmail: string | null - static load() { - return new User(localStorage.getItem('username'), Token.load()); + emailVerified: boolean + nsfwPolicy: NSFWPolicyType + + adminFlags?: UserAdminFlag + + autoPlayVideo: boolean + autoPlayNextVideo: boolean + autoPlayNextVideoPlaylist: boolean + webTorrentEnabled: boolean + videosHistoryEnabled: boolean + videoLanguages: string[] + + role: UserRole + roleLabel: string + + videoQuota: number + videoQuotaDaily: number + videoQuotaUsed?: number + videoQuotaUsedDaily?: number + + theme: string + + account: Account + notificationSettings?: UserNotificationSetting + videoChannels?: VideoChannel[] + + blocked: boolean + blockedReason?: string + + noInstanceConfigWarningModal: boolean + noWelcomeModal: boolean + + createdAt: Date + + constructor (hash: Partial) { + 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.videoQuotaUsed = hash.videoQuotaUsed + this.videoQuotaUsedDaily = hash.videoQuotaUsedDaily + + this.nsfwPolicy = hash.nsfwPolicy + this.webTorrentEnabled = hash.webTorrentEnabled + this.videosHistoryEnabled = hash.videosHistoryEnabled + this.autoPlayVideo = hash.autoPlayVideo + + this.theme = hash.theme + + this.adminFlags = hash.adminFlags + + this.blocked = hash.blocked + this.blockedReason = hash.blockedReason + + this.noInstanceConfigWarningModal = hash.noInstanceConfigWarningModal + this.noWelcomeModal = hash.noWelcomeModal + + this.notificationSettings = hash.notificationSettings + + this.createdAt = hash.createdAt + + if (hash.account !== undefined) { + this.account = new Account(hash.account) + } } - constructor(username: string, hash_token: any) { - this.username = username; - this.token = new Token(hash_token); + 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) + } } - save() { - localStorage.setItem('username', this.username); - this.token.save(); + updateAccountAvatar (newAccountAvatar: Avatar) { + this.account.updateAvatar(newAccountAvatar) } }