fix(pwa): drop stale parts-suggestion responses to stop input self-erasing

В CreateRepairPage queryPartSuggestions после await перезаписывал
partsDraft.name значением q из момента старта запроса. При быстром вводе
("К" → "Ке" → "Кеп" → "Кепу") поздно вернувшийся ответ для "К" откатывал
поле обратно на "К" — пользователи это видели как «текст частично сам
стирается». Делаем функциональный setState и роняем ответ если name уже
другой. EditRepairPage не задет (там корректный паттерн).
This commit is contained in:
2026-05-25 12:44:41 +10:00
parent 9642eb6e45
commit 8eac0b74fc
@@ -259,7 +259,14 @@ export default function CreateRepairPage() {
setPartsDraft({ name: q, suggestions: [] }); setPartsDraft({ name: q, suggestions: [] });
if (!q.trim()) return; if (!q.trim()) return;
const list = await suggestParts(q); const list = await suggestParts(q);
setPartsDraft({ name: q, suggestions: list.map((s) => s.name) }); // У43 race-fix: пока запрос для "К" летел, юзер дописал до "Кепу" — поздний
// ответ не должен перезаписывать .name старым значением (это и есть
// «текст частично сам стирается»). Применяем suggestions только если
// ввод не менялся; иначе тихо роняем ответ.
setPartsDraft((prev) => {
if (prev.name !== q) return prev;
return { name: q, suggestions: list.map((s) => s.name) };
});
}; };
const addPart = (name: string) => { const addPart = (name: string) => {