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
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m5s
This commit is contained in:
@@ -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 ? (
|
||||||
|
|||||||
Reference in New Issue
Block a user