✨ feat(vscode): 摘修复按 PR 分组框选,可搜作者和标题
This commit is contained in:
1 parent
0031851df3
commit
3e3750c494
9 files changed
+353
-42
No files matched your search
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
import type { ToastItem } from '../components/ToastStack'
|
||||
import type { ExtensionToWebview, LogEntry } from '../lib/messages'
|
||||
import type { ExtensionToWebview, LogEntry, ReleaseCommitGroup } from '../lib/messages'
|
||||
import type { Issue, IssueColumn } from '../types'
|
||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import { compareIssuesInColumn } from '../lib/issueSort'
|
||||
@@ -246,6 +246,10 @@ export interface UseIssuesResult {
|
||||
release: ReleaseStatus | undefined
|
||||
/** 发布按钮三个动作;running 由扩展侧状态决定,webview 不自置。 */
|
||||
runRelease: (action: ReleaseAction) => void
|
||||
/** 摘修复选单:扩展推来分组后的未发布提交。 */
|
||||
cherryPick: { branch: string, groups: ReleaseCommitGroup[] } | null
|
||||
dismissCherryPick: () => void
|
||||
confirmCherryPick: (shas: string[]) => void
|
||||
/**
|
||||
* Whether the workspace's `.env*` files are currently chmod-locked
|
||||
* according to `workspaceState`. Persisted per-workspace.
|
||||
@@ -336,6 +340,7 @@ export function useIssues(): UseIssuesResult {
|
||||
const [commitRunning, setCommitRunning] = useState<boolean>(false)
|
||||
const [hasChanges, setHasChanges] = useState<boolean>(false)
|
||||
const [release, setRelease] = useState<ReleaseStatus>()
|
||||
const [cherryPick, setCherryPick] = useState<{ branch: string, groups: ReleaseCommitGroup[] } | null>(null)
|
||||
const [envLocked, setEnvLocked] = useState<boolean>(false)
|
||||
const [envFileCount, setEnvFileCount] = useState<number>(0)
|
||||
const [envLockRunning, setEnvLockRunning] = useState<boolean>(false)
|
||||
@@ -656,6 +661,15 @@ export function useIssues(): UseIssuesResult {
|
||||
postMessage({ type: `release/${action}` })
|
||||
}, [])
|
||||
|
||||
const dismissCherryPick = useCallback((): void => {
|
||||
setCherryPick(null)
|
||||
}, [])
|
||||
|
||||
const confirmCherryPick = useCallback((shas: string[]): void => {
|
||||
setCherryPick(null)
|
||||
postMessage({ type: 'release/cherry-pick-confirm', shas })
|
||||
}, [])
|
||||
|
||||
const toggleEnvLock = useCallback((): void => {
|
||||
// Double-click guard — the next `env-lock/status` clears the running flag.
|
||||
if (envLockRunning)
|
||||
@@ -845,6 +859,9 @@ export function useIssues(): UseIssuesResult {
|
||||
case 'release/status':
|
||||
setRelease(msg)
|
||||
break
|
||||
case 'release/pick-show':
|
||||
setCherryPick({ branch: msg.branch, groups: msg.groups })
|
||||
break
|
||||
case 'env-lock/status': {
|
||||
setEnvLocked(msg.locked)
|
||||
setEnvFileCount(msg.fileCount)
|
||||
@@ -873,5 +890,5 @@ export function useIssues(): UseIssuesResult {
|
||||
return cleanup
|
||||
}, [clearPrDiffSummaryRunning, markHandoffRunning])
|
||||
|
||||
return { state, settings, globalAutoReview, youtrackConfigured, importYouTrack, toasts, profiles, setIssues, refresh, scope, toggleScope, saveSettings, listYouTrackProjects, youtrackProjects, dismissSettings, requestEditAuth, createIssue, dismissToast, openUrl, resumeSession, resumeReviewSession, startTestSession, resumeTestSession, focusSession, openFile, implement, generatePrDiffSummary, isPrDiffSummaryRunning, openPr, openWorktree, deleteWorktree, mergeBranch, deleteIssue, closeIssue, closeSessionTab, startBrainstormSession, changeColumn, setDependency, clearDependency, updateIssueAutoReview, updateIssueProfilePath, updateIssueBrainstormProfilePath, updateIssueTestProfilePath, logs, fetchLogs, clearLogs, pendingSelectId, clearPendingSelect, commitRunning, runCommit, hasChanges, release, runRelease, envLocked, envFileCount, envLockRunning, envLockTitle, toggleEnvLock, me, handoffUsers, requestHandoffUsers, startHandoff, acceptHandoff, isHandoffRunning }
|
||||
return { state, settings, globalAutoReview, youtrackConfigured, importYouTrack, toasts, profiles, setIssues, refresh, scope, toggleScope, saveSettings, listYouTrackProjects, youtrackProjects, dismissSettings, requestEditAuth, createIssue, dismissToast, openUrl, resumeSession, resumeReviewSession, startTestSession, resumeTestSession, focusSession, openFile, implement, generatePrDiffSummary, isPrDiffSummaryRunning, openPr, openWorktree, deleteWorktree, mergeBranch, deleteIssue, closeIssue, closeSessionTab, startBrainstormSession, changeColumn, setDependency, clearDependency, updateIssueAutoReview, updateIssueProfilePath, updateIssueBrainstormProfilePath, updateIssueTestProfilePath, logs, fetchLogs, clearLogs, pendingSelectId, clearPendingSelect, commitRunning, runCommit, hasChanges, release, runRelease, cherryPick, dismissCherryPick, confirmCherryPick, envLocked, envFileCount, envLockRunning, envLockTitle, toggleEnvLock, me, handoffUsers, requestHandoffUsers, startHandoff, acceptHandoff, isHandoffRunning }
|
||||
}
|
||||
Reference in new issue
Block a user