mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
修复 Codex 会话导入合并后列表为空的问题。 Fix Codex session import merge so a session is not detected as a duplicate of itself and deleted during merge.
This commit is contained in:
+11
-3
@@ -204,6 +204,7 @@ function SessionsPage() {
|
||||
const [isSyncConfirmOpen, setIsSyncConfirmOpen] = useState(false)
|
||||
const [isRestartingCodexDesktop, setIsRestartingCodexDesktop] = useState(false)
|
||||
const [pendingDuplicateSessionIds, setPendingDuplicateSessionIds] = useState<string[]>([])
|
||||
const [pendingDuplicateHapiSessionIds, setPendingDuplicateHapiSessionIds] = useState<string[]>([])
|
||||
const [duplicateSessionGroups, setDuplicateSessionGroups] = useState<CodexDuplicateSessionGroup[]>([])
|
||||
const [isDuplicateMergeConfirmOpen, setIsDuplicateMergeConfirmOpen] = useState(false)
|
||||
const [isMergingDuplicateSessions, setIsMergingDuplicateSessions] = useState(false)
|
||||
@@ -312,6 +313,7 @@ function SessionsPage() {
|
||||
// 中文注释:重复会话确认框关闭时一并清空“本次选中导入”的上下文,确保后续检测不会误用上一轮的 codexSessionId。
|
||||
setIsDuplicateMergeConfirmOpen(false)
|
||||
setPendingDuplicateSessionIds([])
|
||||
setPendingDuplicateHapiSessionIds([])
|
||||
setDuplicateSessionGroups([])
|
||||
}, [])
|
||||
|
||||
@@ -367,7 +369,9 @@ function SessionsPage() {
|
||||
|
||||
const redirectTarget = selectedSessionId
|
||||
? result.merged.find((group) => group.removedSessionIds?.includes(selectedSessionId))
|
||||
: undefined
|
||||
?? result.merged.find((group) => Boolean(group.canonicalSessionId))
|
||||
: result.merged.find((group) => Boolean(group.canonicalSessionId))
|
||||
const redirectSessionId = redirectTarget?.canonicalSessionId ?? pendingDuplicateHapiSessionIds[0]
|
||||
|
||||
closeDuplicateMergeDialog()
|
||||
await Promise.all([
|
||||
@@ -381,10 +385,10 @@ function SessionsPage() {
|
||||
])
|
||||
await refetch()
|
||||
|
||||
if (redirectTarget?.canonicalSessionId) {
|
||||
if (redirectSessionId) {
|
||||
navigate({
|
||||
to: '/sessions/$sessionId',
|
||||
params: { sessionId: redirectTarget.canonicalSessionId }
|
||||
params: { sessionId: redirectSessionId }
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -408,6 +412,7 @@ function SessionsPage() {
|
||||
isMergingDuplicateSessions,
|
||||
navigate,
|
||||
normalizeCodexScriptError,
|
||||
pendingDuplicateHapiSessionIds,
|
||||
pendingDuplicateSessionIds,
|
||||
queryClient,
|
||||
refetch,
|
||||
@@ -475,6 +480,7 @@ function SessionsPage() {
|
||||
await refetch()
|
||||
|
||||
setPendingDuplicateSessionIds([])
|
||||
setPendingDuplicateHapiSessionIds(result.hapiSessionIds ?? [])
|
||||
setDuplicateSessionGroups([])
|
||||
setIsDuplicateMergeConfirmOpen(false)
|
||||
try {
|
||||
@@ -489,6 +495,7 @@ function SessionsPage() {
|
||||
|
||||
if (duplicateResult.duplicates.length > 0) {
|
||||
setPendingDuplicateSessionIds(sessionIds)
|
||||
setPendingDuplicateHapiSessionIds(result.hapiSessionIds ?? [])
|
||||
setDuplicateSessionGroups(duplicateResult.duplicates)
|
||||
setIsDuplicateMergeConfirmOpen(true)
|
||||
}
|
||||
@@ -529,6 +536,7 @@ function SessionsPage() {
|
||||
refetch,
|
||||
setDuplicateSessionGroups,
|
||||
setIsDuplicateMergeConfirmOpen,
|
||||
setPendingDuplicateHapiSessionIds,
|
||||
setPendingDuplicateSessionIds,
|
||||
t
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user