From e006cdb09b01d90edccc4d75675adaa10eedbbfa Mon Sep 17 00:00:00 2001 From: Ivan Kuzmenko <6745157+rndtrash@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:32:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B1=D0=BB=D0=BE=D0=B3=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D1=82=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D1=82=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=BD=D0=B0=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/BlogCard.svelte | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) 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 просто не понимает, * когда его классы склеивают из нескольких частей