Skip to content

Commit 01e40e0

Browse files
committed
fix: 修复分屏模式错误提示未加载目标的问题
1 parent c63cd25 commit 01e40e0

1 file changed

Lines changed: 46 additions & 4 deletions

File tree

src/views/TextSearchView.vue

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,43 @@ const applyLoadedTarget = async (target: LoadedSearchTarget | undefined) => {
156156
}
157157
}
158158
159+
const ensureLoadedTargetReady = async (): Promise<boolean> => {
160+
if (sourceMode.value !== 'loaded') {
161+
return Boolean(fileName.value && (fileContent.value || fileHandle.value))
162+
}
163+
164+
const targets = props.loadedTargets ?? []
165+
if (targets.length === 0) return false
166+
167+
const selectedExists = selectedLoadedTargetId.value
168+
? targets.some(item => item.id === selectedLoadedTargetId.value)
169+
: false
170+
171+
let targetId = selectedExists ? selectedLoadedTargetId.value : ''
172+
if (!targetId) {
173+
targetId = props.loadedDefaultTargetId && targets.some(item => item.id === props.loadedDefaultTargetId)
174+
? props.loadedDefaultTargetId
175+
: targets[0].id
176+
}
177+
if (!targetId) return false
178+
179+
if (selectedLoadedTargetId.value !== targetId) {
180+
selectedLoadedTargetId.value = targetId
181+
}
182+
183+
const target = targets.find(item => item.id === targetId)
184+
if (!target) return false
185+
186+
const expectedName = target.fileName || target.label
187+
const contentReady = Boolean(fileName.value && (fileContent.value || fileHandle.value))
188+
const sameTargetLoaded = fileName.value === expectedName
189+
if (!contentReady || !sameTargetLoaded) {
190+
await applyLoadedTarget(target)
191+
}
192+
193+
return Boolean(fileName.value && (fileContent.value || fileHandle.value))
194+
}
195+
159196
watch(
160197
() => [props.loadedTargets, props.loadedDefaultTargetId] as const,
161198
async ([targets, defaultId]) => {
@@ -186,7 +223,6 @@ watch(
186223
},
187224
{ immediate: true, deep: true }
188225
)
189-
190226
watch(selectedLoadedTargetId, async (id) => {
191227
if (sourceMode.value !== 'loaded') return
192228
const target = (props.loadedTargets ?? []).find(item => item.id === id)
@@ -302,9 +338,15 @@ const performSearch = async () => {
302338
return
303339
}
304340
305-
// 检查是否有文件
306-
if (!fileName.value || (!fileContent.value && !fileHandle.value)) {
307-
alert(sourceMode.value === 'loaded' ? '请先选择已加载目标文件' : '请先选择文件')
341+
// 检查是否有文件;loaded 模式下尝试自动补齐默认目标
342+
if (sourceMode.value === 'loaded') {
343+
const ready = await ensureLoadedTargetReady()
344+
if (!ready) {
345+
alert('请先选择已加载目标文件')
346+
return
347+
}
348+
} else if (!fileName.value || (!fileContent.value && !fileHandle.value)) {
349+
alert('请先选择文件')
308350
return
309351
}
310352

0 commit comments

Comments
 (0)