fix(import): ignore stale probe responses on URL change
If user changed the URL while a probe was in flight, the late response for the old URL would still set lastProbedUrl and enable the start button, breaking the "확인 전 가져오기 차단" UI invariant. Drop the response (and the catch path, and the post-confirm path) when the current input no longer matches the probed URL. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -94,6 +94,11 @@
|
||||
headers: { 'content-type': 'application/json' },
|
||||
body: JSON.stringify({ url: url })
|
||||
}).then(function (r) { return r.json() }).then(function (j) {
|
||||
// stale probe 응답 무시: 사용자가 그동안 입력을 바꿨으면 이 응답으로
|
||||
// UI 상태 (lastProbedUrl, 버튼 enable, probeInfo, title) 를 갱신하면 안 된다.
|
||||
// (race: URL A 로 probe → 응답 도착 전 URL B 로 수정 → A 응답이 B 의
|
||||
// 가져오기 버튼을 켜버리는 버그.)
|
||||
if (ytUrl.value.trim() !== url) return
|
||||
if (!j.ok) {
|
||||
probeInfo.textContent = j.message || '확인 실패'
|
||||
ytProbeBtn.disabled = false
|
||||
@@ -113,11 +118,15 @@
|
||||
return
|
||||
}
|
||||
}
|
||||
// confirm 동안에도 사용자가 입력을 바꿨을 수 있으므로 한 번 더 검증.
|
||||
if (ytUrl.value.trim() !== url) return
|
||||
if (!titleInput.value) titleInput.value = p.title
|
||||
// 이 URL 에 한해 확인 활성화. URL 변경 감지용으로 마지막 probe URL 저장.
|
||||
lastProbedUrl = url
|
||||
ytStartBtn.disabled = false
|
||||
}).catch(function (e) {
|
||||
// 마찬가지로 stale 응답이면 무시 (현재 입력값에 영향 안 주게).
|
||||
if (ytUrl.value.trim() !== url) return
|
||||
probeInfo.textContent = '확인 실패: ' + e.message
|
||||
ytProbeBtn.disabled = false
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user