summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkNoteMediaGrid.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/components/MkNoteMediaGrid.vue')
-rw-r--r--packages/frontend/src/components/MkNoteMediaGrid.vue28
1 files changed, 21 insertions, 7 deletions
diff --git a/packages/frontend/src/components/MkNoteMediaGrid.vue b/packages/frontend/src/components/MkNoteMediaGrid.vue
index 7e900b28fa..e46456d614 100644
--- a/packages/frontend/src/components/MkNoteMediaGrid.vue
+++ b/packages/frontend/src/components/MkNoteMediaGrid.vue
@@ -6,14 +6,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<template v-for="file in note.files">
<div
- v-if="(((
- (prefer.s.nsfw === 'force' || file.isSensitive) &&
- prefer.s.nsfw !== 'ignore'
- ) || (prefer.s.dataSaver.media && file.type.startsWith('image/'))) &&
- !showingFiles.has(file.id)
- )"
+ v-if="isHiding(file)"
:class="[$style.filePreview, { [$style.square]: square }]"
- @click="showingFiles.add(file.id)"
+ @click="reveal(file)"
>
<MkDriveFileThumbnail
:file="file"
@@ -49,6 +44,7 @@ import * as Misskey from 'misskey-js';
import { notePage } from '@/filters/note.js';
import { i18n } from '@/i18n.js';
import { prefer } from '@/preferences.js';
+import { shouldHideFileByDefault, canRevealFile } from '@/utility/sensitive-file.js';
import bytes from '@/filters/bytes.js';
import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue';
@@ -59,6 +55,24 @@ defineProps<{
}>();
const showingFiles = ref<Set<string>>(new Set());
+
+function isHiding(file: Misskey.entities.DriveFile) {
+ if (shouldHideFileByDefault(file) && !showingFiles.value.has(file.id)) {
+ if (!file.isSensitive && !file.type.startsWith('image/')) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+}
+
+async function reveal(file: Misskey.entities.DriveFile) {
+ if (!(await canRevealFile(file))) {
+ return;
+ }
+
+ showingFiles.value.add(file.id);
+}
</script>
<style lang="scss" module>