@@ -6,14 +6,9 @@ SPDX-License-Identifier: AGPL-3.0-only
66<template >
77<template v-for =" file in note .files " >
88 <div
9- v-if =" (((
10- (prefer.s.nsfw === 'force' || file.isSensitive) &&
11- prefer.s.nsfw !== 'ignore'
12- ) || (prefer.s.dataSaver.media && file.type.startsWith('image/'))) &&
13- !showingFiles.has(file.id)
14- )"
9+ v-if =" isHiding(file)"
1510 :class =" [$style.filePreview, { [$style.square]: square }]"
16- @click =" showingFiles.add (file.id )"
11+ @click =" reveal (file)"
1712 >
1813 <MkDriveFileThumbnail
1914 :file =" file"
@@ -49,6 +44,7 @@ import * as Misskey from 'misskey-js';
4944import { notePage } from ' @/filters/note.js' ;
5045import { i18n } from ' @/i18n.js' ;
5146import { prefer } from ' @/preferences.js' ;
47+ import { shouldHideFileByDefault , canRevealFile } from ' @/utility/sensitive-file.js' ;
5248import bytes from ' @/filters/bytes.js' ;
5349
5450import MkDriveFileThumbnail from ' @/components/MkDriveFileThumbnail.vue' ;
@@ -59,6 +55,24 @@ defineProps<{
5955}>();
6056
6157const showingFiles = ref <Set <string >>(new Set ());
58+
59+ function isHiding(file : Misskey .entities .DriveFile ) {
60+ if (shouldHideFileByDefault (file ) && ! showingFiles .value .has (file .id )) {
61+ if (! file .isSensitive && ! file .type .startsWith (' image/' )) {
62+ return false ;
63+ }
64+ return true ;
65+ }
66+ return false ;
67+ }
68+
69+ async function reveal(file : Misskey .entities .DriveFile ) {
70+ if (! (await canRevealFile (file ))) {
71+ return ;
72+ }
73+
74+ showingFiles .value .add (file .id );
75+ }
6276 </script >
6377
6478<style lang="scss" module>
0 commit comments