@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.
Files changed (188) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +36 -4
  3. package/dist/api/client.d.ts +5 -2
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +14 -5
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/api/endpoints.d.ts +4 -1
  8. package/dist/api/endpoints.d.ts.map +1 -1
  9. package/dist/api/endpoints.js +5 -2
  10. package/dist/api/endpoints.js.map +1 -1
  11. package/dist/config.d.ts +0 -1
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +0 -5
  14. package/dist/config.js.map +1 -1
  15. package/dist/tui/account-modal.js +3 -3
  16. package/dist/tui/account-modal.js.map +1 -1
  17. package/dist/tui/app-runtime/content/following.d.ts +4 -0
  18. package/dist/tui/app-runtime/content/following.d.ts.map +1 -0
  19. package/dist/tui/app-runtime/content/following.js +113 -0
  20. package/dist/tui/app-runtime/content/following.js.map +1 -0
  21. package/dist/tui/app-runtime/content/list.d.ts +1 -1
  22. package/dist/tui/app-runtime/content/list.d.ts.map +1 -1
  23. package/dist/tui/app-runtime/content/list.js +49 -9
  24. package/dist/tui/app-runtime/content/list.js.map +1 -1
  25. package/dist/tui/app-runtime/content/navigation.d.ts.map +1 -1
  26. package/dist/tui/app-runtime/content/navigation.js +8 -0
  27. package/dist/tui/app-runtime/content/navigation.js.map +1 -1
  28. package/dist/tui/app-runtime/content/search.d.ts.map +1 -1
  29. package/dist/tui/app-runtime/content/search.js +40 -4
  30. package/dist/tui/app-runtime/content/search.js.map +1 -1
  31. package/dist/tui/app-runtime/content.d.ts +1 -0
  32. package/dist/tui/app-runtime/content.d.ts.map +1 -1
  33. package/dist/tui/app-runtime/content.js +1 -0
  34. package/dist/tui/app-runtime/content.js.map +1 -1
  35. package/dist/tui/app-runtime/image-viewer.js +2 -2
  36. package/dist/tui/app-runtime/image-viewer.js.map +1 -1
  37. package/dist/tui/app-runtime/interactions.d.ts +1 -1
  38. package/dist/tui/app-runtime/interactions.d.ts.map +1 -1
  39. package/dist/tui/app-runtime/interactions.js +87 -2
  40. package/dist/tui/app-runtime/interactions.js.map +1 -1
  41. package/dist/tui/app-runtime/keyboard.d.ts.map +1 -1
  42. package/dist/tui/app-runtime/keyboard.js +25 -4
  43. package/dist/tui/app-runtime/keyboard.js.map +1 -1
  44. package/dist/tui/app-runtime/modals.d.ts +5 -1
  45. package/dist/tui/app-runtime/modals.d.ts.map +1 -1
  46. package/dist/tui/app-runtime/modals.js +15 -10
  47. package/dist/tui/app-runtime/modals.js.map +1 -1
  48. package/dist/tui/app-runtime/mouse.d.ts +1 -1
  49. package/dist/tui/app-runtime/mouse.d.ts.map +1 -1
  50. package/dist/tui/app-runtime/state.d.ts.map +1 -1
  51. package/dist/tui/app-runtime/state.js +5 -0
  52. package/dist/tui/app-runtime/state.js.map +1 -1
  53. package/dist/tui/app-runtime/topic.d.ts.map +1 -1
  54. package/dist/tui/app-runtime/topic.js +118 -5
  55. package/dist/tui/app-runtime/topic.js.map +1 -1
  56. package/dist/tui/app.d.ts.map +1 -1
  57. package/dist/tui/app.js +26 -3
  58. package/dist/tui/app.js.map +1 -1
  59. package/dist/tui/cached-client.d.ts +7 -1
  60. package/dist/tui/cached-client.d.ts.map +1 -1
  61. package/dist/tui/cached-client.js +23 -1
  62. package/dist/tui/cached-client.js.map +1 -1
  63. package/dist/tui/data/content.d.ts +3 -1
  64. package/dist/tui/data/content.d.ts.map +1 -1
  65. package/dist/tui/data/content.js +110 -3
  66. package/dist/tui/data/content.js.map +1 -1
  67. package/dist/tui/data/feed-status.d.ts.map +1 -1
  68. package/dist/tui/data/feed-status.js +25 -5
  69. package/dist/tui/data/feed-status.js.map +1 -1
  70. package/dist/tui/data/following.d.ts +9 -0
  71. package/dist/tui/data/following.d.ts.map +1 -0
  72. package/dist/tui/data/following.js +117 -0
  73. package/dist/tui/data/following.js.map +1 -0
  74. package/dist/tui/data/items.d.ts +1 -0
  75. package/dist/tui/data/items.d.ts.map +1 -1
  76. package/dist/tui/data/items.js +20 -4
  77. package/dist/tui/data/items.js.map +1 -1
  78. package/dist/tui/data/navigation-state.d.ts +4 -2
  79. package/dist/tui/data/navigation-state.d.ts.map +1 -1
  80. package/dist/tui/data/navigation-state.js +26 -5
  81. package/dist/tui/data/navigation-state.js.map +1 -1
  82. package/dist/tui/data/search.d.ts +4 -1
  83. package/dist/tui/data/search.d.ts.map +1 -1
  84. package/dist/tui/data/search.js +126 -29
  85. package/dist/tui/data/search.js.map +1 -1
  86. package/dist/tui/data/topic.d.ts +2 -2
  87. package/dist/tui/data/topic.d.ts.map +1 -1
  88. package/dist/tui/data/topic.js +42 -8
  89. package/dist/tui/data/topic.js.map +1 -1
  90. package/dist/tui/data/view-items.d.ts +7 -2
  91. package/dist/tui/data/view-items.d.ts.map +1 -1
  92. package/dist/tui/data/view-items.js +276 -16
  93. package/dist/tui/data/view-items.js.map +1 -1
  94. package/dist/tui/data/view-loader.d.ts +2 -1
  95. package/dist/tui/data/view-loader.d.ts.map +1 -1
  96. package/dist/tui/data/view-loader.js +52 -36
  97. package/dist/tui/data/view-loader.js.map +1 -1
  98. package/dist/tui/keymap.d.ts +1 -1
  99. package/dist/tui/keymap.d.ts.map +1 -1
  100. package/dist/tui/keymap.js +2 -0
  101. package/dist/tui/keymap.js.map +1 -1
  102. package/dist/tui/media/downloads.d.ts.map +1 -0
  103. package/dist/tui/{downloads.js → media/downloads.js} +1 -1
  104. package/dist/tui/media/downloads.js.map +1 -0
  105. package/dist/tui/media/emotion-catalog.d.ts.map +1 -0
  106. package/dist/tui/{emotion-catalog.js → media/emotion-catalog.js} +1 -1
  107. package/dist/tui/media/emotion-catalog.js.map +1 -0
  108. package/dist/tui/media/emotion-preview.d.ts.map +1 -0
  109. package/dist/tui/media/emotion-preview.js.map +1 -0
  110. package/dist/tui/media/image-preview.d.ts.map +1 -0
  111. package/dist/tui/{image-preview.js → media/image-preview.js} +1 -1
  112. package/dist/tui/media/image-preview.js.map +1 -0
  113. package/dist/tui/media/ubb-renderer.d.ts.map +1 -0
  114. package/dist/tui/{ubb-renderer.js → media/ubb-renderer.js} +134 -6
  115. package/dist/tui/media/ubb-renderer.js.map +1 -0
  116. package/dist/tui/render-core/ansi.d.ts.map +1 -0
  117. package/dist/tui/render-core/ansi.js.map +1 -0
  118. package/dist/tui/render-core/canvas.d.ts.map +1 -0
  119. package/dist/tui/render-core/canvas.js.map +1 -0
  120. package/dist/tui/render-core/layout.d.ts.map +1 -0
  121. package/dist/tui/render-core/layout.js.map +1 -0
  122. package/dist/tui/{terminal.d.ts → render-core/terminal.d.ts} +1 -0
  123. package/dist/tui/render-core/terminal.d.ts.map +1 -0
  124. package/dist/tui/{terminal.js → render-core/terminal.js} +16 -7
  125. package/dist/tui/render-core/terminal.js.map +1 -0
  126. package/dist/tui/render-core/text.d.ts.map +1 -0
  127. package/dist/tui/render-core/text.js.map +1 -0
  128. package/dist/tui/{theme.d.ts → render-core/theme.d.ts} +1 -0
  129. package/dist/tui/render-core/theme.d.ts.map +1 -0
  130. package/dist/tui/{theme.js → render-core/theme.js} +2 -1
  131. package/dist/tui/render-core/theme.js.map +1 -0
  132. package/dist/tui/renderer/content.d.ts +14 -0
  133. package/dist/tui/renderer/content.d.ts.map +1 -0
  134. package/dist/tui/renderer/content.js +474 -0
  135. package/dist/tui/renderer/content.js.map +1 -0
  136. package/dist/tui/renderer/modals.d.ts +4 -0
  137. package/dist/tui/renderer/modals.d.ts.map +1 -0
  138. package/dist/tui/renderer/modals.js +343 -0
  139. package/dist/tui/renderer/modals.js.map +1 -0
  140. package/dist/tui/renderer.d.ts +3 -4
  141. package/dist/tui/renderer.d.ts.map +1 -1
  142. package/dist/tui/renderer.js +23 -685
  143. package/dist/tui/renderer.js.map +1 -1
  144. package/dist/tui/tui-model.d.ts +33 -4
  145. package/dist/tui/tui-model.d.ts.map +1 -1
  146. package/dist/tui/tui-model.js +35 -6
  147. package/dist/tui/tui-model.js.map +1 -1
  148. package/dist/version.d.ts +3 -3
  149. package/dist/version.d.ts.map +1 -1
  150. package/dist/version.js +2 -2
  151. package/dist/version.js.map +1 -1
  152. package/package.json +1 -1
  153. package/dist/tui/ansi.d.ts.map +0 -1
  154. package/dist/tui/ansi.js.map +0 -1
  155. package/dist/tui/canvas.d.ts.map +0 -1
  156. package/dist/tui/canvas.js.map +0 -1
  157. package/dist/tui/downloads.d.ts.map +0 -1
  158. package/dist/tui/downloads.js.map +0 -1
  159. package/dist/tui/emotion-catalog.d.ts.map +0 -1
  160. package/dist/tui/emotion-catalog.js.map +0 -1
  161. package/dist/tui/emotion-preview.d.ts.map +0 -1
  162. package/dist/tui/emotion-preview.js.map +0 -1
  163. package/dist/tui/image-preview.d.ts.map +0 -1
  164. package/dist/tui/image-preview.js.map +0 -1
  165. package/dist/tui/layout.d.ts.map +0 -1
  166. package/dist/tui/layout.js.map +0 -1
  167. package/dist/tui/terminal.d.ts.map +0 -1
  168. package/dist/tui/terminal.js.map +0 -1
  169. package/dist/tui/text.d.ts.map +0 -1
  170. package/dist/tui/text.js.map +0 -1
  171. package/dist/tui/theme.d.ts.map +0 -1
  172. package/dist/tui/theme.js.map +0 -1
  173. package/dist/tui/ubb-renderer.d.ts.map +0 -1
  174. package/dist/tui/ubb-renderer.js.map +0 -1
  175. /package/dist/tui/{downloads.d.ts → media/downloads.d.ts} +0 -0
  176. /package/dist/tui/{emotion-catalog.d.ts → media/emotion-catalog.d.ts} +0 -0
  177. /package/dist/tui/{emotion-preview.d.ts → media/emotion-preview.d.ts} +0 -0
  178. /package/dist/tui/{emotion-preview.js → media/emotion-preview.js} +0 -0
  179. /package/dist/tui/{image-preview.d.ts → media/image-preview.d.ts} +0 -0
  180. /package/dist/tui/{ubb-renderer.d.ts → media/ubb-renderer.d.ts} +0 -0
  181. /package/dist/tui/{ansi.d.ts → render-core/ansi.d.ts} +0 -0
  182. /package/dist/tui/{ansi.js → render-core/ansi.js} +0 -0
  183. /package/dist/tui/{canvas.d.ts → render-core/canvas.d.ts} +0 -0
  184. /package/dist/tui/{canvas.js → render-core/canvas.js} +0 -0
  185. /package/dist/tui/{layout.d.ts → render-core/layout.d.ts} +0 -0
  186. /package/dist/tui/{layout.js → render-core/layout.js} +0 -0
  187. /package/dist/tui/{text.d.ts → render-core/text.d.ts} +0 -0
  188. /package/dist/tui/{text.js → render-core/text.js} +0 -0
@@ -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 reader = buildTopicReader(topicId, topic, posts, 10, config, asBoolean(favoriteRaw) ?? false);
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 time = typeof post.time === "string" ? post.time.replace("T", " ").slice(0, 16) : "";
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 chatItem(value: unknown, userNames: Map<number, string>): ContentItem;
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;AAC7D,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,CAW9B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAUpF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAe3G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAsBrF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAUjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAOzE;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,CAuCrD"}
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 users = asArray(await client.getBasicUsers(ids, force, signal));
8
- return new Map(users.map((userRaw) => {
9
- const user = asObject(userRaw);
10
- const id = asNumber(user.id ?? user.Id);
11
- const name = String(user.name ?? user.Name ?? (id !== undefined ? `#${id}` : "用户"));
12
- return [id, name];
13
- }).filter((entry) => entry[0] !== undefined));
14
- }
15
- export function chatItem(value, userNames) {
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
- ? "个人主页:j/k 浏览 l 打开主题 n/Space 更多主题 Esc/Backspace 返回"
68
- : "个人主页:j/k 浏览 l 打开主题 Esc/Backspace 返回";
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
- ? `用户页:j/k 浏览 l 打开主题 ${action} n/Space 更多主题 Esc/Backspace 返回`
73
- : `用户页:j/k 浏览 l 打开主题 ${action} Esc/Backspace 返回`;
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