Skip to content

Commit 89792be

Browse files
author
杨纲
committed
fix(start-develop-task-dialog): improve branch selection logic and handle project changes more effectively
1 parent b41e308 commit 89792be

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

frontend/src/components/console/project/start-develop-task-dialog.tsx

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Spinner } from "@/components/ui/spinner"
1212
import { getBrandFromModelName, getInterfaceTypeBadge, getModelHealthBadge, getOwnerTypeBadge, selectHost, selectImage, selectModel } from "@/utils/common"
1313
import { apiRequest } from "@/utils/requestUtils"
1414
import { IconSparkles } from "@tabler/icons-react"
15-
import { useState, useEffect, useMemo } from "react"
15+
import { useState, useEffect, useMemo, useRef } from "react"
1616
import { useNavigate } from "react-router-dom"
1717
import { toast } from "sonner"
1818

@@ -79,15 +79,14 @@ export default function StartDevelopTaskDialog({
7979
if (resp.code === 0 && resp.data) {
8080
const branchList = resp.data.map((b: DomainBranch) => b.name || '').filter(Boolean)
8181
setBranches(branchList)
82-
83-
// 优先选择 main 或 master,否则选择第一个
84-
if (branchList.includes('main')) {
85-
setSelectedBranch('main')
86-
} else if (branchList.includes('master')) {
87-
setSelectedBranch('master')
88-
} else if (branchList.length > 0) {
89-
setSelectedBranch(branchList[0])
90-
}
82+
83+
// 仅在当前选择不存在时才重置,避免轮询刷新覆盖用户选择
84+
setSelectedBranch((prev) => {
85+
if (prev && branchList.includes(prev)) return prev
86+
if (branchList.includes('main')) return 'main'
87+
if (branchList.includes('master')) return 'master'
88+
return branchList[0] || ''
89+
})
9190
} else {
9291
toast.error('获取分支列表失败: ' + resp.message)
9392
}
@@ -100,13 +99,28 @@ export default function StartDevelopTaskDialog({
10099
}
101100
}
102101

102+
const prevOpenRef = useRef<boolean>(false)
103+
const prevProjectIdRef = useRef<string | undefined>(undefined)
104+
103105
useEffect(() => {
104-
if (open) {
106+
if (!open) {
107+
prevOpenRef.current = false
108+
return
109+
}
110+
111+
const projectId = project?.id
112+
const firstOpen = !prevOpenRef.current
113+
const projectChanged = projectId && projectId !== prevProjectIdRef.current
114+
115+
if (firstOpen || projectChanged) {
105116
fetchBranches()
106117
setUserMessage('')
107118
setSelectedModelId(selectModel(modelsWithEconomy, true))
108119
}
109-
}, [open, project, modelsWithEconomy])
120+
121+
prevOpenRef.current = true
122+
prevProjectIdRef.current = projectId
123+
}, [open, project?.id, modelsWithEconomy])
110124

111125
const handleSubmit = async () => {
112126
if (!userMessage.trim()) {

0 commit comments

Comments
 (0)