From 7ba07adff1e7cd3292cc308f3e70803fe11fb8ce Mon Sep 17 00:00:00 2001 From: Innei Date: Tue, 29 Oct 2024 23:52:48 +0800 Subject: [PATCH] feat: zen mode and hide extra badge Signed-off-by: Innei --- apps/renderer/src/atoms/settings/ui.ts | 2 +- .../renderer/src/modules/feed-column/item.tsx | 6 ++- .../src/modules/settings/tabs/apperance.tsx | 39 ++++++++++++++++++- locales/settings/en.json | 5 +++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/apps/renderer/src/atoms/settings/ui.ts b/apps/renderer/src/atoms/settings/ui.ts index bcda1ddb2..da103aaaa 100644 --- a/apps/renderer/src/atoms/settings/ui.ts +++ b/apps/renderer/src/atoms/settings/ui.ts @@ -8,10 +8,10 @@ export const createDefaultSettings = (): UISettings => ({ // Sidebar entryColWidth: 356, feedColWidth: 256, + hideExtraBadge: false, opaqueSidebar: false, sidebarShowUnreadCount: true, - hideExtraBadge: false, // Global UI uiTextSize: 16, diff --git a/apps/renderer/src/modules/feed-column/item.tsx b/apps/renderer/src/modules/feed-column/item.tsx index 8eff896dd..a6855ecbf 100644 --- a/apps/renderer/src/modules/feed-column/item.tsx +++ b/apps/renderer/src/modules/feed-column/item.tsx @@ -16,6 +16,7 @@ import { memo, useCallback, useState } from "react" import { useTranslation } from "react-i18next" import { getMainContainerElement } from "~/atoms/dom" +import { useUISettingKey } from "~/atoms/settings/ui" import { useFeedActions, useInboxActions, useListActions } from "~/hooks/biz/useFeedActions" import { useNavigateEntry } from "~/hooks/biz/useNavigateEntry" import { useRouteParamsSelector } from "~/hooks/biz/useRouteParams" @@ -94,6 +95,7 @@ const FeedItemImpl = ({ view, feedId, className }: FeedItemProps) => { useAnyPointDown(() => { isContextMenuOpen && setIsContextMenuOpen(false) }) + const hideExtraBadge = useUISettingKey("hideExtraBadge") if (!feed) return null const isFeed = feed.type === "feed" || !feed.type @@ -160,8 +162,8 @@ const FeedItemImpl = ({ view, feedId, className }: FeedItemProps) => { >
{getPreferredTitle(feed)}
- {isFeed && } - {isFeed && } + {isFeed && !hideExtraBadge && } + {isFeed && !hideExtraBadge && } {isFeed && feed.errorAt && ( diff --git a/apps/renderer/src/modules/settings/tabs/apperance.tsx b/apps/renderer/src/modules/settings/tabs/apperance.tsx index 4b7980896..9a3027077 100644 --- a/apps/renderer/src/modules/settings/tabs/apperance.tsx +++ b/apps/renderer/src/modules/settings/tabs/apperance.tsx @@ -17,12 +17,14 @@ import { useUISettingSelector, useUISettingValue, } from "~/atoms/settings/ui" +import { setFeedColumnShow, useFeedColumnShow } from "~/atoms/sidebar" import { isElectronBuild } from "~/constants" import { useSetTheme } from "~/hooks/common" -import { SettingTabbedSegment } from "../control" +import { SettingDescription, SettingSwitch, SettingTabbedSegment } from "../control" import { createDefineSettingItem } from "../helper/builder" import { createSettingBuilder } from "../helper/setting-builder" +import { SettingItemGroup } from "../section" import { ContentFontSelector, UIFontSelector } from "../sections/fonts" const SettingBuilder = createSettingBuilder(useUISettingValue) @@ -59,6 +61,16 @@ export const SettingAppearance = () => { label: t("appearance.sidebar_show_unread_count.label"), }), + { + type: "title", + value: t("appearance.sidebar"), + }, + defineItem("hideExtraBadge", { + label: t("appearance.hide_extra_badge.label"), + description: t("appearance.hide_extra_badge.description"), + }), + ZenMode, + { type: "title", value: t("appearance.fonts"), @@ -217,3 +229,28 @@ export const AppThemeSegment = () => { /> ) } + +const ZenMode = () => { + const { t } = useTranslation("settings") + const feedColumnShow = useFeedColumnShow() + const isWideMode = useUISettingKey("wideMode") + return ( + + { + if (checked) { + setFeedColumnShow(false) + setUISetting("wideMode", true) + } else { + setFeedColumnShow(true) + setUISetting("wideMode", false) + } + }} + label={t("appearance.zen_mode.label")} + /> + {t("appearance.zen_mode.description")} + + ) +} diff --git a/locales/settings/en.json b/locales/settings/en.json index d58863686..8386015e9 100644 --- a/locales/settings/en.json +++ b/locales/settings/en.json @@ -58,6 +58,8 @@ "appearance.general": "General", "appearance.guess_code_language.description": "Major programming languages that use models to infer unlabeled code blocks", "appearance.guess_code_language.label": "Guess code language", + "appearance.hide_extra_badge.description": "Hide the special badge of the feed in the sidebar, e.g. Boost,Claimed", + "appearance.hide_extra_badge.label": "Hide special badge", "appearance.hide_recent_reader.description": "Hide the recent reader in the entry header.", "appearance.hide_recent_reader.label": "Hide recent reader", "appearance.misc": "Misc", @@ -70,6 +72,7 @@ "appearance.reduce_motion.label": "Reduce motion", "appearance.save": "Save", "appearance.show_dock_badge.label": "Show as Dock badge", + "appearance.sidebar": "Sidebar", "appearance.sidebar_show_unread_count.label": "Show in sidebar", "appearance.sidebar_title": "Appearance", "appearance.text_size": "Text size", @@ -82,6 +85,8 @@ "appearance.unread_count": "Unread count", "appearance.use_pointer_cursor.description": "Change the cursor to a pointer when hovering over any interactive element.", "appearance.use_pointer_cursor.label": "Use pointer cursors", + "appearance.zen_mode.description": "Zen mode is an undisturbed reading mode that allows you to focus on the content without any interference. Enabling Zen mode will hide the sidebar.", + "appearance.zen_mode.label": "Zen mode", "common.give_star": "Love our product? Give us a star on GitHub!", "feeds.claimTips": "To claim your feeds and receive tips, right-click on the feed in your subscription list and select Claim.", "feeds.noFeeds": "No claimed feeds",