@@ -12,7 +12,7 @@ import { Spinner } from "@/components/ui/spinner"
1212import { getBrandFromModelName , getInterfaceTypeBadge , getModelHealthBadge , getOwnerTypeBadge , selectHost , selectImage , selectModel } from "@/utils/common"
1313import { apiRequest } from "@/utils/requestUtils"
1414import { IconSparkles } from "@tabler/icons-react"
15- import { useState , useEffect , useMemo } from "react"
15+ import { useState , useEffect , useMemo , useRef } from "react"
1616import { useNavigate } from "react-router-dom"
1717import { 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