feat: improve recovery for user actions
This commit is contained in:
@@ -18,6 +18,7 @@ const reportId = Astro.url.searchParams.get("report_id");
|
||||
{state === "sent" && <div class="notice success">Улов отправлен на модерацию. Спасибо!</div>}
|
||||
{state === "screenshot_sent" && <div class="notice success">Скриншот добавлен к ранее созданной заявке.</div>}
|
||||
{state === "create_error" && <div class="notice error" id="form-error" tabindex="-1"><strong>Заявка не создана.</strong> Проверьте поля; введённые значения сохранены.</div>}
|
||||
{state === "conflict" && <div class="notice warning" id="form-error" tabindex="-1"><strong>Повторная отправка отличается от уже сохранённой.</strong> Черновик оставлен на странице; проверьте поля и отправьте его с новым ключом.</div>}
|
||||
{state === "rate_limited" && <div class="notice error" id="form-error" tabindex="-1"><strong>Слишком много отправок.</strong> Подождите 10 минут перед повторной попыткой.</div>}
|
||||
{state === "timeout" && <div class="notice error" id="form-error" tabindex="-1"><strong>Превышено время ожидания.</strong> Проверьте соединение и попробуйте снова.</div>}
|
||||
{state === "server_error" && <div class="notice error" id="form-error" tabindex="-1"><strong>Сервер временно недоступен.</strong> Попробуйте позже.</div>}
|
||||
@@ -39,7 +40,7 @@ const reportId = Astro.url.searchParams.get("report_id");
|
||||
removeItem: (k: string) => { try { sessionStorage.removeItem(k); } catch {} },
|
||||
};
|
||||
// A05: Restore draft on all error states that don't destroy the submission
|
||||
const recoverableStates = ["create_error", "rate_limited", "server_error", "timeout"];
|
||||
const recoverableStates = ["create_error", "conflict", "rate_limited", "server_error", "timeout"];
|
||||
if (form && recoverableStates.includes(state)) {
|
||||
try {
|
||||
const draft = JSON.parse(safeStorage.getItem(key) || "{}");
|
||||
|
||||
Reference in New Issue
Block a user