diff options
author | kontrollanten <6680299+kontrollanten@users.noreply.github.com> | 2022-02-28 08:34:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-28 08:34:43 +0100 |
commit | d0800f7661f13fabe7bb6f4aa0ea50764f106405 (patch) | |
tree | d43e6b0b6f4a5a32e03487e6464edbcaf288be2a /shared | |
parent | 5cad2ca9db9b9d138f8a33058d10b94a9fd50c69 (diff) | |
download | PeerTube-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.ts | 7 | ||||
-rw-r--r-- | shared/models/actors/account.model.ts | 7 | ||||
-rw-r--r-- | shared/models/actors/actor-image.model.ts | 1 | ||||
-rw-r--r-- | shared/models/actors/actor.model.ts | 6 | ||||
-rw-r--r-- | shared/models/users/user-notification.model.ts | 11 | ||||
-rw-r--r-- | shared/models/videos/channel/video-channel.model.ts | 13 | ||||
-rw-r--r-- | shared/server-commands/users/accounts.ts | 15 | ||||
-rw-r--r-- | shared/server-commands/users/index.ts | 1 | ||||
-rw-r--r-- | shared/server-commands/videos/channels.ts | 13 |
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' | |||
4 | export interface Account extends Actor { | 4 | export 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 @@ | |||
1 | export interface ActorImage { | 1 | export 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 | ||
43 | export interface AvatarInfo { | ||
44 | width: number | ||
45 | path: string | ||
46 | } | ||
47 | |||
43 | export interface ActorInfo { | 48 | export 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 | ||
53 | export interface UserNotification { | 58 | export 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 @@ | |||
1 | import { Actor } from '../../actors/actor.model' | ||
2 | import { Account, ActorImage } from '../../actors' | 1 | import { Account, ActorImage } from '../../actors' |
2 | import { Actor } from '../../actors/actor.model' | ||
3 | 3 | ||
4 | export type ViewsPerDate = { | 4 | export 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 | ||
25 | export interface VideoChannelSummary { | 28 | export 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 @@ | |||
1 | import { PeerTubeServer } from '../server/server' | ||
2 | |||
3 | async 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 | |||
13 | export { | ||
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 @@ | |||
1 | export * from './accounts-command' | 1 | export * from './accounts-command' |
2 | export * from './accounts' | ||
2 | export * from './blocklist-command' | 3 | export * from './blocklist-command' |
3 | export * from './login' | 4 | export * from './login' |
4 | export * from './login-command' | 5 | export * 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 | ||
16 | async 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 | |||
16 | export { | 26 | export { |
17 | setDefaultVideoChannel | 27 | setDefaultVideoChannel, |
28 | setDefaultChannelAvatar | ||
18 | } | 29 | } |