From 562e69910eafc35c4e1b9db81940e5ee2fa12ade Mon Sep 17 00:00:00 2001 From: DIYgod Date: Tue, 25 Jun 2024 22:13:41 +0800 Subject: [PATCH] feat: dot unread indicator --- src/renderer/src/lib/constants.tsx | 2 +- src/renderer/src/modules/entry-column/article-item.tsx | 2 +- src/renderer/src/modules/entry-column/audio-item.tsx | 10 +++++++--- src/renderer/src/modules/entry-column/item.tsx | 2 +- .../src/modules/entry-column/notification-item.tsx | 10 +++++++--- src/renderer/src/modules/entry-column/picture-item.tsx | 6 +++++- .../src/modules/entry-column/social-media-item.tsx | 5 ++++- src/renderer/src/modules/entry-column/video-item.tsx | 5 ++++- src/renderer/src/styles/colors.css | 4 ++-- 9 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/lib/constants.tsx b/src/renderer/src/lib/constants.tsx index 6f806c88c..486db7b9c 100644 --- a/src/renderer/src/lib/constants.tsx +++ b/src/renderer/src/lib/constants.tsx @@ -11,7 +11,7 @@ export const views = [ { name: "Articles", icon: , - className: "text-amber-700", + className: "text-orange-600", translation: "title,description", }, { diff --git a/src/renderer/src/modules/entry-column/article-item.tsx b/src/renderer/src/modules/entry-column/article-item.tsx index 8566c04d9..917658e94 100644 --- a/src/renderer/src/modules/entry-column/article-item.tsx +++ b/src/renderer/src/modules/entry-column/article-item.tsx @@ -18,7 +18,7 @@ export function ArticleItem({ entryId, entryPreview, translation }: UniversalIte if (!entry) return return ( -
+
diff --git a/src/renderer/src/modules/entry-column/audio-item.tsx b/src/renderer/src/modules/entry-column/audio-item.tsx index abb3dcaf1..60a795dc7 100644 --- a/src/renderer/src/modules/entry-column/audio-item.tsx +++ b/src/renderer/src/modules/entry-column/audio-item.tsx @@ -1,4 +1,5 @@ import { FeedIcon } from "@renderer/components/feed-icon" +import { useAsRead } from "@renderer/hooks" import dayjs from "@renderer/lib/dayjs" import { cn } from "@renderer/lib/utils" import { EntryTranslation } from "@renderer/modules/entry-column/translation" @@ -9,13 +10,16 @@ import type { UniversalItemProps } from "./types" export function AudioItem({ entryId, entryPreview, translation }: UniversalItemProps) { const entry = useEntry(entryId) || entryPreview + + const asRead = useAsRead(entry) + if (!entry) return return ( -
+
-
- {entry.feeds.title} +
+ {entry.feeds.title} · {dayjs diff --git a/src/renderer/src/modules/entry-column/item.tsx b/src/renderer/src/modules/entry-column/item.tsx index 51edd67e1..94f01e4fa 100644 --- a/src/renderer/src/modules/entry-column/item.tsx +++ b/src/renderer/src/modules/entry-column/item.tsx @@ -122,7 +122,7 @@ function EntryItemImpl({ entry, view }: { entry: EntryModel, view?: number }) { !views[view || 0].wideMode && isActive && "bg-theme-item-active", - asRead ? "text-zinc-500/90" : "text-zinc-900 dark:text-white/90", + asRead ? "text-zinc-700" : "text-zinc-900 dark:text-white/90", )} onClick={handleClick} onDoubleClick={handleDoubleClick} diff --git a/src/renderer/src/modules/entry-column/notification-item.tsx b/src/renderer/src/modules/entry-column/notification-item.tsx index da5f4901c..92e51c2af 100644 --- a/src/renderer/src/modules/entry-column/notification-item.tsx +++ b/src/renderer/src/modules/entry-column/notification-item.tsx @@ -1,4 +1,5 @@ import { FeedIcon } from "@renderer/components/feed-icon" +import { useAsRead } from "@renderer/hooks" import dayjs from "@renderer/lib/dayjs" import { cn } from "@renderer/lib/utils" import { EntryTranslation } from "@renderer/modules/entry-column/translation" @@ -9,13 +10,16 @@ import type { UniversalItemProps } from "./types" export function NotificationItem({ entryId, entryPreview, translation }: UniversalItemProps) { const entry = useEntry(entryId) || entryPreview + + const asRead = useAsRead(entry) + if (!entry) return return ( -
+
-
- {entry.feeds.title} +
+ {entry.feeds.title} · {dayjs diff --git a/src/renderer/src/modules/entry-column/picture-item.tsx b/src/renderer/src/modules/entry-column/picture-item.tsx index aeb94c14f..7193112aa 100644 --- a/src/renderer/src/modules/entry-column/picture-item.tsx +++ b/src/renderer/src/modules/entry-column/picture-item.tsx @@ -1,6 +1,7 @@ import { FeedIcon } from "@renderer/components/feed-icon" import { SwipeImages } from "@renderer/components/ui/image/swipe-images" import { ReactVirtuosoItemPlaceholder } from "@renderer/components/ui/placeholder" +import { useAsRead } from "@renderer/hooks" import dayjs from "@renderer/lib/dayjs" import { cn } from "@renderer/lib/utils" import { EntryTranslation } from "@renderer/modules/entry-column/translation" @@ -11,6 +12,9 @@ import type { UniversalItemProps } from "./types" export function PictureItem({ entryId, entryPreview, translation }: UniversalItemProps) { const entry = useEntry(entryId) || entryPreview + + const asRead = useAsRead(entry) + const previewImage = usePreviewImages() if (!entry) return return ( @@ -26,7 +30,7 @@ export function PictureItem({ entryId, entryPreview, translation }: UniversalIte }} />
-
+
return ( -
+
diff --git a/src/renderer/src/modules/entry-column/video-item.tsx b/src/renderer/src/modules/entry-column/video-item.tsx index 1fe3d266f..efb6b195e 100644 --- a/src/renderer/src/modules/entry-column/video-item.tsx +++ b/src/renderer/src/modules/entry-column/video-item.tsx @@ -1,5 +1,6 @@ import { FeedIcon } from "@renderer/components/feed-icon" import { Image } from "@renderer/components/ui/image" +import { useAsRead } from "@renderer/hooks" import dayjs from "@renderer/lib/dayjs" import { urlToIframe } from "@renderer/lib/url-to-iframe" import { cn } from "@renderer/lib/utils" @@ -13,6 +14,8 @@ import type { UniversalItemProps } from "./types" export function VideoItem({ entryId, entryPreview, translation }: UniversalItemProps) { const entry = useEntry(entryId) || entryPreview + const asRead = useAsRead(entry) + const iframeSrc = useMemo(() => urlToIframe(entry?.entries.url), [entry?.entries.url]) const ref = useRef(null) @@ -50,7 +53,7 @@ export function VideoItem({ entryId, entryPreview, translation }: UniversalItemP /> )}
-
+
{translation?.title || entry.entries.title} {!!entry.collections && ( diff --git a/src/renderer/src/styles/colors.css b/src/renderer/src/styles/colors.css index 4bb784d5f..3b28f5c51 100644 --- a/src/renderer/src/styles/colors.css +++ b/src/renderer/src/styles/colors.css @@ -1,6 +1,6 @@ :root { --fo-vibrancy-background: theme(colors.native.active); - --fo-vibrancy-foreground: 0, 0%, 50%; + --fo-vibrancy-foreground: 0, 0%, 45%; --fo-text-primary: 0, 0%, 10%; /* TODO replace with own color */ @@ -17,7 +17,7 @@ } [data-theme="dark"] { - --fo-vibrancy-foreground: 0, 0%, 63%; + --fo-vibrancy-foreground: 0, 0%, 83%; --fo-vibrancy-background: theme(colors.native.active);