Skip to content

Commit 23fd936

Browse files
committed
feat: allow disable auto group behavior
close #1602
1 parent 24017df commit 23fd936

File tree

6 files changed

+27
-3
lines changed

6 files changed

+27
-3
lines changed

apps/renderer/src/atoms/settings/general.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ const createDefaultSettings = (): GeneralSettings => ({
1212
sendAnonymousData: true,
1313
reduceRefetch: true,
1414

15+
autoGroup: true,
16+
1517
// view
1618
unreadOnly: true,
1719
// mark unread

apps/renderer/src/modules/feed-column/category.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { useOnClickOutside } from "usehooks-ts"
1717

1818
import type { MenuItemInput } from "~/atoms/context-menu"
1919
import { useShowContextMenu } from "~/atoms/context-menu"
20+
import { useGeneralSettingSelector } from "~/atoms/settings/general"
2021
import { ROUTE_FEED_IN_FOLDER } from "~/constants"
2122
import { useAddFeedToFeedList } from "~/hooks/biz/useFeedActions"
2223
import { useNavigateEntry } from "~/hooks/biz/useNavigateEntry"
@@ -56,7 +57,9 @@ function FeedCategoryImpl({ data: ids, view, categoryOpenStateData }: FeedCatego
5657
const navigate = useNavigateEntry()
5758

5859
const subscription = useSubscriptionByFeedId(ids[0])
59-
const folderName = subscription?.category || subscription.defaultCategory
60+
const autoGroup = useGeneralSettingSelector((state) => state.autoGroup)
61+
const folderName =
62+
subscription?.category || (autoGroup ? subscription.defaultCategory : subscription.feedId)
6063

6164
const showCollapse = sortByUnreadFeedList.length > 1 || !!subscription?.category
6265

apps/renderer/src/modules/feed-column/list.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { Link } from "react-router-dom"
1212
import Selecto from "react-selecto"
1313
import { useEventListener } from "usehooks-ts"
1414

15+
import { useGeneralSettingSelector } from "~/atoms/settings/general"
1516
import { IconOpacityTransition } from "~/components/ux/transition/icon"
1617
import { FEED_COLLECTION_LIST } from "~/constants"
1718
import { useNavigateEntry } from "~/hooks/biz/useNavigateEntry"
@@ -44,13 +45,17 @@ const useFeedsGroupedData = (view: FeedViewType) => {
4445

4546
const data = useSubscriptionByView(view) || remoteData
4647

48+
const autoGroup = useGeneralSettingSelector((state) => state.autoGroup)
49+
4750
return useMemo(() => {
4851
if (!data || data.length === 0) return {}
4952

5053
const groupFolder = {} as Record<string, string[]>
5154

5255
for (const subscription of data) {
53-
const category = subscription.category || subscription.defaultCategory
56+
const category =
57+
subscription.category || (autoGroup ? subscription.defaultCategory : subscription.feedId)
58+
5459
if (category) {
5560
if (!groupFolder[category]) {
5661
groupFolder[category] = []
@@ -60,7 +65,7 @@ const useFeedsGroupedData = (view: FeedViewType) => {
6065
}
6166

6267
return groupFolder
63-
}, [data])
68+
}, [autoGroup, data])
6469
}
6570

6671
const useListsGroupedData = (view: FeedViewType) => {

apps/renderer/src/modules/settings/tabs/general.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ export const SettingGeneral = () => {
6767
}),
6868
IN_ELECTRON && MinimizeToTraySetting,
6969
LanguageSelector,
70+
71+
{
72+
type: "title",
73+
value: t("general.sidebar"),
74+
},
75+
defineSettingItem("autoGroup", {
76+
label: t("general.auto_group.label"),
77+
description: t("general.auto_group.description"),
78+
}),
79+
7080
{
7181
type: "title",
7282
value: t("general.timeline"),

locales/settings/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@
105105
"feeds.tableHeaders.subscriptionCount": "Subs",
106106
"feeds.tableHeaders.tipAmount": "Tips",
107107
"general.app": "App",
108+
"general.auto_group.description": "Automatically group feeds by site domain.",
109+
"general.auto_group.label": "Auto Group",
108110
"general.cache": "Cache",
109111
"general.data": "Data",
110112
"general.data_persist.description": "Persist data locally to enable offline access and local search.",
@@ -143,6 +145,7 @@
143145
"general.send_anonymous_data.label": "Send anonymous data",
144146
"general.show_unread_on_launch.description": "Show unread content on launch",
145147
"general.show_unread_on_launch.label": "Show unread content on launch",
148+
"general.sidebar": "Sidebar",
146149
"general.sidebar_title": "General",
147150
"general.timeline": "Timeline",
148151
"general.unread": "Unread",

packages/shared/src/interface/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface GeneralSettings {
1212
// TTS
1313
voice: string
1414
reduceRefetch: boolean
15+
autoGroup: boolean
1516
}
1617

1718
export interface UISettings {

0 commit comments

Comments
 (0)