✨ feat(vscode): 选工单也列「进行中」列里已经有 PR 的工单(开发完了没走自动审查的),弹框按「审查」「进行中」分组,进审查、刷新、重开窗口按同一条列规则判断

This commit is contained in:
cruldra committed 2026-09-29 04:23:57 +08:00
1 parent f2b17e5389
commit 489d0ef41f
7 files changed
+159 -68

No files matched your search

+11 -1
View File
@@ -1,5 +1,5 @@
import type { Issue } from '../../gitea/types'
import { prNumberOf } from './reviewRules'
import { columnLabel, prNumberOf } from './reviewRules'
/** PR 改了几个文件:还在读、没读到、读到了。 */
export type FileCount = 'loading' | 'failed' | { count: number }
@@ -30,6 +30,16 @@ export function withFileCount<T extends Pick<Issue, 'number' | 'title'>>(entries
return entries.map(entry => entry.issue.number === issueNumber && entry.pr ? { ...entry, pr: { ...entry.pr, files } } : entry)
}
/** 弹框里的一行:分组标题(列名)或一项。 */
export type PickRow<T extends Pick<Issue, 'number' | 'title' | 'column'>> = { separator: string } | { entry: PickEntry<T> }
/** 给按列排好的各项插上分组标题:列一变先插一行列名(没有工单的列不出标题)。 */
export function pickRows<T extends Pick<Issue, 'number' | 'title' | 'column'>>(entries: readonly PickEntry<T>[]): PickRow<T>[] {
return entries.flatMap((entry, index) => index > 0 && entries[index - 1].issue.column === entry.issue.column
? [{ entry }]
: [{ separator: columnLabel(entry.issue.column) }, { entry }])
}
/** 还有 PR 的文件数没读完:弹框接着转圈。 */
export function countingFiles(entries: readonly PickEntry<Pick<Issue, 'number' | 'title'>>[]): boolean {
return entries.some(entry => entry.pr?.files === 'loading')