From da79f1c2783fa65f164aaf4942ebfa2156b4bf26 Mon Sep 17 00:00:00 2001 From: Innei Date: Wed, 21 Aug 2024 16:34:51 +0800 Subject: [PATCH] feat: mark read for cateogry in ctx menu Signed-off-by: Innei --- src/renderer/src/constants/copy.ts | 2 +- src/renderer/src/hooks/biz/useEntryActions.tsx | 13 ++++++++----- src/renderer/src/hooks/biz/useFeedActions.tsx | 16 ++++++++-------- .../modules/entry-column/components/DateItem.tsx | 4 ++-- .../entry-column/components/mark-all-button.tsx | 6 +++--- .../src/modules/entry-column/hooks/useMarkAll.ts | 2 +- .../src/modules/feed-column/category.tsx | 7 +++++++ 7 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/renderer/src/constants/copy.ts b/src/renderer/src/constants/copy.ts index 4de0d1ce2..e58a1126d 100644 --- a/src/renderer/src/constants/copy.ts +++ b/src/renderer/src/constants/copy.ts @@ -1,5 +1,5 @@ const OpenInBrowser = (_t?: any) => - window.electron ? "Open in Browser" : "Open in New Tab" + window.electron ? "Open in browser" : "Open in new tab" export const COPY_MAP = { OpenInBrowser, diff --git a/src/renderer/src/hooks/biz/useEntryActions.tsx b/src/renderer/src/hooks/biz/useEntryActions.tsx index b79752e8e..459b878e5 100644 --- a/src/renderer/src/hooks/biz/useEntryActions.tsx +++ b/src/renderer/src/hooks/biz/useEntryActions.tsx @@ -189,7 +189,7 @@ export const useEntryActions = ({ }, { key: "copyLink", - name: "Copy Link", + name: "Copy link", className: "i-mgc-link-cute-re", hide: !populatedEntry.entries.url, shortcut: shortcuts.entry.copyLink.key, @@ -223,7 +223,8 @@ export const useEntryActions = ({ "", ), key: "readability", - hide: type === "entryList" || + hide: + type === "entryList" || views[view].wideMode || !populatedEntry.entries.url || !window.electron, @@ -231,7 +232,7 @@ export const useEntryActions = ({ onClick: readabilityToggle, }, { - name: "Save Media to Eagle", + name: "Save media to Eagle", icon: , key: "saveToEagle", hide: @@ -284,7 +285,7 @@ export const useEntryActions = ({ }, { key: "read", - name: `Mark as Read`, + name: `Mark as read`, shortcut: shortcuts.entry.toggleRead.key, className: "i-mgc-round-cute-fi", hide: !!(!!populatedEntry.read || populatedEntry.collections), @@ -294,7 +295,7 @@ export const useEntryActions = ({ }, { key: "unread", - name: `Mark as Unread`, + name: `Mark as unread`, shortcut: shortcuts.entry.toggleRead.key, className: "i-mgc-round-cute-re", hide: !!(!populatedEntry.read || populatedEntry.collections), @@ -317,6 +318,8 @@ export const useEntryActions = ({ read, unread, entryReadabilityStatus, + feed?.ownerUserId, + type, ]) return { diff --git a/src/renderer/src/hooks/biz/useFeedActions.tsx b/src/renderer/src/hooks/biz/useFeedActions.tsx index 8008bd9c2..14057a676 100644 --- a/src/renderer/src/hooks/biz/useFeedActions.tsx +++ b/src/renderer/src/hooks/biz/useFeedActions.tsx @@ -41,7 +41,7 @@ export const useFeedActions = ({ const items: NativeMenuItem[] = [ { type: "text" as const, - label: isEntryList ? "Edit Feed" : "Edit", + label: isEntryList ? "Edit feed" : "Edit", shortcut: "E", click: () => { present({ @@ -54,13 +54,13 @@ export const useFeedActions = ({ }, { type: "text" as const, - label: isEntryList ? "Unfollow Feed" : "Unfollow", + label: isEntryList ? "Unfollow feed" : "Unfollow", shortcut: "Meta+Backspace", click: () => deleteSubscription.mutate(subscription), }, { type: "text" as const, - label: "Navigate to Feed", + label: "Navigate to feed", shortcut: "Meta+G", disabled: !isEntryList || getRouteParams().feedId === feedId, click: () => { @@ -73,7 +73,7 @@ export const useFeedActions = ({ }, { type: "text", - label: "Mark All as Read", + label: "Mark all as read", shortcut: "Meta+Shift+A", disabled: isEntryList, click: () => subscriptionActions.markReadByFeedIds([feedId]), @@ -105,7 +105,7 @@ export const useFeedActions = ({ { type: "text" as const, - label: "Open Feed in Browser", + label: "Open feed in browser", disabled: isEntryList, shortcut: "O", click: () => @@ -113,7 +113,7 @@ export const useFeedActions = ({ }, { type: "text" as const, - label: "Open Site in Browser", + label: "Open site in browser", shortcut: "Meta+O", disabled: isEntryList, click: () => { @@ -129,14 +129,14 @@ export const useFeedActions = ({ }, { type: "text" as const, - label: "Copy Feed URL", + label: "Copy feed URL", disabled: isEntryList, shortcut: "Meta+C", click: () => navigator.clipboard.writeText(feed.url), }, { type: "text" as const, - label: "Copy Feed ID", + label: "Copy feed ID", shortcut: "Meta+Shift+C", disabled: isEntryList, click: () => { diff --git a/src/renderer/src/modules/entry-column/components/DateItem.tsx b/src/renderer/src/modules/entry-column/components/DateItem.tsx index 841fe22b9..83e3317b5 100644 --- a/src/renderer/src/modules/entry-column/components/DateItem.tsx +++ b/src/renderer/src/modules/entry-column/components/DateItem.tsx @@ -13,7 +13,7 @@ import { useState, } from "react" -import { useMarkAll } from "../hooks/useMarkAll" +import { useMarkAllByRoute } from "../hooks/useMarkAll" import { MarkAllReadButton } from "./mark-all-button" const useParseDate = (date: string) => @@ -77,7 +77,7 @@ const UniversalDateItem = ({ const RelativeElement = - const handleMarkAllAsRead = useMarkAll({ + const handleMarkAllAsRead = useMarkAllByRoute({ startTime: startOfDay, endTime: endOfDay, }) diff --git a/src/renderer/src/modules/entry-column/components/mark-all-button.tsx b/src/renderer/src/modules/entry-column/components/mark-all-button.tsx index 4b0d20a3c..7fedcca6e 100644 --- a/src/renderer/src/modules/entry-column/components/mark-all-button.tsx +++ b/src/renderer/src/modules/entry-column/components/mark-all-button.tsx @@ -13,7 +13,7 @@ import type { FC, ReactNode } from "react" import { forwardRef, useState } from "react" import type { MarkAllFilter } from "../hooks/useMarkAll" -import { useMarkAll } from "../hooks/useMarkAll" +import { useMarkAllByRoute } from "../hooks/useMarkAll" interface MarkAllButtonProps { filter?: MarkAllFilter @@ -28,7 +28,7 @@ export const MarkAllReadButton = forwardRef< >(({ filter, className, which = "all", shortcut }, ref) => { const [markPopoverOpen, setMarkPopoverOpen] = useState(false) - const handleMarkAllAsRead = useMarkAll(filter) + const handleMarkAllAsRead = useMarkAllByRoute(filter) return ( @@ -87,7 +87,7 @@ export const FlatMarkAllReadButton: FC = (props) => { const [status, setStatus] = useState<"initial" | "confirm" | "done">( "initial", ) - const handleMarkAll = useMarkAll(filter) + const handleMarkAll = useMarkAllByRoute(filter) if (status === "done") return null const animate = { diff --git a/src/renderer/src/modules/entry-column/hooks/useMarkAll.ts b/src/renderer/src/modules/entry-column/hooks/useMarkAll.ts index 7f8689b69..da743f966 100644 --- a/src/renderer/src/modules/entry-column/hooks/useMarkAll.ts +++ b/src/renderer/src/modules/entry-column/hooks/useMarkAll.ts @@ -7,7 +7,7 @@ export interface MarkAllFilter { startTime: number endTime: number } -export const useMarkAll = (filter?: MarkAllFilter) => { +export const useMarkAllByRoute = (filter?: MarkAllFilter) => { const routerParams = useRouteParms() const { feedId, view } = routerParams const folderIds = useFolderFeedsByFeedId({ diff --git a/src/renderer/src/modules/feed-column/category.tsx b/src/renderer/src/modules/feed-column/category.tsx index 8ba2d1e45..ba1add888 100644 --- a/src/renderer/src/modules/feed-column/category.tsx +++ b/src/renderer/src/modules/feed-column/category.tsx @@ -154,6 +154,13 @@ function FeedCategoryImpl({ }, })), }, + { + type: "text", + label: "Mark as read", + click: () => { + subscriptionActions.markReadByFeedIds(ids) + }, + }, { type: "separator" }, { type: "text",