diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-02-07 13:53:18 +0000 |
|---|---|---|
| committer | tamaina <tamaina@hotmail.co.jp> | 2023-02-07 14:24:15 +0000 |
| commit | 54f789bd555adfc8ecdcabfbc9f88935e212014b (patch) | |
| tree | 319059f28e8531250f92157b623cd5612a7c17d4 | |
| parent | Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff) | |
| download | misskey-54f789bd555adfc8ecdcabfbc9f88935e212014b.tar.gz misskey-54f789bd555adfc8ecdcabfbc9f88935e212014b.tar.bz2 misskey-54f789bd555adfc8ecdcabfbc9f88935e212014b.zip | |
fix(server): DriveFileEntityService.getPublicUrl調整
- 外部MediaProxyではビデオのサムネイルを生成できないので外部に投げない
- thumbnailUrlが存在しない場合、画像の場合はプロキシで圧縮させる
| -rw-r--r-- | packages/backend/src/core/entities/DriveFileEntityService.ts | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/packages/backend/src/core/entities/DriveFileEntityService.ts b/packages/backend/src/core/entities/DriveFileEntityService.ts index efc196f74a..9dd115d45a 100644 --- a/packages/backend/src/core/entities/DriveFileEntityService.ts +++ b/packages/backend/src/core/entities/DriveFileEntityService.ts @@ -20,6 +20,7 @@ type PackOptions = { withUser?: boolean, }; import { bindThis } from '@/decorators.js'; +import { isMimeImage } from '@/misc/is-mime-image.js'; @Injectable() export class DriveFileEntityService { @@ -82,7 +83,9 @@ export class DriveFileEntityService { // リモートかつメディアプロキシ if (file.uri != null && file.userHost != null && this.config.externalMediaProxyEnabled) { - return proxiedUrl(file.uri); + if (!(mode === 'static' && file.type.startsWith('video'))) { + return proxiedUrl(file.uri); + } } // リモートかつ期限切れはローカルプロキシを試みる @@ -91,20 +94,19 @@ export class DriveFileEntityService { if (key && !key.match('/')) { // 古いものはここにオブジェクトストレージキーが入ってるので除外 const url = `${this.config.url}/files/${key}`; - if (mode === 'avatar') return proxiedUrl(url); + if (mode === 'avatar') return proxiedUrl(file.uri); return url; } } - const isImage = file.type && ['image/png', 'image/apng', 'image/gif', 'image/jpeg', 'image/webp', 'image/avif', 'image/svg+xml'].includes(file.type); + const url = file.webpublicUrl ?? file.url; if (mode === 'static') { - return file.thumbnailUrl ?? (isImage ? (file.webpublicUrl ?? file.url) : null); + return file.thumbnailUrl ?? (isMimeImage(file.type, 'sharp-convertible-image') ? proxiedUrl(url) : null); + } + if (mode === 'avatar') { + return proxiedUrl(url); } - - const url = file.webpublicUrl ?? file.url; - - if (mode === 'avatar') return proxiedUrl(url); return url; } |