Skip to content

Commit c0ce044

Browse files
authored
refactor: remove checkNew timeline update detection logic (#4817)
Remove the checkNew query and related state management that periodically checked for new entries in the timeline. The hasUpdate state and related UI indication (refresh button highlighting) have been removed while preserving fetchedTime for mark-all-read filtering.
1 parent 2bba6a9 commit c0ce044

File tree

13 files changed

+4
-101
lines changed

13 files changed

+4
-101
lines changed

apps/desktop/layer/renderer/src/modules/entry-column/context/EntriesContext.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ type EntriesStateContextValue = {
1515
isLoading: boolean
1616
error: unknown | null
1717
view: FeedViewType
18-
hasUpdate: boolean
1918
fetchedTime?: number
2019
}
2120

@@ -112,7 +111,6 @@ export const EntriesProvider: React.FC<React.PropsWithChildren> = ({ children })
112111
isLoading: entries.isLoading,
113112
error: entries.error ?? null,
114113
view: view!,
115-
hasUpdate: entries.hasUpdate,
116114
fetchedTime: entries.fetchedTime,
117115
}),
118116
[entries, view, syncType],

apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntriesByView.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ import { useGeneralSettingKey } from "~/atoms/settings/general"
2525
import { ROUTE_FEED_PENDING } from "~/constants/app"
2626
import { useFeature } from "~/hooks/biz/useFeature"
2727
import { useRouteParams } from "~/hooks/biz/useRouteParams"
28-
import { useAuthQuery } from "~/hooks/common"
29-
import { entries } from "~/queries/entries"
3028

3129
import { aiTimelineEnabledAtom } from "../atoms/ai-timeline"
3230
import { useIsPreviewFeed } from "./useIsPreviewFeed"
@@ -87,27 +85,6 @@ const useRemoteEntries = (): UseEntriesReturn => {
8785
}
8886
}, [query.isFetching])
8987

90-
const [pauseQuery, setPauseQuery] = useState(false)
91-
const hasNewQuery = useAuthQuery(
92-
entries.checkNew({
93-
...entriesOptions,
94-
fetchedTime: fetchedTime!,
95-
}),
96-
{
97-
refetchInterval: 1000 * 60 * 5,
98-
enabled: !!fetchedTime && !pauseQuery,
99-
notifyOnChangeProps: ["data"],
100-
},
101-
)
102-
const hasUpdate = useMemo(
103-
() => !!(fetchedTime && hasNewQuery?.data?.data?.has_new),
104-
[hasNewQuery?.data?.data?.has_new, fetchedTime],
105-
)
106-
107-
useEffect(() => {
108-
setPauseQuery(hasUpdate)
109-
}, [hasUpdate])
110-
11188
const refetch = useCallback(async () => void query.refetch(), [query])
11289
const fetchNextPage = useCallback(async () => void query.fetchNextPage(), [query])
11390

@@ -117,7 +94,6 @@ const useRemoteEntries = (): UseEntriesReturn => {
11794
return {
11895
entriesIds: query.entriesIds,
11996
hasNext: query.hasNextPage,
120-
hasUpdate,
12197
refetch,
12298

12399
fetchNextPage,
@@ -234,7 +210,6 @@ const useLocalEntries = (): UseEntriesReturn => {
234210
return {
235211
entriesIds: entries,
236212
hasNext,
237-
hasUpdate: false,
238213
refetch,
239214
fetchNextPage: fetchNextPage as () => Promise<void>,
240215
isLoading: false,
@@ -312,7 +287,6 @@ export const useEntriesByView = ({ onReset }: { onReset?: () => void }) => {
312287
...query,
313288

314289
type: remoteQuery.isReady ? ("remote" as const) : ("local" as const),
315-
hasUpdate: query.hasUpdate,
316290
refetch: useCallback(() => {
317291
const promise = query.refetch()
318292
unreadSyncService.resetFromRemote()

apps/desktop/layer/renderer/src/modules/entry-column/hooks/useLocalEntries.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ export const useLocalEntries = ({
131131
return {
132132
entriesIds: entries,
133133
hasNext,
134-
hasUpdate: false,
135134
refetch,
136135
fetchNextPage,
137136
isLoading: false,

apps/desktop/layer/renderer/src/modules/entry-column/index.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,7 @@ function EntryColumnContent() {
166166
!state.error &&
167167
(!feed || feed?.type === "feed") && <AddFeedHelper />}
168168

169-
<EntryListHeader
170-
refetch={actions.refetch}
171-
isRefreshing={isRefreshing}
172-
hasUpdate={state.hasUpdate}
173-
/>
169+
<EntryListHeader refetch={actions.refetch} isRefreshing={isRefreshing} />
174170

175171
<EntryColumnWrapper onScroll={handleCombinedScroll} key={`${routeFeedId}-${view}`}>
176172
{entriesIds.length === 0 ? (

apps/desktop/layer/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ import { SwitchToMasonryButton } from "./buttons/SwitchToMasonryButton"
4343
export const EntryListHeader: FC<{
4444
refetch: () => void
4545
isRefreshing: boolean
46-
hasUpdate: boolean
47-
}> = ({ refetch, isRefreshing, hasUpdate }) => {
46+
}> = ({ refetch, isRefreshing }) => {
4847
const routerParams = useRouteParams()
4948
const { t } = useTranslation()
5049

@@ -196,19 +195,12 @@ export const EntryListHeader: FC<{
196195
</ActionButton>
197196
) : (
198197
<ActionButton
199-
tooltip={
200-
hasUpdate
201-
? t("entry_list_header.new_entries_available")
202-
: t("entry_list_header.refetch")
203-
}
198+
tooltip={t("entry_list_header.refetch")}
204199
onClick={() => {
205200
refetch()
206201
}}
207202
>
208-
<RotatingRefreshIcon
209-
className={cn(hasUpdate && "text-accent")}
210-
isRefreshing={isRefreshing}
211-
/>
203+
<RotatingRefreshIcon isRefreshing={isRefreshing} />
212204
</ActionButton>
213205
))}
214206
{!isCollection && (
Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { followClient } from "~/lib/api-client"
22
import { defineQuery } from "~/lib/defineQuery"
3-
import { getEntriesParams } from "~/lib/utils"
43

54
export const entries = {
65
preview: (id: string) =>
@@ -17,51 +16,4 @@ export const entries = {
1716
rootKey: ["entries-preview"],
1817
},
1918
),
20-
21-
checkNew: ({
22-
feedId,
23-
inboxId,
24-
listId,
25-
view,
26-
read,
27-
fetchedTime,
28-
}: {
29-
feedId?: number | string
30-
inboxId?: number | string
31-
listId?: number | string
32-
view?: number
33-
read?: boolean
34-
fetchedTime: number
35-
}) =>
36-
defineQuery(
37-
["entry-checkNew", inboxId || listId || feedId, view, read, fetchedTime],
38-
async () => {
39-
const query = {
40-
...getEntriesParams({
41-
feedId,
42-
inboxId,
43-
listId,
44-
view,
45-
}),
46-
read,
47-
insertedAfter: fetchedTime,
48-
}
49-
50-
if (query.feedIdList && query.feedIdList.length === 1) {
51-
query.feedId = query.feedIdList[0]
52-
delete query.feedIdList
53-
}
54-
return followClient.api.entries.checkNew({
55-
insertedAfter: query.insertedAfter,
56-
view: query.view,
57-
feedId: query.feedId,
58-
read: typeof query.read === "boolean" ? query.read : undefined,
59-
feedIdList: query.feedIdList,
60-
})
61-
},
62-
63-
{
64-
rootKey: ["entry-checkNew", inboxId || listId || feedId],
65-
},
66-
),
6719
}

apps/mobile/src/modules/screen/atoms.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ function useRemoteEntries(props?: UseEntriesProps): UseEntriesReturn {
186186
return {
187187
entriesIds: query.entriesIds,
188188
hasNext: query.hasNextPage,
189-
hasUpdate: false,
190189
refetch,
191190
fetchNextPage,
192191
isLoading: query.isFetching,
@@ -299,7 +298,6 @@ function useLocalEntries(props?: UseEntriesProps): UseEntriesReturn {
299298
return {
300299
entriesIds: entries,
301300
hasNext,
302-
hasUpdate: false,
303301
refetch,
304302
fetchNextPage,
305303
isLoading: false,

locales/app/en.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@
201201
"entry_list_header.items": "items",
202202
"entry_list_header.masonry": "Masonry",
203203
"entry_list_header.masonry_column": "Masonry Column",
204-
"entry_list_header.new_entries_available": "New entries available",
205204
"entry_list_header.preview_mode": "Preview Mode",
206205
"entry_list_header.refetch": "Refetch",
207206
"entry_list_header.refresh": "Refresh",

locales/app/ja.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@
200200
"entry_list_header.items": "項目",
201201
"entry_list_header.masonry": "メイソンリー",
202202
"entry_list_header.masonry_column": "メイソンリー列",
203-
"entry_list_header.new_entries_available": "新しいエントリーが利用可能です",
204203
"entry_list_header.preview_mode": "プレビューモード",
205204
"entry_list_header.refetch": "再取得",
206205
"entry_list_header.refresh": "更新",

locales/app/zh-CN.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@
200200
"entry_list_header.items": "内容",
201201
"entry_list_header.masonry": "瀑布流布局",
202202
"entry_list_header.masonry_column": "布局列数",
203-
"entry_list_header.new_entries_available": "有新内容",
204203
"entry_list_header.preview_mode": "预览模式",
205204
"entry_list_header.refetch": "刷新",
206205
"entry_list_header.refresh": "刷新",

0 commit comments

Comments
 (0)