From 64791a716088c30cf94c3334b203162ab03401fd Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 24 May 2025 13:59:26 +0900
Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E3=83=A6=E3=83=BC=E3=82=B6?=
=?UTF-8?q?=E3=81=AB=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=83=95?=
=?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E7=A8=AE=E5=88=A5=E3=81=A8=E3=80=81?=
=?UTF-8?q?=E5=AE=9F=E9=9A=9B=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?=
=?UTF-8?q?=E7=A8=AE=E5=88=A5=E3=81=8C=E7=95=B0=E3=81=AA=E3=82=8A=E3=80=81?=
=?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E3=82=A2=E3=83=83?=
=?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89=E3=81=99=E3=82=8B=E3=81=93?=
=?UTF-8?q?=E3=81=A8=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=99=E3=82=8B=E3=81=93?=
=?UTF-8?q?=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?=
=?UTF-8?q?=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix #16091
---
locales/index.d.ts | 4 +++
locales/ja-JP.yml | 1 +
.../src/components/MkUploaderDialog.vue | 5 +++-
.../frontend/src/pages/admin/roles.editor.vue | 5 +++-
packages/frontend/src/pages/admin/roles.vue | 4 +++
packages/frontend/src/utility/drive.ts | 30 ++++++++++---------
6 files changed, 33 insertions(+), 16 deletions(-)
diff --git a/locales/index.d.ts b/locales/index.d.ts
index b3f5ff4938..b6b69f3ebe 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -7753,6 +7753,10 @@ export interface Locale extends ILocale {
* MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)
*/
"uploadableFileTypes_caption": string;
+ /**
+ * ファイルによっては種別を判定できないことがあります。そのようなファイルを許可する場合は {x} を指定に追加してください。
+ */
+ "uploadableFileTypes_caption2": ParameterizedString<"x">;
};
"_condition": {
/**
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 44e6af61c7..a4081b1bf9 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -2007,6 +2007,7 @@ _role:
chatAvailability: "チャットを許可"
uploadableFileTypes: "アップロード可能なファイル種別"
uploadableFileTypes_caption: "MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)"
+ uploadableFileTypes_caption2: "ファイルによっては種別を判定できないことがあります。そのようなファイルを許可する場合は {x} を指定に追加してください。"
_condition:
roleAssignedTo: "マニュアルロールにアサイン済み"
isLocal: "ローカルユーザー"
diff --git a/packages/frontend/src/components/MkUploaderDialog.vue b/packages/frontend/src/components/MkUploaderDialog.vue
index 4c928c7f6a..3f5f0776a8 100644
--- a/packages/frontend/src/components/MkUploaderDialog.vue
+++ b/packages/frontend/src/components/MkUploaderDialog.vue
@@ -73,7 +73,10 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}
- {{ i18n.ts._uploader.allowedTypes }}: {{ $i.policies.uploadableFileTypes.join(', ') }}
+
+
+
+
diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue
index 5da969b835..24c3160fdd 100644
--- a/packages/frontend/src/pages/admin/roles.editor.vue
+++ b/packages/frontend/src/pages/admin/roles.editor.vue
@@ -418,7 +418,10 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._role.useBaseValue }}
- {{ i18n.ts._role._options.uploadableFileTypes_caption }}
+
+ {{ i18n.ts._role._options.uploadableFileTypes_caption }}
+ {{ i18n.tsx._role._options.uploadableFileTypes_caption2({ x: 'application/octet-stream' }) }}
+
{{ i18n.ts._role.priority }}
diff --git a/packages/frontend/src/pages/admin/roles.vue b/packages/frontend/src/pages/admin/roles.vue
index c70ae12851..ef6e25685d 100644
--- a/packages/frontend/src/pages/admin/roles.vue
+++ b/packages/frontend/src/pages/admin/roles.vue
@@ -150,6 +150,10 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._role._options.uploadableFileTypes }}
...
+
+ {{ i18n.ts._role._options.uploadableFileTypes_caption }}
+ {{ i18n.tsx._role._options.uploadableFileTypes_caption2({ x: 'application/octet-stream' }) }}
+
diff --git a/packages/frontend/src/utility/drive.ts b/packages/frontend/src/utility/drive.ts
index de473c9b11..f171a4d14d 100644
--- a/packages/frontend/src/utility/drive.ts
+++ b/packages/frontend/src/utility/drive.ts
@@ -39,20 +39,22 @@ export function uploadFile(file: File | Blob, options: {
const filePromise = new Promise((resolve, reject) => {
if ($i == null) return reject();
- const allowedMimeTypes = $i.policies.uploadableFileTypes;
- const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
- if (mimeType === '*' || mimeType === '*/*') return true;
- if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
- return file.type === mimeType;
- });
- if (!isAllowedMimeType) {
- os.alert({
- type: 'error',
- title: i18n.ts.failedToUpload,
- text: i18n.ts.cannotUploadBecauseUnallowedFileType,
- });
- return reject();
- }
+ // こっち側で検出するMIME typeとサーバーで検出するMIME typeは異なる場合があるため、こっち側ではやらないことにする
+ // https://github.com/misskey-dev/misskey/issues/16091
+ //const allowedMimeTypes = $i.policies.uploadableFileTypes;
+ //const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
+ // if (mimeType === '*' || mimeType === '*/*') return true;
+ // if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
+ // return file.type === mimeType;
+ //});
+ //if (!isAllowedMimeType) {
+ // os.alert({
+ // type: 'error',
+ // title: i18n.ts.failedToUpload,
+ // text: i18n.ts.cannotUploadBecauseUnallowedFileType,
+ // });
+ // return reject();
+ //}
if ((file.size > instance.maxFileSize) || (file.size > ($i.policies.maxFileSizeMb * 1024 * 1024))) {
os.alert({