From 850d1d00054db27eb171eb879eb7b25ccd7bf4e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
 <67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 1 Feb 2025 13:51:45 +0900
Subject: [PATCH] =?UTF-8?q?fix(frontend):=20MkDriveFileThumbnail=20/=20MkN?=
 =?UTF-8?q?oteMediaGrid=E3=81=AE=E4=BF=AE=E6=AD=A3=20(#15365)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* fix(frontend): MkDriveFileThumbnailのpropsのタイポ修正

* Update Changelog

* fix: MkNoteMediaGridをデータセーバーに対応させる
---
 CHANGELOG.md                                       |  1 +
 .../src/components/MkDriveFileThumbnail.vue        |  2 +-
 .../frontend/src/components/MkNoteMediaGrid.vue    | 14 ++++++++++++--
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07f392782f..601bf743bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
 
 ### Client
 - Fix: 一部環境でセンシティブなファイルを含むノートの非表示が効かない問題 
+- Fix: データセーバー有効時にもユーザーページの「ファイル」タブで画像が読み込まれてしまう問題を修正
 
 ### Server
 - Fix: 個別お知らせページのmetaタグ出力の条件が間違っていたのを修正
diff --git a/packages/frontend/src/components/MkDriveFileThumbnail.vue b/packages/frontend/src/components/MkDriveFileThumbnail.vue
index 874d9b04cf..6e0ae36880 100644
--- a/packages/frontend/src/components/MkDriveFileThumbnail.vue
+++ b/packages/frontend/src/components/MkDriveFileThumbnail.vue
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 		:alt="file.name"
 		:title="file.name"
 		:cover="fit !== 'contain'"
-		:forceBlurHash="forceBlurhash"
+		:forceBlurhash="forceBlurhash"
 	/>
 	<i v-else-if="is === 'image'" class="ti ti-photo" :class="$style.icon"></i>
 	<i v-else-if="is === 'video'" class="ti ti-video" :class="$style.icon"></i>
diff --git a/packages/frontend/src/components/MkNoteMediaGrid.vue b/packages/frontend/src/components/MkNoteMediaGrid.vue
index 520421bfb7..bf105c3c27 100644
--- a/packages/frontend/src/components/MkNoteMediaGrid.vue
+++ b/packages/frontend/src/components/MkNoteMediaGrid.vue
@@ -6,7 +6,12 @@ SPDX-License-Identifier: AGPL-3.0-only
 <template>
 	<template v-for="file in note.files">
 		<div
-			v-if="(defaultStore.state.nsfw === 'force' || file.isSensitive) && defaultStore.state.nsfw !== 'ignore' && !showingFiles.has(file.id)"
+			v-if="(((
+					(defaultStore.state.nsfw === 'force' || file.isSensitive) &&
+					defaultStore.state.nsfw !== 'ignore'
+				) || (defaultStore.state.dataSaver.media && file.type.startsWith('image/'))) &&
+				!showingFiles.has(file.id)
+			)"
 			:class="[$style.filePreview, { [$style.square]: square }]"
 			@click="showingFiles.add(file.id)"
 		>
@@ -20,7 +25,8 @@ SPDX-License-Identifier: AGPL-3.0-only
 			/>
 			<div :class="$style.sensitive">
 				<div>
-					<div><i class="ti ti-eye-exclamation"></i> {{ i18n.ts.sensitive }}</div>
+					<div v-if="file.isSensitive"><i class="ti ti-eye-exclamation"></i> {{ i18n.ts.sensitive }}{{ defaultStore.state.dataSaver.media && file.size ? ` (${bytes(file.size)})` : '' }}</div>
+					<div v-else><i class="ti ti-photo"></i> {{ defaultStore.state.dataSaver.media && file.size ? bytes(file.size) : i18n.ts.image }}</div>
 					<div>{{ i18n.ts.clickToShow }}</div>
 				</div>
 			</div>
@@ -43,6 +49,7 @@ import { notePage } from '@/filters/note.js';
 import { i18n } from '@/i18n.js';
 import * as Misskey from 'misskey-js';
 import { defaultStore } from '@/store.js';
+import bytes from '@/filters/bytes.js';
 
 import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue';
 
@@ -91,6 +98,9 @@ const showingFiles = ref<Set<string>>(new Set());
 	display: grid;
   place-items: center;
 	font-size: 0.8em;
+	text-align: center;
+	padding: 8px;
+	box-sizing: border-box;
 	color: #fff;
 	background: rgba(0, 0, 0, 0.5);
 	backdrop-filter: blur(5px);
-- 
GitLab