Skip to content

Commit 0a61a81

Browse files
committed
feat: ws event real read count
Signed-off-by: Innei <[email protected]>
1 parent b2d5e68 commit 0a61a81

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

src/components/modules/note/NoteMetaBar.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ export const NoteMetaReadCount = () => {
6060
{dividerVertical}
6161
<span className={sectionBlockClassName} key="readcount">
6262
<i className="icon-[mingcute--book-6-line]" />
63-
<span className="font-medium">{read}</span>
63+
64+
<span className="font-medium">
65+
<NumberSmoothTransition>{read}</NumberSmoothTransition>
66+
</span>
6467
</span>
6568
</>
6669
)

src/components/modules/post/PostMetaBar.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ export const PostMetaBar: Component<{
106106
{!!meta.count?.read && (
107107
<div className="flex min-w-0 items-center space-x-1">
108108
<i className="icon-[mingcute--eye-2-line]" />
109-
<span className="min-w-0 truncate">{meta.count.read}</span>
109+
<span className="min-w-0 truncate">
110+
<NumberSmoothTransition>{meta.count.read}</NumberSmoothTransition>
111+
</span>
110112
</div>
111113
)}
112114
{!!meta.count?.like && (

src/socket/handler.ts

+28
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,34 @@ export const eventHandler = (
262262
deleteActivityPresence(payload.identity)
263263
break
264264
}
265+
case EventTypes.ARTICLE_READ_COUNT_UPDATE: {
266+
const { id, count, type } = data
267+
if (!count) {
268+
break
269+
}
270+
271+
switch (type) {
272+
case 'post': {
273+
const currentData = getGlobalCurrentPostData()
274+
if (currentData?.id === id) {
275+
setGlobalCurrentPostData((draft) => {
276+
draft.count.read = count
277+
})
278+
}
279+
break
280+
}
281+
case 'note': {
282+
const currentData = getCurrentNoteData()?.data
283+
if (currentData?.id === id) {
284+
setCurrentNoteData((draft) => {
285+
draft.data.count.read = count
286+
})
287+
}
288+
break
289+
}
290+
}
291+
break
292+
}
265293

266294
case 'fn#media-update': {
267295
setActivityMediaInfo(data)

src/types/events.ts

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const enum EventTypes {
3232

3333
ACTIVITY_UPDATE_PRESENCE = 'ACTIVITY_UPDATE_PRESENCE',
3434
ACTIVITY_LEAVE_PRESENCE = 'ACTIVITY_LEAVE_PRESENCE',
35+
ARTICLE_READ_COUNT_UPDATE = 'ARTICLE_READ_COUNT_UPDATE',
3536
}
3637

3738
export interface EventTypesPayload {

0 commit comments

Comments
 (0)