diff --git a/public/editor.js b/public/editor.js index 66d8d71..7f66c4f 100644 --- a/public/editor.js +++ b/public/editor.js @@ -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 })