@walavave/cc98-cli 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/README.md +36 -4
- package/dist/api/client.d.ts +5 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +14 -5
- package/dist/api/client.js.map +1 -1
- package/dist/api/endpoints.d.ts +4 -1
- package/dist/api/endpoints.d.ts.map +1 -1
- package/dist/api/endpoints.js +5 -2
- package/dist/api/endpoints.js.map +1 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -5
- package/dist/config.js.map +1 -1
- package/dist/tui/account-modal.js +3 -3
- package/dist/tui/account-modal.js.map +1 -1
- package/dist/tui/app-runtime/content/following.d.ts +4 -0
- package/dist/tui/app-runtime/content/following.d.ts.map +1 -0
- package/dist/tui/app-runtime/content/following.js +113 -0
- package/dist/tui/app-runtime/content/following.js.map +1 -0
- package/dist/tui/app-runtime/content/list.d.ts +1 -1
- package/dist/tui/app-runtime/content/list.d.ts.map +1 -1
- package/dist/tui/app-runtime/content/list.js +49 -9
- package/dist/tui/app-runtime/content/list.js.map +1 -1
- package/dist/tui/app-runtime/content/navigation.d.ts.map +1 -1
- package/dist/tui/app-runtime/content/navigation.js +8 -0
- package/dist/tui/app-runtime/content/navigation.js.map +1 -1
- package/dist/tui/app-runtime/content/search.d.ts.map +1 -1
- package/dist/tui/app-runtime/content/search.js +40 -4
- package/dist/tui/app-runtime/content/search.js.map +1 -1
- package/dist/tui/app-runtime/content.d.ts +1 -0
- package/dist/tui/app-runtime/content.d.ts.map +1 -1
- package/dist/tui/app-runtime/content.js +1 -0
- package/dist/tui/app-runtime/content.js.map +1 -1
- package/dist/tui/app-runtime/image-viewer.js +2 -2
- package/dist/tui/app-runtime/image-viewer.js.map +1 -1
- package/dist/tui/app-runtime/interactions.d.ts +1 -1
- package/dist/tui/app-runtime/interactions.d.ts.map +1 -1
- package/dist/tui/app-runtime/interactions.js +87 -2
- package/dist/tui/app-runtime/interactions.js.map +1 -1
- package/dist/tui/app-runtime/keyboard.d.ts.map +1 -1
- package/dist/tui/app-runtime/keyboard.js +25 -4
- package/dist/tui/app-runtime/keyboard.js.map +1 -1
- package/dist/tui/app-runtime/modals.d.ts +5 -1
- package/dist/tui/app-runtime/modals.d.ts.map +1 -1
- package/dist/tui/app-runtime/modals.js +15 -10
- package/dist/tui/app-runtime/modals.js.map +1 -1
- package/dist/tui/app-runtime/mouse.d.ts +1 -1
- package/dist/tui/app-runtime/mouse.d.ts.map +1 -1
- package/dist/tui/app-runtime/state.d.ts.map +1 -1
- package/dist/tui/app-runtime/state.js +5 -0
- package/dist/tui/app-runtime/state.js.map +1 -1
- package/dist/tui/app-runtime/topic.d.ts.map +1 -1
- package/dist/tui/app-runtime/topic.js +118 -5
- package/dist/tui/app-runtime/topic.js.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +26 -3
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/cached-client.d.ts +7 -1
- package/dist/tui/cached-client.d.ts.map +1 -1
- package/dist/tui/cached-client.js +23 -1
- package/dist/tui/cached-client.js.map +1 -1
- package/dist/tui/data/content.d.ts +3 -1
- package/dist/tui/data/content.d.ts.map +1 -1
- package/dist/tui/data/content.js +110 -3
- package/dist/tui/data/content.js.map +1 -1
- package/dist/tui/data/feed-status.d.ts.map +1 -1
- package/dist/tui/data/feed-status.js +25 -5
- package/dist/tui/data/feed-status.js.map +1 -1
- package/dist/tui/data/following.d.ts +9 -0
- package/dist/tui/data/following.d.ts.map +1 -0
- package/dist/tui/data/following.js +117 -0
- package/dist/tui/data/following.js.map +1 -0
- package/dist/tui/data/items.d.ts +1 -0
- package/dist/tui/data/items.d.ts.map +1 -1
- package/dist/tui/data/items.js +20 -4
- package/dist/tui/data/items.js.map +1 -1
- package/dist/tui/data/navigation-state.d.ts +4 -2
- package/dist/tui/data/navigation-state.d.ts.map +1 -1
- package/dist/tui/data/navigation-state.js +26 -5
- package/dist/tui/data/navigation-state.js.map +1 -1
- package/dist/tui/data/search.d.ts +4 -1
- package/dist/tui/data/search.d.ts.map +1 -1
- package/dist/tui/data/search.js +126 -29
- package/dist/tui/data/search.js.map +1 -1
- package/dist/tui/data/topic.d.ts +2 -2
- package/dist/tui/data/topic.d.ts.map +1 -1
- package/dist/tui/data/topic.js +42 -8
- package/dist/tui/data/topic.js.map +1 -1
- package/dist/tui/data/view-items.d.ts +7 -2
- package/dist/tui/data/view-items.d.ts.map +1 -1
- package/dist/tui/data/view-items.js +276 -16
- package/dist/tui/data/view-items.js.map +1 -1
- package/dist/tui/data/view-loader.d.ts +2 -1
- package/dist/tui/data/view-loader.d.ts.map +1 -1
- package/dist/tui/data/view-loader.js +52 -36
- package/dist/tui/data/view-loader.js.map +1 -1
- package/dist/tui/keymap.d.ts +1 -1
- package/dist/tui/keymap.d.ts.map +1 -1
- package/dist/tui/keymap.js +2 -0
- package/dist/tui/keymap.js.map +1 -1
- package/dist/tui/media/downloads.d.ts.map +1 -0
- package/dist/tui/{downloads.js → media/downloads.js} +1 -1
- package/dist/tui/media/downloads.js.map +1 -0
- package/dist/tui/media/emotion-catalog.d.ts.map +1 -0
- package/dist/tui/{emotion-catalog.js → media/emotion-catalog.js} +1 -1
- package/dist/tui/media/emotion-catalog.js.map +1 -0
- package/dist/tui/media/emotion-preview.d.ts.map +1 -0
- package/dist/tui/media/emotion-preview.js.map +1 -0
- package/dist/tui/media/image-preview.d.ts.map +1 -0
- package/dist/tui/{image-preview.js → media/image-preview.js} +1 -1
- package/dist/tui/media/image-preview.js.map +1 -0
- package/dist/tui/media/ubb-renderer.d.ts.map +1 -0
- package/dist/tui/{ubb-renderer.js → media/ubb-renderer.js} +134 -6
- package/dist/tui/media/ubb-renderer.js.map +1 -0
- package/dist/tui/render-core/ansi.d.ts.map +1 -0
- package/dist/tui/render-core/ansi.js.map +1 -0
- package/dist/tui/render-core/canvas.d.ts.map +1 -0
- package/dist/tui/render-core/canvas.js.map +1 -0
- package/dist/tui/render-core/layout.d.ts.map +1 -0
- package/dist/tui/render-core/layout.js.map +1 -0
- package/dist/tui/{terminal.d.ts → render-core/terminal.d.ts} +1 -0
- package/dist/tui/render-core/terminal.d.ts.map +1 -0
- package/dist/tui/{terminal.js → render-core/terminal.js} +16 -7
- package/dist/tui/render-core/terminal.js.map +1 -0
- package/dist/tui/render-core/text.d.ts.map +1 -0
- package/dist/tui/render-core/text.js.map +1 -0
- package/dist/tui/{theme.d.ts → render-core/theme.d.ts} +1 -0
- package/dist/tui/render-core/theme.d.ts.map +1 -0
- package/dist/tui/{theme.js → render-core/theme.js} +2 -1
- package/dist/tui/render-core/theme.js.map +1 -0
- package/dist/tui/renderer/content.d.ts +14 -0
- package/dist/tui/renderer/content.d.ts.map +1 -0
- package/dist/tui/renderer/content.js +474 -0
- package/dist/tui/renderer/content.js.map +1 -0
- package/dist/tui/renderer/modals.d.ts +4 -0
- package/dist/tui/renderer/modals.d.ts.map +1 -0
- package/dist/tui/renderer/modals.js +343 -0
- package/dist/tui/renderer/modals.js.map +1 -0
- package/dist/tui/renderer.d.ts +3 -4
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +23 -685
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/tui-model.d.ts +33 -4
- package/dist/tui/tui-model.d.ts.map +1 -1
- package/dist/tui/tui-model.js +35 -6
- package/dist/tui/tui-model.js.map +1 -1
- package/dist/version.d.ts +3 -3
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/dist/tui/ansi.d.ts.map +0 -1
- package/dist/tui/ansi.js.map +0 -1
- package/dist/tui/canvas.d.ts.map +0 -1
- package/dist/tui/canvas.js.map +0 -1
- package/dist/tui/downloads.d.ts.map +0 -1
- package/dist/tui/downloads.js.map +0 -1
- package/dist/tui/emotion-catalog.d.ts.map +0 -1
- package/dist/tui/emotion-catalog.js.map +0 -1
- package/dist/tui/emotion-preview.d.ts.map +0 -1
- package/dist/tui/emotion-preview.js.map +0 -1
- package/dist/tui/image-preview.d.ts.map +0 -1
- package/dist/tui/image-preview.js.map +0 -1
- package/dist/tui/layout.d.ts.map +0 -1
- package/dist/tui/layout.js.map +0 -1
- package/dist/tui/terminal.d.ts.map +0 -1
- package/dist/tui/terminal.js.map +0 -1
- package/dist/tui/text.d.ts.map +0 -1
- package/dist/tui/text.js.map +0 -1
- package/dist/tui/theme.d.ts.map +0 -1
- package/dist/tui/theme.js.map +0 -1
- package/dist/tui/ubb-renderer.d.ts.map +0 -1
- package/dist/tui/ubb-renderer.js.map +0 -1
- /package/dist/tui/{downloads.d.ts → media/downloads.d.ts} +0 -0
- /package/dist/tui/{emotion-catalog.d.ts → media/emotion-catalog.d.ts} +0 -0
- /package/dist/tui/{emotion-preview.d.ts → media/emotion-preview.d.ts} +0 -0
- /package/dist/tui/{emotion-preview.js → media/emotion-preview.js} +0 -0
- /package/dist/tui/{image-preview.d.ts → media/image-preview.d.ts} +0 -0
- /package/dist/tui/{ubb-renderer.d.ts → media/ubb-renderer.d.ts} +0 -0
- /package/dist/tui/{ansi.d.ts → render-core/ansi.d.ts} +0 -0
- /package/dist/tui/{ansi.js → render-core/ansi.js} +0 -0
- /package/dist/tui/{canvas.d.ts → render-core/canvas.d.ts} +0 -0
- /package/dist/tui/{canvas.js → render-core/canvas.js} +0 -0
- /package/dist/tui/{layout.d.ts → render-core/layout.d.ts} +0 -0
- /package/dist/tui/{layout.js → render-core/layout.js} +0 -0
- /package/dist/tui/{text.d.ts → render-core/text.d.ts} +0 -0
- /package/dist/tui/{text.js → render-core/text.js} +0 -0
package/dist/tui/data/topic.js
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
import { emotionPreviewRows, isEmotionAssetPath, loadEmotionPreview, measureEmotionPreview } from "../emotion-preview.js";
|
|
2
|
-
import { imagePreviewRows, loadImagePreview, measureImagePreview, supportsImagePreview } from "../image-preview.js";
|
|
1
|
+
import { emotionPreviewRows, isEmotionAssetPath, loadEmotionPreview, measureEmotionPreview } from "../media/emotion-preview.js";
|
|
2
|
+
import { imagePreviewRows, loadImagePreview, measureImagePreview, supportsImagePreview } from "../media/image-preview.js";
|
|
3
3
|
import { getSidebarWidth } from "../renderer.js";
|
|
4
|
-
import { theme } from "../theme.js";
|
|
4
|
+
import { theme } from "../render-core/theme.js";
|
|
5
|
+
import { pushCurrentViewSnapshot } from "./navigation-state.js";
|
|
5
6
|
import { currentTopicPost, getStatus } from "../tui-model.js";
|
|
6
|
-
import { renderMarkdownToLines, renderUbbToLines } from "../ubb-renderer.js";
|
|
7
|
+
import { renderMarkdownToLines, renderUbbToLines } from "../media/ubb-renderer.js";
|
|
7
8
|
import { asArray, asBoolean, asNumber, asObject, isAbortError, normalizeInlineText } from "./utils.js";
|
|
8
|
-
export async function openTopic(client, state, topicId, render, config, force = false, signal) {
|
|
9
|
+
export async function openTopic(client, state, topicId, render, config, force = false, signal, boardContext, pushParent = true) {
|
|
10
|
+
if (pushParent) {
|
|
11
|
+
pushCurrentViewSnapshot(state);
|
|
12
|
+
}
|
|
9
13
|
state.mode = "topic";
|
|
10
14
|
state.loading = true;
|
|
11
15
|
state.loadingMore = false;
|
|
12
16
|
state.error = undefined;
|
|
13
17
|
state.scroll = 0;
|
|
14
18
|
state.imageViewer = undefined;
|
|
19
|
+
state.currentBoard = boardContext ?? state.currentBoard;
|
|
15
20
|
state.topic = {
|
|
16
21
|
topicId,
|
|
17
22
|
title: `#${topicId}`,
|
|
18
23
|
meta: "",
|
|
24
|
+
board: boardContext ?? state.currentBoard,
|
|
19
25
|
isFavorite: false,
|
|
20
26
|
forceRefresh: force,
|
|
21
27
|
lines: [],
|
|
@@ -37,7 +43,9 @@ export async function openTopic(client, state, topicId, render, config, force =
|
|
|
37
43
|
]);
|
|
38
44
|
const topic = asObject(topicRaw);
|
|
39
45
|
const posts = asArray(postsRaw);
|
|
40
|
-
const
|
|
46
|
+
const resolvedBoard = await resolveTopicBoardContext(client, topicBoardContext(topic) ?? state.currentBoard, force, signal);
|
|
47
|
+
state.currentBoard = resolvedBoard;
|
|
48
|
+
const reader = buildTopicReader(topicId, topic, posts, 10, config, asBoolean(favoriteRaw) ?? false, resolvedBoard);
|
|
41
49
|
reader.forceRefresh = force;
|
|
42
50
|
state.topic = reader;
|
|
43
51
|
state.viewTitle = reader.title;
|
|
@@ -60,6 +68,27 @@ export async function openTopic(client, state, topicId, render, config, force =
|
|
|
60
68
|
render();
|
|
61
69
|
}
|
|
62
70
|
}
|
|
71
|
+
function topicBoardContext(topic) {
|
|
72
|
+
const boardId = asNumber(topic.boardId ?? topic.BoardId);
|
|
73
|
+
const boardTitle = normalizeInlineText(String(topic.boardName ?? topic.BoardName ?? "")).trim();
|
|
74
|
+
if (boardId === undefined) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
return { boardId, title: boardTitle || undefined };
|
|
78
|
+
}
|
|
79
|
+
async function resolveTopicBoardContext(client, board, force = false, signal) {
|
|
80
|
+
if (!board || board.title) {
|
|
81
|
+
return board;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const boardInfo = asObject(await client.getBoardInfo(board.boardId, force, signal));
|
|
85
|
+
const title = normalizeInlineText(String(boardInfo.name ?? boardInfo.title ?? "")).trim();
|
|
86
|
+
return title ? { boardId: board.boardId, title } : board;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return board;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
63
92
|
export async function loadNextTopicPage(client, state, render, config, signal, advanceAfterLoad = false) {
|
|
64
93
|
if (!state.topic || state.loadingMore || !state.topic.hasMore) {
|
|
65
94
|
return;
|
|
@@ -209,9 +238,10 @@ async function loadTopicImagePreviews(state, render, config, sidebarWidthOverrid
|
|
|
209
238
|
}
|
|
210
239
|
}
|
|
211
240
|
}
|
|
212
|
-
function buildTopicReader(topicId, topic, posts, size, config, isFavorite) {
|
|
241
|
+
function buildTopicReader(topicId, topic, posts, size, config, isFavorite, board) {
|
|
213
242
|
const title = normalizeInlineText(String(topic.title ?? `#${topicId}`));
|
|
214
243
|
const meta = [
|
|
244
|
+
board?.title ?? (board ? `#${board.boardId}` : undefined),
|
|
215
245
|
topic.userName,
|
|
216
246
|
topic.replyCount !== undefined ? `${topic.replyCount} 回复` : undefined,
|
|
217
247
|
topic.hitCount !== undefined ? `${topic.hitCount} 浏览` : undefined
|
|
@@ -221,6 +251,7 @@ function buildTopicReader(topicId, topic, posts, size, config, isFavorite) {
|
|
|
221
251
|
topicId,
|
|
222
252
|
title,
|
|
223
253
|
meta,
|
|
254
|
+
board,
|
|
224
255
|
isFavorite,
|
|
225
256
|
forceRefresh: false,
|
|
226
257
|
lines: rendered.lines,
|
|
@@ -252,7 +283,8 @@ function renderPosts(posts, width, config, lineOffset = 0) {
|
|
|
252
283
|
const floorNumber = asNumber(post.floor);
|
|
253
284
|
const floor = floorNumber !== undefined ? `#${floorNumber}` : "#?";
|
|
254
285
|
const author = String(post.userName ?? "匿名");
|
|
255
|
-
const
|
|
286
|
+
const rawTime = typeof post.time === "string" ? post.time.replace("T", " ").slice(0, 19) : "";
|
|
287
|
+
const time = rawTime ? rawTime.slice(0, 16) : "";
|
|
256
288
|
const likeCount = asNumber(post.likeCount) ?? 0;
|
|
257
289
|
const dislikeCount = asNumber(post.dislikeCount) ?? 0;
|
|
258
290
|
const likeState = normalizeLikeState(post.likeState);
|
|
@@ -312,6 +344,8 @@ function renderPosts(posts, width, config, lineOffset = 0) {
|
|
|
312
344
|
floor: floorNumber,
|
|
313
345
|
author,
|
|
314
346
|
time,
|
|
347
|
+
rawTime,
|
|
348
|
+
rawContent: content,
|
|
315
349
|
likeCount,
|
|
316
350
|
dislikeCount,
|
|
317
351
|
likeState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../../src/tui/data/topic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../../src/tui/data/topic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import type { ContentItem, TuiState } from "../tui-model.js";
|
|
1
|
+
import type { ContentItem, NoticeType, TuiState } from "../tui-model.js";
|
|
2
2
|
import { CachedCc98Client } from "../cached-client.js";
|
|
3
3
|
export declare function loadChatUserNames(client: CachedCc98Client, chats: unknown[], force: boolean, signal?: AbortSignal): Promise<Map<number, string>>;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function loadChatUnreadCounts(client: CachedCc98Client, chats: unknown[], force: boolean, signal?: AbortSignal): Promise<Map<number, number>>;
|
|
5
|
+
export declare function chatItem(value: unknown, userNames: Map<number, string>, unreadCounts?: Map<number, number>): ContentItem;
|
|
6
|
+
export declare function hasUnreadChatItem(items: ContentItem[]): boolean;
|
|
5
7
|
export declare function chatMessageItems(messages: unknown[], otherName: string, otherUserId: number): ContentItem[];
|
|
6
8
|
export declare function buildUserProfileItems(profile: Record<string, unknown>): ContentItem[];
|
|
7
9
|
export declare function describeUserProfileStatus(state: TuiState): string;
|
|
8
10
|
export declare function unreadStats(value: Record<string, unknown>): ContentItem[];
|
|
11
|
+
export declare function notificationCategoryItems(value: Record<string, unknown>): ContentItem[];
|
|
12
|
+
export declare function noticeItems(type: NoticeType, values: unknown[]): ContentItem[];
|
|
13
|
+
export declare function loadNoticeItems(client: CachedCc98Client, type: NoticeType, values: unknown[], force: boolean, signal?: AbortSignal): Promise<ContentItem[]>;
|
|
9
14
|
export declare function overviewStats(index: Record<string, unknown>, unread: Record<string, unknown>): ContentItem[];
|
|
10
15
|
export declare function mapLimit<T, R>(values: T[], limit: number, mapper: (value: T) => Promise<R>): Promise<R[]>;
|
|
11
16
|
export declare function flattenBoards(sections: unknown[]): ContentItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-items.d.ts","sourceRoot":"","sources":["../../../src/tui/data/view-items.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"view-items.d.ts","sourceRoot":"","sources":["../../../src/tui/data/view-items.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC9B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuB9B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAgBxH;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAe3G;AAiBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAsBrF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAWjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAOzE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAMvF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAS9E;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,OAAO,EAAE,EACjB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,EAAE,CAAC,CA6CxB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAY5G;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAY/G;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAsBhE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC1C,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA2DrD"}
|
|
@@ -1,28 +1,82 @@
|
|
|
1
1
|
import { basicUserItem, historyTopicItem, recentPostItem, topicItem } from "./items.js";
|
|
2
|
-
import { asArray, asNumber, asObject, formatTime, normalizeInlineText, normalizePreview } from "./utils.js";
|
|
2
|
+
import { asArray, asNumber, asObject, formatTime, normalizeInlineText, normalizePreview, timestampOf } from "./utils.js";
|
|
3
3
|
export async function loadChatUserNames(client, chats, force, signal) {
|
|
4
4
|
const ids = chats
|
|
5
5
|
.map((chat) => asNumber(asObject(chat).userId ?? asObject(chat).UserId))
|
|
6
6
|
.filter((id) => id !== undefined);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
const uniqueIds = [...new Set(ids)];
|
|
8
|
+
const userNames = new Map();
|
|
9
|
+
try {
|
|
10
|
+
const users = asArray(await client.getBasicUsers(uniqueIds, force, signal));
|
|
11
|
+
for (const userRaw of users) {
|
|
12
|
+
const user = asObject(userRaw);
|
|
13
|
+
const id = asNumber(user.id ?? user.Id);
|
|
14
|
+
if (id === undefined) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
userNames.set(id, String(user.name ?? user.Name ?? `#${id}`));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// Fall through to per-user resolution below.
|
|
22
|
+
}
|
|
23
|
+
const missingIds = uniqueIds.filter((id) => !userNames.has(id));
|
|
24
|
+
await mapLimit(missingIds, 3, async (id) => {
|
|
25
|
+
try {
|
|
26
|
+
const users = asArray(await client.getBasicUsers([id], force, signal));
|
|
27
|
+
const user = asObject(users[0]);
|
|
28
|
+
const resolvedId = asNumber(user.id ?? user.Id) ?? id;
|
|
29
|
+
userNames.set(resolvedId, String(user.name ?? user.Name ?? `#${resolvedId}`));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
userNames.set(id, `ID不存在 #${id}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return userNames;
|
|
36
|
+
}
|
|
37
|
+
export async function loadChatUnreadCounts(client, chats, force, signal) {
|
|
38
|
+
const candidates = chats
|
|
39
|
+
.map((chat) => asObject(chat))
|
|
40
|
+
.map((chat) => asNumber(chat.userId ?? chat.UserId))
|
|
41
|
+
.filter((id) => id !== undefined);
|
|
42
|
+
const counts = new Map();
|
|
43
|
+
await mapLimit([...new Set(candidates)], 3, async (userId) => {
|
|
44
|
+
try {
|
|
45
|
+
const messages = asArray(await client.getChatHistory(userId, 0, 30, force, signal));
|
|
46
|
+
const unreadCount = messages.reduce((total, messageRaw) => {
|
|
47
|
+
const message = asObject(messageRaw);
|
|
48
|
+
const senderId = asNumber(message.senderId ?? message.SenderId);
|
|
49
|
+
const isRead = message.isRead ?? message.IsRead;
|
|
50
|
+
return total + (senderId === userId && isRead === false ? 1 : 0);
|
|
51
|
+
}, 0);
|
|
52
|
+
counts.set(userId, unreadCount);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
counts.set(userId, 0);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return counts;
|
|
59
|
+
}
|
|
60
|
+
export function chatItem(value, userNames, unreadCounts) {
|
|
16
61
|
const chat = asObject(value);
|
|
17
62
|
const userId = asNumber(chat.userId ?? chat.UserId);
|
|
18
63
|
const name = userId !== undefined ? userNames.get(userId) : undefined;
|
|
64
|
+
const unreadCount = userId !== undefined
|
|
65
|
+
? unreadCounts?.get(userId) ?? extractChatUnreadCount(chat)
|
|
66
|
+
: extractChatUnreadCount(chat);
|
|
67
|
+
const unread = unreadCount > 0;
|
|
19
68
|
return {
|
|
20
69
|
title: String(name ?? chat.name ?? chat.userName ?? userId ?? "私信"),
|
|
21
70
|
meta: userId !== undefined ? `user #${userId}` : undefined,
|
|
22
71
|
detail: normalizePreview(String(chat.lastContent ?? chat.lastMessage ?? chat.content ?? "")),
|
|
23
|
-
chatUserId: userId
|
|
72
|
+
chatUserId: userId,
|
|
73
|
+
unread,
|
|
74
|
+
unreadCount
|
|
24
75
|
};
|
|
25
76
|
}
|
|
77
|
+
export function hasUnreadChatItem(items) {
|
|
78
|
+
return items.some((item) => item.chatUserId !== undefined && (item.unread || (item.unreadCount ?? 0) > 0));
|
|
79
|
+
}
|
|
26
80
|
export function chatMessageItems(messages, otherName, otherUserId) {
|
|
27
81
|
return [...messages].reverse().map((messageRaw) => {
|
|
28
82
|
const message = asObject(messageRaw);
|
|
@@ -39,6 +93,18 @@ export function chatMessageItems(messages, otherName, otherUserId) {
|
|
|
39
93
|
};
|
|
40
94
|
});
|
|
41
95
|
}
|
|
96
|
+
function extractChatUnreadCount(chat) {
|
|
97
|
+
const rawCount = asNumber(chat.unreadCount
|
|
98
|
+
?? chat.UnreadCount
|
|
99
|
+
?? chat.messageCount
|
|
100
|
+
?? chat.MessageCount
|
|
101
|
+
?? chat.count
|
|
102
|
+
?? chat.Count);
|
|
103
|
+
if (rawCount !== undefined && rawCount > 0) {
|
|
104
|
+
return rawCount;
|
|
105
|
+
}
|
|
106
|
+
return (chat.isRead ?? chat.IsRead) === false ? 1 : 0;
|
|
107
|
+
}
|
|
42
108
|
export function buildUserProfileItems(profile) {
|
|
43
109
|
const userId = asNumber(profile.id);
|
|
44
110
|
const name = String(profile.name ?? profile.userName ?? (userId !== undefined ? `#${userId}` : "用户")).trim() || "用户";
|
|
@@ -64,13 +130,14 @@ export function buildUserProfileItems(profile) {
|
|
|
64
130
|
export function describeUserProfileStatus(state) {
|
|
65
131
|
if (state.currentFeed?.kind === "me-profile") {
|
|
66
132
|
return state.currentUser?.hasMore
|
|
67
|
-
? "个人主页:
|
|
68
|
-
: "个人主页:
|
|
133
|
+
? "个人主页:n/Space 更多主题 Esc/Backspace 返回"
|
|
134
|
+
: "个人主页:Esc/Backspace 返回";
|
|
69
135
|
}
|
|
70
136
|
const action = state.currentUser?.isFollowed ? "a 取关" : "a 关注";
|
|
137
|
+
const messageAction = "s 私信";
|
|
71
138
|
return state.currentUser?.hasMore
|
|
72
|
-
?
|
|
73
|
-
:
|
|
139
|
+
? `用户页:${action} ${messageAction} n/Space 更多主题 Esc/Backspace 返回`
|
|
140
|
+
: `用户页:${action} ${messageAction} Esc/Backspace 返回`;
|
|
74
141
|
}
|
|
75
142
|
export function unreadStats(value) {
|
|
76
143
|
return [
|
|
@@ -80,6 +147,63 @@ export function unreadStats(value) {
|
|
|
80
147
|
item("私信", value.messageCount)
|
|
81
148
|
];
|
|
82
149
|
}
|
|
150
|
+
export function notificationCategoryItems(value) {
|
|
151
|
+
return [
|
|
152
|
+
noticeCategoryItem("reply", "回复通知", value.replyCount, "别人回复了你的主题或帖子"),
|
|
153
|
+
noticeCategoryItem("at", "@通知", value.atCount, "别人提到了你"),
|
|
154
|
+
noticeCategoryItem("system", "系统通知", value.systemCount, "系统公告和个人系统消息")
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
export function noticeItems(type, values) {
|
|
158
|
+
switch (type) {
|
|
159
|
+
case "reply":
|
|
160
|
+
return values.map((value) => replyNoticeItem(value));
|
|
161
|
+
case "at":
|
|
162
|
+
return values.map((value) => atNoticeItem(value));
|
|
163
|
+
case "system":
|
|
164
|
+
return values.map((value) => systemNoticeItem(value));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export async function loadNoticeItems(client, type, values, force, signal) {
|
|
168
|
+
if (type === "system") {
|
|
169
|
+
return noticeItems(type, values);
|
|
170
|
+
}
|
|
171
|
+
const notices = values.map((value) => asObject(value));
|
|
172
|
+
const topicIds = [...new Set(notices
|
|
173
|
+
.map((notice) => asNumber(notice.topicId ?? notice.TopicId))
|
|
174
|
+
.filter((id) => id !== undefined))];
|
|
175
|
+
const topics = topicIds.length > 0 ? asArray(await client.getBasicTopics(topicIds, force, signal)) : [];
|
|
176
|
+
const topicMap = new Map();
|
|
177
|
+
for (const topicRaw of topics) {
|
|
178
|
+
const topic = asObject(topicRaw);
|
|
179
|
+
const topicId = asNumber(topic.id ?? topic.Id);
|
|
180
|
+
if (topicId !== undefined) {
|
|
181
|
+
topicMap.set(topicId, topic);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const boardIds = [...new Set(notices.map((notice) => {
|
|
185
|
+
const topicId = asNumber(notice.topicId ?? notice.TopicId);
|
|
186
|
+
const topic = topicId !== undefined ? topicMap.get(topicId) : undefined;
|
|
187
|
+
return asNumber(notice.boardId ?? notice.BoardId ?? topic?.boardId ?? topic?.BoardId);
|
|
188
|
+
}).filter((id) => id !== undefined && id > 0))];
|
|
189
|
+
const boardMap = new Map();
|
|
190
|
+
await mapLimit(boardIds, 4, async (boardId) => {
|
|
191
|
+
try {
|
|
192
|
+
const board = asObject(await client.getBoardInfo(boardId, force, signal));
|
|
193
|
+
const boardName = normalizeInlineText(String(board.name ?? board.title ?? "")).trim();
|
|
194
|
+
if (boardName) {
|
|
195
|
+
boardMap.set(boardId, boardName);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Leave board name unresolved when the board is gone or inaccessible.
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
const enriched = notices.map((notice) => enrichThreadNotice(notice, topicMap, boardMap));
|
|
203
|
+
return type === "reply"
|
|
204
|
+
? enriched.map((notice) => replyNoticeItem(notice))
|
|
205
|
+
: enriched.map((notice) => atNoticeItem(notice));
|
|
206
|
+
}
|
|
83
207
|
export function overviewStats(index, unread) {
|
|
84
208
|
const unreadTotal = ["systemCount", "atCount", "replyCount", "messageCount"].reduce((total, key) => {
|
|
85
209
|
const value = unread[key];
|
|
@@ -137,10 +261,30 @@ export async function loadFeedPageItems(client, feed, force, signal) {
|
|
|
137
261
|
const topics = asArray(await client.getNewTopics(feed.loaded, feed.size + 1, force, signal));
|
|
138
262
|
return { items: topics.slice(0, feed.size).map((topic) => topicItem(topic)), received: topics.length };
|
|
139
263
|
}
|
|
140
|
-
case "following": {
|
|
264
|
+
case "following-board": {
|
|
265
|
+
const topics = asArray(await client.getCustomBoardTopics(feed.loaded, feed.size + 1, force, signal));
|
|
266
|
+
return { items: topics.slice(0, feed.size).map((topic) => topicItem(topic)), received: topics.length };
|
|
267
|
+
}
|
|
268
|
+
case "following-user": {
|
|
141
269
|
const topics = asArray(await client.getFolloweeTopics(feed.loaded, feed.size + 1, force, signal));
|
|
142
270
|
return { items: topics.slice(0, feed.size).map((topic) => topicItem(topic)), received: topics.length };
|
|
143
271
|
}
|
|
272
|
+
case "following-favorite": {
|
|
273
|
+
const topics = asArray(await client.getFavoriteUpdates(feed.loaded, feed.size + 1, force, signal));
|
|
274
|
+
return { items: topics.slice(0, feed.size).map((topic) => topicItem(topic)), received: topics.length };
|
|
275
|
+
}
|
|
276
|
+
case "notifications-system": {
|
|
277
|
+
const notices = asArray(await client.getNotices("system", feed.loaded, feed.size + 1, force, signal));
|
|
278
|
+
return { items: await loadNoticeItems(client, "system", notices.slice(0, feed.size), force, signal), received: notices.length };
|
|
279
|
+
}
|
|
280
|
+
case "notifications-at": {
|
|
281
|
+
const notices = asArray(await client.getNotices("at", feed.loaded, feed.size + 1, force, signal));
|
|
282
|
+
return { items: await loadNoticeItems(client, "at", notices.slice(0, feed.size), force, signal), received: notices.length };
|
|
283
|
+
}
|
|
284
|
+
case "notifications-reply": {
|
|
285
|
+
const notices = asArray(await client.getNotices("reply", feed.loaded, feed.size + 1, force, signal));
|
|
286
|
+
return { items: await loadNoticeItems(client, "reply", notices.slice(0, feed.size), force, signal), received: notices.length };
|
|
287
|
+
}
|
|
144
288
|
case "messages": {
|
|
145
289
|
const chats = asArray(await client.getRecentChats(feed.loaded, feed.size + 1, force, signal));
|
|
146
290
|
const visibleChats = chats.slice(0, feed.size);
|
|
@@ -176,4 +320,120 @@ function item(title, value, meta) {
|
|
|
176
320
|
detail: value === undefined || value === null ? "-" : String(value)
|
|
177
321
|
};
|
|
178
322
|
}
|
|
323
|
+
function noticeCategoryItem(type, title, unread, detail) {
|
|
324
|
+
const count = typeof unread === "number" ? unread : Number(unread ?? 0);
|
|
325
|
+
return {
|
|
326
|
+
title,
|
|
327
|
+
meta: count > 0 ? `${count} 条未读` : "已读完",
|
|
328
|
+
detail,
|
|
329
|
+
action: `notice.${type}`,
|
|
330
|
+
unread: count > 0,
|
|
331
|
+
unreadCount: Math.max(0, count)
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
function replyNoticeItem(value) {
|
|
335
|
+
const notice = asObject(value);
|
|
336
|
+
const topicId = asNumber(notice.topicId ?? notice.TopicId);
|
|
337
|
+
const boardId = asNumber(notice.boardId ?? notice.BoardId);
|
|
338
|
+
const userId = asNumber(notice.userId ?? notice.UserId);
|
|
339
|
+
const boardTitle = normalizeInlineText(String(notice.boardName ?? notice.BoardName ?? "")).trim();
|
|
340
|
+
const userName = normalizeInlineText(String(notice.userName ?? notice.UserName ?? "")).trim() || "有人";
|
|
341
|
+
const topicTitle = normalizeInlineText(String(notice.topicTitle
|
|
342
|
+
?? notice.TopicTitle
|
|
343
|
+
?? "未知主题(该主题已被删除或者无权限获取)")).trim();
|
|
344
|
+
const floor = asNumber(notice.floor ?? notice.Floor);
|
|
345
|
+
const isRead = notice.isRead ?? notice.IsRead;
|
|
346
|
+
return {
|
|
347
|
+
title: topicTitle || `${userName} 回复了你`,
|
|
348
|
+
meta: [
|
|
349
|
+
"回复通知",
|
|
350
|
+
userName,
|
|
351
|
+
boardTitle || undefined,
|
|
352
|
+
floor !== undefined ? `#${floor} 楼` : undefined,
|
|
353
|
+
formatTime(notice.time ?? notice.Time)
|
|
354
|
+
].filter(Boolean).join(" · "),
|
|
355
|
+
detail: `${userName} 回复了你`,
|
|
356
|
+
topicId,
|
|
357
|
+
boardId,
|
|
358
|
+
boardTitle: boardTitle || undefined,
|
|
359
|
+
userId,
|
|
360
|
+
sortTime: timestampOf(notice.time ?? notice.Time),
|
|
361
|
+
unread: isRead === false
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
function atNoticeItem(value) {
|
|
365
|
+
const notice = asObject(value);
|
|
366
|
+
const topicId = asNumber(notice.topicId ?? notice.TopicId);
|
|
367
|
+
const boardId = asNumber(notice.boardId ?? notice.BoardId);
|
|
368
|
+
const userId = asNumber(notice.userId ?? notice.UserId);
|
|
369
|
+
const boardTitle = normalizeInlineText(String(notice.boardName ?? notice.BoardName ?? "")).trim();
|
|
370
|
+
const userName = normalizeInlineText(String(notice.userName ?? notice.UserName ?? "")).trim() || "有人";
|
|
371
|
+
const topicTitle = normalizeInlineText(String(notice.topicTitle
|
|
372
|
+
?? notice.TopicTitle
|
|
373
|
+
?? "未知主题(该主题已被删除或者无权限获取)")).trim();
|
|
374
|
+
const floor = asNumber(notice.floor ?? notice.Floor);
|
|
375
|
+
const isRead = notice.isRead ?? notice.IsRead;
|
|
376
|
+
return {
|
|
377
|
+
title: topicTitle || `${userName} @了你`,
|
|
378
|
+
meta: [
|
|
379
|
+
"@通知",
|
|
380
|
+
userName,
|
|
381
|
+
boardTitle || undefined,
|
|
382
|
+
floor !== undefined ? `#${floor} 楼` : undefined,
|
|
383
|
+
formatTime(notice.time ?? notice.Time)
|
|
384
|
+
].filter(Boolean).join(" · "),
|
|
385
|
+
detail: `${userName} 在帖子里提到了你`,
|
|
386
|
+
topicId,
|
|
387
|
+
boardId,
|
|
388
|
+
boardTitle: boardTitle || undefined,
|
|
389
|
+
userId,
|
|
390
|
+
sortTime: timestampOf(notice.time ?? notice.Time),
|
|
391
|
+
unread: isRead === false
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
function systemNoticeItem(value) {
|
|
395
|
+
const notice = asObject(value);
|
|
396
|
+
const topicId = asNumber(notice.topicId ?? notice.TopicId);
|
|
397
|
+
const title = normalizeInlineText(String(notice.title ?? notice.Title ?? "系统通知")).trim() || "系统通知";
|
|
398
|
+
const content = normalizePreview(String(notice.content ?? notice.Content ?? ""));
|
|
399
|
+
const floor = asNumber(notice.floor ?? notice.Floor);
|
|
400
|
+
const isRead = notice.isRead ?? notice.IsRead;
|
|
401
|
+
return {
|
|
402
|
+
title,
|
|
403
|
+
meta: [
|
|
404
|
+
"系统通知",
|
|
405
|
+
floor !== undefined ? `#${floor} 楼` : undefined,
|
|
406
|
+
formatTime(notice.time ?? notice.Time)
|
|
407
|
+
].filter(Boolean).join(" · "),
|
|
408
|
+
detail: content || "查看系统通知详情",
|
|
409
|
+
topicId,
|
|
410
|
+
sortTime: timestampOf(notice.time ?? notice.Time),
|
|
411
|
+
unread: isRead === false
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
function enrichThreadNotice(notice, topicMap, boardMap) {
|
|
415
|
+
const topicId = asNumber(notice.topicId ?? notice.TopicId);
|
|
416
|
+
const topic = topicId !== undefined ? topicMap.get(topicId) : undefined;
|
|
417
|
+
const postBasicInfo = asObject(notice.postBasicInfo ?? notice.PostBasicInfo);
|
|
418
|
+
const boardId = asNumber(notice.boardId ?? notice.BoardId ?? topic?.boardId ?? topic?.BoardId);
|
|
419
|
+
const boardName = normalizeInlineText(String(notice.boardName
|
|
420
|
+
?? notice.BoardName
|
|
421
|
+
?? topic?.boardName
|
|
422
|
+
?? topic?.BoardName
|
|
423
|
+
?? (boardId !== undefined ? boardMap.get(boardId) : ""))).trim();
|
|
424
|
+
const topicTitle = normalizeInlineText(String(notice.topicTitle
|
|
425
|
+
?? notice.TopicTitle
|
|
426
|
+
?? topic?.title
|
|
427
|
+
?? topic?.Title
|
|
428
|
+
?? "")).trim();
|
|
429
|
+
return {
|
|
430
|
+
...notice,
|
|
431
|
+
boardId,
|
|
432
|
+
boardName: boardName || undefined,
|
|
433
|
+
topicTitle: topicTitle || undefined,
|
|
434
|
+
floor: notice.floor ?? notice.Floor ?? postBasicInfo.floor ?? postBasicInfo.Floor ?? (topicId ? 1 : undefined),
|
|
435
|
+
userId: notice.userId ?? notice.UserId ?? postBasicInfo.userId ?? postBasicInfo.UserId ?? -1,
|
|
436
|
+
userName: notice.userName ?? notice.UserName ?? postBasicInfo.userName ?? postBasicInfo.UserName ?? "有人"
|
|
437
|
+
};
|
|
438
|
+
}
|
|
179
439
|
//# sourceMappingURL=view-items.js.map
|