summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkGalleryPostPreview.vue
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2023-04-06 08:19:49 +0900
committerGitHub <noreply@github.com>2023-04-06 08:19:49 +0900
commit3b3f683f8cdff33c8c745e1da99596e7499ca2d6 (patch)
treeb94e01d12a668cf142fa3859e965aac9174bea34 /packages/frontend/src/components/MkGalleryPostPreview.vue
parentdocs: thanks (#10487) (diff)
downloadsharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.tar.gz
sharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.tar.bz2
sharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.zip
feat(#8149): respect nsfw settings on gallery list (#10481)
* feat(#8149): respect nsfw settings on gallery list * ci(#10336): use pull_request * test(#8149): add interaction tests * test(#10336): use `waitFor` * chore: transition
Diffstat (limited to 'packages/frontend/src/components/MkGalleryPostPreview.vue')
-rw-r--r--packages/frontend/src/components/MkGalleryPostPreview.vue39
1 files changed, 35 insertions, 4 deletions
diff --git a/packages/frontend/src/components/MkGalleryPostPreview.vue b/packages/frontend/src/components/MkGalleryPostPreview.vue
index 2c5032119f..944f5ad97b 100644
--- a/packages/frontend/src/components/MkGalleryPostPreview.vue
+++ b/packages/frontend/src/components/MkGalleryPostPreview.vue
@@ -1,7 +1,10 @@
<template>
-<MkA :to="`/gallery/${post.id}`" class="ttasepnz _panel" tabindex="-1">
+<MkA :to="`/gallery/${post.id}`" class="ttasepnz _panel" tabindex="-1" @pointerenter="enterHover" @pointerleave="leaveHover">
<div class="thumbnail">
- <ImgWithBlurhash class="img" :src="post.files[0].thumbnailUrl" :hash="post.files[0].blurhash"/>
+ <ImgWithBlurhash class="img" :hash="post.files[0].blurhash"/>
+ <Transition>
+ <ImgWithBlurhash v-if="show" class="img layered" :src="post.files[0].thumbnailUrl" :hash="post.files[0].blurhash"/>
+ </Transition>
</div>
<article>
<header>
@@ -15,12 +18,25 @@
</template>
<script lang="ts" setup>
-import { } from 'vue';
+import * as misskey from 'misskey-js';
+import { computed, ref } from 'vue';
import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue';
+import { defaultStore } from '@/store';
const props = defineProps<{
- post: any;
+ post: misskey.entities.GalleryPost;
}>();
+
+const hover = ref(false);
+const show = computed(() => defaultStore.state.nsfw === 'ignore' || defaultStore.state.nsfw === 'respect' && !props.post.isSensitive || hover.value);
+
+function enterHover(): void {
+ hover.value = true;
+}
+
+function leaveHover(): void {
+ hover.value = false;
+}
</script>
<style lang="scss" scoped>
@@ -56,6 +72,21 @@ const props = defineProps<{
width: 100%;
height: 100%;
object-fit: cover;
+
+ &.layered {
+ position: absolute;
+ top: 0;
+
+ &.v-enter-active,
+ &.v-leave-active {
+ transition: opacity 0.5s ease;
+ }
+
+ &.v-enter-from,
+ &.v-leave-to {
+ opacity: 0;
+ }
+ }
}
}