From d0800f7661f13fabe7bb6f4aa0ea50764f106405 Mon Sep 17 00:00:00 2001 From: kontrollanten <6680299+kontrollanten@users.noreply.github.com> Date: Mon, 28 Feb 2022 08:34:43 +0100 Subject: 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 --- support/doc/api/openapi.yaml | 131 ++++++++++++++++++++++--------------------- support/nginx/peertube | 2 +- 2 files changed, 69 insertions(+), 64 deletions(-) (limited to 'support') diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 396074225..70f2d97f5 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1556,8 +1556,10 @@ paths: schema: type: object properties: - avatar: - $ref: '#/components/schemas/ActorImage' + avatars: + type: array + items: + $ref: '#/components/schemas/ActorImage' '413': description: image file too large headers: @@ -2878,7 +2880,7 @@ paths: type: object properties: id: - $ref: '#/components/schemas/VideoChannel/properties/id' + $ref: '#/components/schemas/id' requestBody: content: application/json: @@ -3010,8 +3012,10 @@ paths: schema: type: object properties: - avatar: - $ref: '#/components/schemas/ActorImage' + avatars: + type: array + items: + $ref: '#/components/schemas/ActorImage' '413': description: image file too large headers: @@ -3064,8 +3068,10 @@ paths: schema: type: object properties: - banner: - $ref: '#/components/schemas/ActorImage' + banners: + type: array + items: + $ref: '#/components/schemas/ActorImage' '413': description: image file too large headers: @@ -5364,10 +5370,10 @@ components: host: type: string format: hostname - avatar: - nullable: true - allOf: - - $ref: '#/components/schemas/ActorImage' + avatars: + type: array + items: + $ref: '#/components/schemas/ActorImage' VideoChannelSummary: properties: id: @@ -5382,10 +5388,10 @@ components: host: type: string format: hostname - avatar: - nullable: true - allOf: - - $ref: '#/components/schemas/ActorImage' + avatars: + type: array + items: + $ref: '#/components/schemas/ActorImage' PlaylistElement: properties: position: @@ -5969,6 +5975,8 @@ components: properties: path: type: string + width: + type: integer createdAt: type: string format: date-time @@ -5986,12 +5994,10 @@ components: host: type: string format: hostname - avatar: - nullable: true - type: object - properties: - path: - type: string + avatars: + type: array + items: + $ref: '#/components/schemas/ActorImage' Actor: properties: id: @@ -6024,8 +6030,6 @@ components: updatedAt: type: string format: date-time - avatar: - $ref: '#/components/schemas/ActorImage' Account: allOf: - $ref: '#/components/schemas/Actor' @@ -6934,7 +6938,7 @@ components: name: $ref: '#/components/schemas/usernameChannel' displayName: - $ref: '#/components/schemas/VideoChannel/properties/displayName' + type: string required: - username - password @@ -6996,46 +7000,47 @@ components: - refresh_token VideoChannel: - properties: - # GET/POST/PUT properties - displayName: - type: string - description: editable name of the channel, displayed in its representations - example: Videos of Framasoft - minLength: 1 - maxLength: 120 - description: - type: string - example: Videos made with <3 by Framasoft - minLength: 3 - maxLength: 1000 - support: - type: string - description: text shown by default on all videos of this channel, to tell the audience how to support it - example: Please support our work on https://soutenir.framasoft.org/en/ <3 - minLength: 3 - maxLength: 1000 - # GET-only properties - id: - readOnly: true - allOf: - - $ref: '#/components/schemas/id' - isLocal: - readOnly: true - type: boolean - updatedAt: - readOnly: true - type: string - format: date-time - ownerAccount: - readOnly: true - nullable: true - type: object + allOf: + - $ref: '#/components/schemas/Actor' + - type: object properties: - id: - type: integer - uuid: - $ref: '#/components/schemas/UUIDv4' + displayName: + type: string + description: editable name of the channel, displayed in its representations + example: Videos of Framasoft + minLength: 1 + maxLength: 120 + description: + type: string + example: Videos made with <3 by Framasoft + minLength: 3 + maxLength: 1000 + support: + type: string + description: text shown by default on all videos of this channel, to tell the audience how to support it + example: Please support our work on https://soutenir.framasoft.org/en/ <3 + minLength: 3 + maxLength: 1000 + isLocal: + readOnly: true + type: boolean + updatedAt: + readOnly: true + type: string + format: date-time + banners: + type: array + items: + $ref: '#/components/schemas/ActorImage' + ownerAccount: + readOnly: true + nullable: true + type: object + properties: + id: + type: integer + uuid: + $ref: '#/components/schemas/UUIDv4' VideoChannelCreate: allOf: - $ref: '#/components/schemas/VideoChannel' diff --git a/support/nginx/peertube b/support/nginx/peertube index 2b1600d97..5d7b4f0f0 100644 --- a/support/nginx/peertube +++ b/support/nginx/peertube @@ -172,7 +172,7 @@ server { # Bypass PeerTube for performance reasons. Optional. # Should be consistent with client-overrides assets list in /server/controllers/client.ts - location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png|default-playlist\.jpg|default-avatar-account\.png|default-avatar-video-channel\.png))$ { + location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png|default-playlist\.jpg|default-avatar-account\.png|default-avatar-account-48x48\.png|default-avatar-video-channel\.png|default-avatar-video-channel-48x48\.png))$ { add_header Cache-Control "public, max-age=31536000, immutable"; # Cache 1 year root /var/www/peertube; -- cgit v1.2.3