feat: Allow saving of empty URL list and update success messages accordingly, enhancing user feedback and functionality in AutoUrlManager.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m5s

This commit is contained in:
2026-01-11 19:33:49 +07:00
parent d7c769c655
commit 02bc19770f
+7 -9
View File
@@ -107,19 +107,15 @@ function AutoUrlManager() {
setError(''); setError('');
setSuccess(''); setSuccess('');
// Validate URLs // Validate URLs (пустой список тоже валиден - для очистки)
const validUrls = urls const validUrls = urls
.filter(u => u != null && isValidHttpUrl(u.url) && isValidCommunity(u.community)) .filter(u => u != null && isValidHttpUrl(u.url) && isValidCommunity(u.community))
.map(u => ({ url: u.url.trim(), community: String(u.community).trim() })); .map(u => ({ url: u.url.trim(), community: String(u.community).trim() }));
if (validUrls.length === 0) {
setError('Добавьте хотя бы одну корректную запись (валидный URL и числовой community)');
return;
}
await api.post('/auto-urls', { urls: validUrls }); await api.post('/auto-urls', { urls: validUrls });
setUrls(validUrls); setUrls(validUrls);
setLastSaved(new Date().toISOString()); setLastSaved(new Date().toISOString());
setSuccess('URL-адреса сохранены успешно'); setSuccess(validUrls.length === 0 ? 'Список URL очищен' : 'URL-адреса сохранены успешно');
setSelectedRows(new Set()); setSelectedRows(new Set());
setTimeout(() => setSuccess(''), 3000); setTimeout(() => setSuccess(''), 3000);
} catch (err) { } catch (err) {
@@ -257,7 +253,9 @@ function AutoUrlManager() {
const handleKeyDown = (e) => { const handleKeyDown = (e) => {
if ((e.ctrlKey || e.metaKey) && e.key === 's') { if ((e.ctrlKey || e.metaKey) && e.key === 's') {
e.preventDefault(); e.preventDefault();
if (hasAtLeastOneValidRow && !saving && !processing) { // Разрешить сохранение: либо пустой список, либо есть валидные строки
const canSave = urls.length === 0 || hasAtLeastOneValidRow;
if (canSave && !saving && !processing) {
saveUrls(); saveUrls();
} }
} }
@@ -272,7 +270,7 @@ function AutoUrlManager() {
}; };
window.addEventListener('keydown', handleKeyDown); window.addEventListener('keydown', handleKeyDown);
return () => window.removeEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown);
}, [hasAtLeastOneValidRow, saving, processing, saveUrls]); }, [urls.length, hasAtLeastOneValidRow, saving, processing, saveUrls]);
return ( return (
<div> <div>
@@ -326,7 +324,7 @@ function AutoUrlManager() {
className="btn btn-outline-primary" className="btn btn-outline-primary"
type="button" type="button"
onClick={saveUrls} onClick={saveUrls}
disabled={saving || processing || !hasAtLeastOneValidRow} disabled={saving || processing || (urls.length > 0 && !hasAtLeastOneValidRow)}
title="Сохранить список URL (Ctrl+S)" title="Сохранить список URL (Ctrl+S)"
> >
{saving ? ( {saving ? (