aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared
diff options
context:
space:
mode:
authorkontrollanten <6680299+kontrollanten@users.noreply.github.com>2022-02-28 08:34:43 +0100
committerGitHub <noreply@github.com>2022-02-28 08:34:43 +0100
commitd0800f7661f13fabe7bb6f4aa0ea50764f106405 (patch)
treed43e6b0b6f4a5a32e03487e6464edbcaf288be2a /shared
parent5cad2ca9db9b9d138f8a33058d10b94a9fd50c69 (diff)
downloadPeerTube-d0800f7661f13fabe7bb6f4aa0ea50764f106405.tar.gz
PeerTube-d0800f7661f13fabe7bb6f4aa0ea50764f106405.tar.zst
PeerTube-d0800f7661f13fabe7bb6f4aa0ea50764f106405.zip
Implement avatar miniatures (#4639)
* client: remove unused file * refactor(client/my-actor-avatar): size from input Read size from component input instead of scss, to make it possible to use smaller avatar images when implemented. * implement avatar miniatures close #4560 * fix(test): max file size * fix(search-index): normalize res acc to avatarMini * refactor avatars to an array * client/search: resize channel avatar to 120 * refactor(client/videos): remove unused function * client(actor-avatar): set default size * fix tests and avatars full result When findOne is used only an array containting one avatar is returned. * update migration version and version notations * server/search: harmonize normalizing * Cleanup avatar miniature PR Co-authored-by: Chocobozzz <me@florianbigard.com>
Diffstat (limited to 'shared')
-rw-r--r--shared/models/activitypub/activitypub-actor.ts7
-rw-r--r--shared/models/actors/account.model.ts7
-rw-r--r--shared/models/actors/actor-image.model.ts1
-rw-r--r--shared/models/actors/actor.model.ts6
-rw-r--r--shared/models/users/user-notification.model.ts11
-rw-r--r--shared/models/videos/channel/video-channel.model.ts13
-rw-r--r--shared/server-commands/users/accounts.ts15
-rw-r--r--shared/server-commands/users/index.ts1
-rw-r--r--shared/server-commands/videos/channels.ts13
9 files changed, 63 insertions, 11 deletions
diff --git a/shared/models/activitypub/activitypub-actor.ts b/shared/models/activitypub/activitypub-actor.ts
index 09d4f7402..efb6edec4 100644
--- a/shared/models/activitypub/activitypub-actor.ts
+++ b/shared/models/activitypub/activitypub-actor.ts
@@ -27,8 +27,11 @@ export interface ActivityPubActor {
27 publicKeyPem: string 27 publicKeyPem: string
28 } 28 }
29 29
30 icon?: ActivityIconObject 30 image?: ActivityIconObject | ActivityIconObject[]
31 image?: ActivityIconObject 31
32 icon?: ActivityIconObject | ActivityIconObject[]
33 // TODO: migrate to `icon`, introduced in 4.2
34 icons?: ActivityIconObject[]
32 35
33 published?: string 36 published?: string
34} 37}
diff --git a/shared/models/actors/account.model.ts b/shared/models/actors/account.model.ts
index f2138077e..60f4236d5 100644
--- a/shared/models/actors/account.model.ts
+++ b/shared/models/actors/account.model.ts
@@ -4,6 +4,7 @@ import { Actor } from './actor.model'
4export interface Account extends Actor { 4export interface Account extends Actor {
5 displayName: string 5 displayName: string
6 description: string 6 description: string
7 avatars: ActorImage[]
7 8
8 updatedAt: Date | string 9 updatedAt: Date | string
9 10
@@ -16,5 +17,9 @@ export interface AccountSummary {
16 displayName: string 17 displayName: string
17 url: string 18 url: string
18 host: string 19 host: string
19 avatar?: ActorImage 20
21 avatars: ActorImage[]
22
23 // TODO: remove, deprecated in 4.2
24 avatar: ActorImage
20} 25}
diff --git a/shared/models/actors/actor-image.model.ts b/shared/models/actors/actor-image.model.ts
index ad5eab627..cfe44ac15 100644
--- a/shared/models/actors/actor-image.model.ts
+++ b/shared/models/actors/actor-image.model.ts
@@ -1,4 +1,5 @@
1export interface ActorImage { 1export interface ActorImage {
2 width: number
2 path: string 3 path: string
3 4
4 url?: string 5 url?: string
diff --git a/shared/models/actors/actor.model.ts b/shared/models/actors/actor.model.ts
index fd0662331..bf86a917f 100644
--- a/shared/models/actors/actor.model.ts
+++ b/shared/models/actors/actor.model.ts
@@ -8,5 +8,9 @@ export interface Actor {
8 followingCount: number 8 followingCount: number
9 followersCount: number 9 followersCount: number
10 createdAt: Date | string 10 createdAt: Date | string
11 avatar?: ActorImage 11
12 avatars: ActorImage[]
13
14 // TODO: remove, deprecated in 4.2
15 avatar: ActorImage
12} 16}
diff --git a/shared/models/users/user-notification.model.ts b/shared/models/users/user-notification.model.ts
index 5820589fe..a2621fb5b 100644
--- a/shared/models/users/user-notification.model.ts
+++ b/shared/models/users/user-notification.model.ts
@@ -40,14 +40,19 @@ export interface VideoInfo {
40 name: string 40 name: string
41} 41}
42 42
43export interface AvatarInfo {
44 width: number
45 path: string
46}
47
43export interface ActorInfo { 48export interface ActorInfo {
44 id: number 49 id: number
45 displayName: string 50 displayName: string
46 name: string 51 name: string
47 host: string 52 host: string
48 avatar?: { 53
49 path: string 54 avatars: AvatarInfo[]
50 } 55 avatar: AvatarInfo
51} 56}
52 57
53export interface UserNotification { 58export interface UserNotification {
diff --git a/shared/models/videos/channel/video-channel.model.ts b/shared/models/videos/channel/video-channel.model.ts
index 5393f924d..58b60c177 100644
--- a/shared/models/videos/channel/video-channel.model.ts
+++ b/shared/models/videos/channel/video-channel.model.ts
@@ -1,5 +1,5 @@
1import { Actor } from '../../actors/actor.model'
2import { Account, ActorImage } from '../../actors' 1import { Account, ActorImage } from '../../actors'
2import { Actor } from '../../actors/actor.model'
3 3
4export type ViewsPerDate = { 4export type ViewsPerDate = {
5 date: Date 5 date: Date
@@ -19,7 +19,10 @@ export interface VideoChannel extends Actor {
19 videosCount?: number 19 videosCount?: number
20 viewsPerDay?: ViewsPerDate[] // chronologically ordered 20 viewsPerDay?: ViewsPerDate[] // chronologically ordered
21 21
22 banner?: ActorImage 22 banners: ActorImage[]
23
24 // TODO: remove, deprecated in 4.2
25 banner: ActorImage
23} 26}
24 27
25export interface VideoChannelSummary { 28export interface VideoChannelSummary {
@@ -28,5 +31,9 @@ export interface VideoChannelSummary {
28 displayName: string 31 displayName: string
29 url: string 32 url: string
30 host: string 33 host: string
31 avatar?: ActorImage 34
35 avatars: ActorImage[]
36
37 // TODO: remove, deprecated in 4.2
38 avatar: ActorImage
32} 39}
diff --git a/shared/server-commands/users/accounts.ts b/shared/server-commands/users/accounts.ts
new file mode 100644
index 000000000..6387891f4
--- /dev/null
+++ b/shared/server-commands/users/accounts.ts
@@ -0,0 +1,15 @@
1import { PeerTubeServer } from '../server/server'
2
3async function setDefaultAccountAvatar (serversArg: PeerTubeServer | PeerTubeServer[], token?: string) {
4 const servers = Array.isArray(serversArg)
5 ? serversArg
6 : [ serversArg ]
7
8 for (const server of servers) {
9 await server.users.updateMyAvatar({ fixture: 'avatar.png', token })
10 }
11}
12
13export {
14 setDefaultAccountAvatar
15}
diff --git a/shared/server-commands/users/index.ts b/shared/server-commands/users/index.ts
index c2bc5c44f..f6f93b4d2 100644
--- a/shared/server-commands/users/index.ts
+++ b/shared/server-commands/users/index.ts
@@ -1,4 +1,5 @@
1export * from './accounts-command' 1export * from './accounts-command'
2export * from './accounts'
2export * from './blocklist-command' 3export * from './blocklist-command'
3export * from './login' 4export * from './login'
4export * from './login-command' 5export * from './login-command'
diff --git a/shared/server-commands/videos/channels.ts b/shared/server-commands/videos/channels.ts
index 756c47453..3c0d4b723 100644
--- a/shared/server-commands/videos/channels.ts
+++ b/shared/server-commands/videos/channels.ts
@@ -13,6 +13,17 @@ function setDefaultVideoChannel (servers: PeerTubeServer[]) {
13 return Promise.all(tasks) 13 return Promise.all(tasks)
14} 14}
15 15
16async function setDefaultChannelAvatar (serversArg: PeerTubeServer | PeerTubeServer[], channelName: string = 'root_channel') {
17 const servers = Array.isArray(serversArg)
18 ? serversArg
19 : [ serversArg ]
20
21 for (const server of servers) {
22 await server.channels.updateImage({ channelName, fixture: 'avatar.png', type: 'avatar' })
23 }
24}
25
16export { 26export {
17 setDefaultVideoChannel 27 setDefaultVideoChannel,
28 setDefaultChannelAvatar
18} 29}