🐛 fix(vscode): 加载看板不再替别人补列评论
This commit is contained in:
1 parent
37291db9bb
commit
b88f0838df
2 files changed
+6
-20
No files matched your search
@@ -134,12 +134,10 @@ describe('loadIssues', () => {
|
|||||||
expect(issues[0].column).toBe('todo')
|
expect(issues[0].column).toBe('todo')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('缺 state 评论时 POST 不挡住返回', async () => {
|
it('缺 state 评论时用默认列,不代别人发评论', async () => {
|
||||||
const { loadIssues } = await import('./issueLoader.js')
|
const { loadIssues } = await import('./issueLoader.js')
|
||||||
listIssuesByFilter.mockResolvedValue([issue(3, { comments: 0 })])
|
listIssuesByFilter.mockResolvedValue([issue(3, { comments: 0, user: { login: 'cruldra' } })])
|
||||||
postIssueComment.mockReturnValue(new Promise(() => {}))
|
|
||||||
|
|
||||||
const started = Date.now()
|
|
||||||
const { issues } = await loadIssues({
|
const { issues } = await loadIssues({
|
||||||
host: 'gitea.example',
|
host: 'gitea.example',
|
||||||
token: 't',
|
token: 't',
|
||||||
@@ -147,8 +145,7 @@ describe('loadIssues', () => {
|
|||||||
repo: 'r',
|
repo: 'r',
|
||||||
scope: 'all',
|
scope: 'all',
|
||||||
})
|
})
|
||||||
expect(Date.now() - started).toBeLessThan(500)
|
|
||||||
expect(issues[0].column).toBe('todo')
|
expect(issues[0].column).toBe('todo')
|
||||||
expect(postIssueComment).toHaveBeenCalled()
|
expect(postIssueComment).not.toHaveBeenCalled()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
* Flow:
|
* Flow:
|
||||||
* 1. 拉工单列表(mine:先 /user 再 assigned+created;all:工单与 /user 并行)。
|
* 1. 拉工单列表(mine:先 /user 再 assigned+created;all:工单与 /user 并行)。
|
||||||
* 2. 每张工单只从评论末页往前翻,直到碰到带 column 的 state JSON。
|
* 2. 每张工单只从评论末页往前翻,直到碰到带 column 的 state JSON。
|
||||||
* 不拉整仓库评论。缺 state 时内存用默认列,POST 不挡返回。
|
* 不拉整仓库评论。缺 state 时只在内存里用默认列,不发评论。
|
||||||
* 3. 非 done 工单并行补依赖和 PR 状态。
|
* 3. 非 done 工单并行补依赖和 PR 状态。
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -24,7 +24,6 @@ import {
|
|||||||
listIssueCommentsPage,
|
listIssueCommentsPage,
|
||||||
listIssuesByFilter,
|
listIssuesByFilter,
|
||||||
PAGE_SIZE,
|
PAGE_SIZE,
|
||||||
postIssueComment,
|
|
||||||
} from './api'
|
} from './api'
|
||||||
import { resolveAvatars } from './avatars'
|
import { resolveAvatars } from './avatars'
|
||||||
|
|
||||||
@@ -366,7 +365,7 @@ async function buildIssue(opts: {
|
|||||||
/** PR 的 merged_at(来自 PR API),仅用于完成列排序;查询失败/无 PR 为 undefined。 */
|
/** PR 的 merged_at(来自 PR API),仅用于完成列排序;查询失败/无 PR 为 undefined。 */
|
||||||
liveMergedAt?: string
|
liveMergedAt?: string
|
||||||
}): Promise<Issue> {
|
}): Promise<Issue> {
|
||||||
const { host, token, owner, repo, workspaceRoot, issue, comments, prerequisite, liveMerged, liveMergedAt } = opts
|
const { owner, repo, workspaceRoot, issue, comments, prerequisite, liveMerged, liveMergedAt } = opts
|
||||||
const id = `${owner}/${repo}#${issue.number}`
|
const id = `${owner}/${repo}#${issue.number}`
|
||||||
const {
|
const {
|
||||||
column: fromComment,
|
column: fromComment,
|
||||||
@@ -405,18 +404,8 @@ async function buildIssue(opts: {
|
|||||||
column = fromComment
|
column = fromComment
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
// 缺评论只在本机按工单开/关给默认列。不能在加载时补评论:谁的看板先刷到,评论就挂在谁名下。
|
||||||
column = defaultColumnForState(issue.state)
|
column = defaultColumnForState(issue.state)
|
||||||
// 缺省列先用于本屏;POST 不挡返回,失败只记 warn。
|
|
||||||
void postIssueComment({
|
|
||||||
host,
|
|
||||||
token,
|
|
||||||
owner,
|
|
||||||
repo,
|
|
||||||
index: issue.number,
|
|
||||||
body: JSON.stringify({ column }),
|
|
||||||
}).catch((postErr) => {
|
|
||||||
console.warn(`[superpowers] failed to seed state comment on ${id}:`, postErr)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Synchronously stat the worktree path so the UI can render it as a
|
// Synchronously stat the worktree path so the UI can render it as a
|
||||||
|
|||||||
Reference in new issue
Block a user