]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/shared/shared-main/account/actor.model.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / shared-main / account / actor.model.ts
CommitLineData
a282e4d8 1import { getAbsoluteAPIUrl, getAPIHost } from '@app/helpers'
126a6352 2import { Actor as ServerActor, ActorImage } from '@shared/models'
d3e91a5f 3
126a6352 4export abstract class Actor implements ServerActor {
d3e91a5f 5 id: number
d3e91a5f 6 name: string
cdeddff1 7
d3e91a5f 8 host: string
cdeddff1
C
9 url: string
10
d3e91a5f
C
11 followingCount: number
12 followersCount: number
cdeddff1 13
db400f44 14 createdAt: Date | string
d3e91a5f 15
d0800f76 16 // TODO: remove, deprecated in 4.2
17 avatar: never
18
19 avatars: ActorImage[]
d3e91a5f 20
cfde28ba
C
21 isLocal: boolean
22
4428ad54 23 static GET_ACTOR_AVATAR_URL (actor: { avatars: { width: number, url?: string, path: string }[] }, size?: number) {
a220b84b 24 const avatarsAscWidth = actor.avatars.sort((a, b) => a.width - b.width)
4428ad54 25
e2d8587b 26 const avatar = size && avatarsAscWidth.length > 1
a220b84b
C
27 ? avatarsAscWidth.find(a => a.width >= size)
28 : avatarsAscWidth[avatarsAscWidth.length - 1] // Bigger one
d3e91a5f 29
d0800f76 30 if (!avatar) return ''
31 if (avatar.url) return avatar.url
5fb2e288 32
d0800f76 33 const absoluteAPIUrl = getAbsoluteAPIUrl()
cdeddff1 34
d0800f76 35 return absoluteAPIUrl + avatar.path
d3e91a5f
C
36 }
37
e379f813 38 static CREATE_BY_STRING (accountName: string, host: string, forceHostname = false) {
a282e4d8 39 const thisHost = getAPIHost()
d3e91a5f 40
e379f813 41 if (host.trim() === thisHost && !forceHostname) return accountName
d3e91a5f
C
42
43 return accountName + '@' + host
44 }
45
94148c90 46 static IS_LOCAL (host: string) {
a282e4d8 47 const thisHost = getAPIHost()
94148c90
C
48
49 return host.trim() === thisHost
50 }
51
126a6352 52 protected constructor (hash: Partial<ServerActor>) {
d3e91a5f 53 this.id = hash.id
27ec473f
C
54 this.url = hash.url ?? ''
55 this.name = hash.name ?? ''
56 this.host = hash.host ?? ''
d3e91a5f
C
57 this.followingCount = hash.followingCount
58 this.followersCount = hash.followersCount
8ca56654
C
59
60 if (hash.createdAt) this.createdAt = new Date(hash.createdAt.toString())
8ca56654 61
9ca5728b 62 this.avatars = hash.avatars || []
94148c90 63 this.isLocal = Actor.IS_LOCAL(this.host)
d3e91a5f
C
64 }
65}