🐛 fix(vscode): 申请移交改到工单详情标题栏
This commit is contained in:
1 parent
b53b989bbe
commit
d15c6ceedd
6 files changed
+86
-95
No files matched your search
@@ -3,6 +3,7 @@ import type { Issue, IssueColumn } from '../types'
|
||||
import type { PropertyGroup, RowAction } from './property-grid'
|
||||
import { ArrowRightLeft, CircleSlash, Download, Eraser, ExternalLink, GitMerge, Loader2, Play, RotateCcw, Terminal, Trash2, X } from 'lucide-react'
|
||||
import { useMemo, useRef } from 'react'
|
||||
import { canAnswerHandoffRequest, canAskHandoff, canCancelHandoffRequest } from '../../../src/panel/handlers/handoffRequest'
|
||||
import { isIssueLocked } from '../lib/dependencies'
|
||||
import { isIssueMine, issueOwnerLogin } from '../lib/issueOwnership'
|
||||
import { isSessionMissing } from '../lib/missingSession'
|
||||
@@ -134,6 +135,10 @@ interface IssueDetailPanelProps {
|
||||
me?: string
|
||||
onStartHandoff: (issueNumber: number) => void
|
||||
onAcceptHandoff: (issueNumber: number) => void
|
||||
onAskHandoff: (issueNumber: number) => void
|
||||
onCancelHandoffRequest: (issueNumber: number) => void
|
||||
onAcceptHandoffRequest: (issueNumber: number) => void
|
||||
onRejectHandoffRequest: (issueNumber: number) => void
|
||||
isHandoffRunning: (issueNumber: number) => boolean
|
||||
/** Gitea login → 头像 data URI;只读工单在标题旁贴归属人头像。 */
|
||||
avatars?: Record<string, string>
|
||||
@@ -185,6 +190,10 @@ export function IssueDetailPanel({
|
||||
isSessionTabPending,
|
||||
onStartHandoff,
|
||||
onAcceptHandoff,
|
||||
onAskHandoff,
|
||||
onCancelHandoffRequest,
|
||||
onAcceptHandoffRequest,
|
||||
onRejectHandoffRequest,
|
||||
isHandoffRunning,
|
||||
avatars,
|
||||
}: IssueDetailPanelProps) {
|
||||
@@ -847,6 +856,68 @@ export function IssueDetailPanel({
|
||||
<ExternalLink className="size-3.5" />
|
||||
{issue.source === 'youtrack' ? '在 YouTrack 打开' : '在 Gitea 打开'}
|
||||
</button>
|
||||
{canAskHandoff(issue, me) && (
|
||||
<button
|
||||
type="button"
|
||||
data-tooltip="让负责人把这个工单移交给你"
|
||||
onClick={() => onAskHandoff(issue.number)}
|
||||
className="inline-flex shrink-0 items-center gap-1 rounded border border-[var(--vscode-panel-border)] px-2 py-1 text-xs hover:bg-black/10 dark:hover:bg-white/10"
|
||||
>
|
||||
申请移交
|
||||
</button>
|
||||
)}
|
||||
{canCancelHandoffRequest(issue, me) && (
|
||||
<>
|
||||
<span
|
||||
className="max-w-[16rem] truncate text-xs opacity-70"
|
||||
data-tooltip={issue.handoffRequestError && issue.handoffRequestError !== 'rejected' ? issue.handoffRequestError : '等对方同意'}
|
||||
>
|
||||
{issue.handoffRequestError && issue.handoffRequestError !== 'rejected' ? issue.handoffRequestError : '已申请'}
|
||||
</span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => onCancelHandoffRequest(issue.number)}
|
||||
className="inline-flex shrink-0 items-center gap-1 rounded border border-[var(--vscode-panel-border)] px-2 py-1 text-xs hover:bg-black/10 dark:hover:bg-white/10"
|
||||
>
|
||||
取消申请
|
||||
</button>
|
||||
</>
|
||||
)}
|
||||
{canAnswerHandoffRequest(issue, me) && (
|
||||
<>
|
||||
<span className="shrink-0 text-xs opacity-80">
|
||||
{issue.handoffRequestFrom}
|
||||
{' '}
|
||||
想要这个工单
|
||||
</span>
|
||||
{issue.handoffRequestError && issue.handoffRequestError !== 'rejected'
|
||||
? (
|
||||
<span
|
||||
className="max-w-[16rem] truncate text-xs text-[var(--vscode-errorForeground)]"
|
||||
data-tooltip={issue.handoffRequestError}
|
||||
>
|
||||
{issue.handoffRequestError}
|
||||
</span>
|
||||
)
|
||||
: null}
|
||||
<button
|
||||
type="button"
|
||||
disabled={isHandoffRunning(issue.number)}
|
||||
onClick={() => onAcceptHandoffRequest(issue.number)}
|
||||
className="inline-flex shrink-0 items-center gap-1 rounded border border-green-500/60 bg-green-500/10 px-2 py-1 text-xs text-green-500 hover:bg-green-500/20 disabled:opacity-50"
|
||||
>
|
||||
{isHandoffRunning(issue.number) ? <Loader2 className="size-3.5 animate-spin" /> : null}
|
||||
同意
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => onRejectHandoffRequest(issue.number)}
|
||||
className="inline-flex shrink-0 items-center gap-1 rounded border border-[var(--vscode-panel-border)] px-2 py-1 text-xs hover:bg-black/10 dark:hover:bg-white/10"
|
||||
>
|
||||
拒绝
|
||||
</button>
|
||||
</>
|
||||
)}
|
||||
{/* Close/delete write to gitea by number — hide for youtrack cards to
|
||||
avoid acting on a gitea issue of the same number. */}
|
||||
{issue.source !== 'youtrack' && !readOnly && (
|
||||
|
||||
Reference in new issue
Block a user