summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2023-02-07 13:53:18 +0000
committertamaina <tamaina@hotmail.co.jp>2023-02-07 14:24:15 +0000
commit54f789bd555adfc8ecdcabfbc9f88935e212014b (patch)
tree319059f28e8531250f92157b623cd5612a7c17d4
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
downloadmisskey-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.ts18
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;
}