From 17db6d4f3eafcac08e5de333539aba9c5aba902a Mon Sep 17 00:00:00 2001 From: Ivan Kuzmenko <6745157+rndtrash@users.noreply.github.com> Date: Sun, 16 Nov 2025 10:19:41 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=83=D0=BF=D0=BE=D0=BC=D0=B8=D0=BD=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=A2=D0=B5=D0=BB=D0=B5=D0=B3=D1=80=D0=B0=D0=BC=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D1=83=D1=8E=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pages/index.md b/src/pages/index.md index e206d50..ae91af5 100644 --- a/src/pages/index.md +++ b/src/pages/index.md @@ -36,4 +36,7 @@ __Tea Sanctuary__ — это также и сообщество едином Общие вопросы можно задавать в [сообществе Tea Sanctuary](https://teasanctuary.ru/discord). Там же можете написать личное сообщение администраторам. +Есть и другие способы следить за нашими новостями — например, [канал в Telegram](https://t.me/tea_sanctuary), +с комментариями и отдельным чатом. + Наши соцсети и почту для более важных обращений можно найти на странице [Контакты](/contact). From 9b03d0c197e540e850059de538db00e6431a9c67 Mon Sep 17 00:00:00 2001 From: Ivan Kuzmenko <6745157+rndtrash@users.noreply.github.com> Date: Sun, 16 Nov 2025 10:55:18 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=B0=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B0=D1=85?= =?UTF-8?q?=20=D0=B1=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/BlogCard.svelte | 100 +++++++++++++++++++++------ src/lib/components/DateWidget.svelte | 13 +++- src/lib/util/Blogs.ts | 18 +++-- 3 files changed, 101 insertions(+), 30 deletions(-) diff --git a/src/lib/components/BlogCard.svelte b/src/lib/components/BlogCard.svelte index dd02d40..25bf97d 100644 --- a/src/lib/components/BlogCard.svelte +++ b/src/lib/components/BlogCard.svelte @@ -10,7 +10,9 @@ import { BLOG_POST_FRESHNESS_MILLIS, blogPostTypeToIcon, - blogPostTypeToString + blogPostTypeToString, + EventStatus, + postEventStatus } from '$lib/util/Blogs'; import DateWidget from '$lib/components/DateWidget.svelte'; import Icon from '@iconify/svelte'; @@ -26,15 +28,20 @@ let isPostNew = $state(false); let isPostUpdated = $state(false); let isPostFresh = $derived(isPostNew || isPostUpdated); - // TODO: rndtrash: события и их актуальность + let eventStatus: EventStatus | undefined = $state(undefined); + let isPostEventOfInterest = $derived( + type === 'event' && + (eventStatus === EventStatus.NotStarted || eventStatus === EventStatus.InProgress) + ); + let eventHasStarted = $derived(eventStatus === EventStatus.InProgress); 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; + eventStatus = postEventStatus(post); }); /** @@ -71,7 +78,15 @@ href="/blog/{post.slug}" class="blog-card {fullHeight ? 'min-h-full' : ''} - {isPostUpdated ? 'updated' : isPostNew ? 'new' : ''} + {isPostEventOfInterest + ? eventHasStarted + ? 'eventOngoing' + : 'eventPreStart' + : isPostUpdated + ? 'updated' + : isPostNew + ? 'new' + : ''} {shortClass('flex-col justify-baseline')} {fullClass('flex-row justify-stretch', 'sm:flex-row sm:justify-stretch')}" > @@ -87,7 +102,15 @@ alt={post.thumbnailAlt ?? 'Миниатюра поста'} /> {/if} - {#if isPostFresh} + {#if isPostEventOfInterest} +