Исправлена проблема, когда после сабмита формы не загружался список статей.

This commit is contained in:
anibilag 2025-02-25 19:37:30 +03:00
parent be59f4418a
commit ae5e789f1b
2 changed files with 24 additions and 19 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -10,8 +10,8 @@ import { GalleryImage, CategoryTitles, CityTitles, CategoryIds, CityIds, Article
import { Pencil, Trash2, ChevronLeft, ChevronRight, ImagePlus, X } from 'lucide-react';
// Default cover image for new articles
const DEFAULT_COVER_IMAGE = '/images/empty-cover.png';
// Обложка по умоланию для новых статей
const DEFAULT_COVER_IMAGE = '/images/cover-placeholder.webp';
export function AdminPage() {
const [articleId, setArticleId] = useState('');
@ -26,6 +26,7 @@ export function AdminPage() {
const [editingId, setEditingId] = useState<string | null>(null);
const [showDeleteModal, setShowDeleteModal] = useState<string | null>(null);
const [articles, setArticles] = useState<Article[]>([]);
const [refreshArticles, setRefreshArticles] = useState(0);
const [totalPages, setTotalPages] = useState(1);
const [currentPage, setCurrentPage] = useState(1);
const [filterCategoryId, setFilterCategoryId] = useState(0);
@ -33,6 +34,7 @@ export function AdminPage() {
const [error, setError] = useState<string | null>(null);
const [content, setContent] = useState('');
// Загрузка статей
useEffect(() => {
const fetchArticles = async () => {
@ -53,7 +55,7 @@ export function AdminPage() {
};
fetchArticles();
}, [currentPage, filterCategoryId, filterCityId]);
}, [currentPage, filterCategoryId, filterCityId, refreshArticles]);
const handlePageChange = (page: number) => {
setCurrentPage(page);
@ -89,6 +91,8 @@ export function AdminPage() {
...prev,
articles: prev.filter(article => article.id !== id),
}));
setRefreshArticles(prev => prev + 1);
} catch (error) {
setError('Не удалось удалить статью');
console.error(error);
@ -112,6 +116,7 @@ export function AdminPage() {
};
if (editingId) {
// Редактирование существующей статьи
try {
const response = await axios.put(`/api/articles/${editingId}`, articleData, {
headers: {
@ -119,12 +124,7 @@ export function AdminPage() {
},
});
setArticles(prev => ({
...prev,
articles: prev.map(article =>
article.id === editingId ? response.data : article
),
}));
setArticles(prev => prev.map(article => article.id === editingId ? response.data : article));
} catch (error) {
setError('Не удалось обновить статью');
console.error(error);
@ -134,18 +134,21 @@ export function AdminPage() {
}
else {
// Создание новой статьи
try {
const response = await axios.post('/api/articles', articleData, {
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
setArticles(prev => ({
...prev,
articles: [...prev, response.data],
}));
console.log('Создание новой статьи:', articleData);
setArticles(prev => [...prev, response.data]);
} catch (error) {
setError('Не удалось создать статью');
console.error(error);
}
}
setRefreshArticles(prev => prev + 1);
// Очистка формы статьи
setArticleId('');
@ -157,6 +160,8 @@ export function AdminPage() {
setReadTime(5);
setGallery([]);
setContent(''); // Очищаем содержимое редактора
setEditingId(null);
};
const handleGalleryImageUpload = (imageUrl: string) => {