diff --git a/src/lib/components/BlogCard.svelte b/src/lib/components/BlogCard.svelte index b40213d..dd02d40 100644 --- a/src/lib/components/BlogCard.svelte +++ b/src/lib/components/BlogCard.svelte @@ -14,20 +14,29 @@ } from '$lib/util/Blogs'; import DateWidget from '$lib/components/DateWidget.svelte'; import Icon from '@iconify/svelte'; + import { onMount } from 'svelte'; - export let post: App.BlogPost; - export let size: BlogCardSize = BlogCardSize.Both; - export let fullHeight = false; + let { + post, + size = BlogCardSize.Both, + fullHeight = false + }: { post: App.BlogPost; size: BlogCardSize; fullHeight: boolean } = $props(); const type: App.BlogPostType = post.type ?? 'article'; - const dateNow = new Date().valueOf(); - const isPostNew = dateNow - new Date(post.date!).valueOf() <= BLOG_POST_FRESHNESS_MILLIS; - const isPostUpdated = - post.dateChanged != null && - dateNow - new Date(post.dateChanged).valueOf() <= BLOG_POST_FRESHNESS_MILLIS; - const isPostFresh = isPostNew || isPostUpdated; + let isPostNew = $state(false); + let isPostUpdated = $state(false); + let isPostFresh = $derived(isPostNew || isPostUpdated); // TODO: rndtrash: события и их актуальность + onMount(() => { + // rndtrash: Выполняем проверки на клиенте, чтобы плашка не скомпилировалась и потом не потеряла актуальность + const dateNow = new Date().valueOf(); + isPostNew = dateNow - new Date(post.date!).valueOf() <= BLOG_POST_FRESHNESS_MILLIS; + isPostUpdated = + post.dateChanged != null && + dateNow - new Date(post.dateChanged).valueOf() <= BLOG_POST_FRESHNESS_MILLIS; + }); + /** * rndtrash: пришлось дублировать классы с модификатором и без, потому что Tailwind просто не понимает, * когда его классы склеивают из нескольких частей