Skip to content

Commit db615a1

Browse files
react query hooks on pages
1 parent 8a707c7 commit db615a1

File tree

2 files changed

+8
-46
lines changed

2 files changed

+8
-46
lines changed

frontend/src/pages/AnnouncementsPage/Announcements.tsx

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { IoFunnelOutline } from 'react-icons/io5';
44
import 'react-quill-new/dist/quill.snow.css';
55
import S3Image from '../../components/S3Image';
66
import Pagination from '../../components/Pagination';
7-
import { API_BASE_URL } from '../../config/api';
87
import { useAnnouncements } from '../../hooks/queries/useAnnouncements';
98
import { useTags } from '../../hooks/queries/useTags';
9+
import { usePageContent } from '../../hooks/queries/usePageContent';
1010

1111
type Announcement = {
1212
id: string;
@@ -44,14 +44,13 @@ const AnnouncementsPage = ({ previewContent }: AnnouncementsPageProps = {}) => {
4444
const { data: announcementsData, isLoading: announcementsLoading, error: announcementsError } = useAnnouncements(currentPage, itemsPerPage);
4545
const { data: tags = [] } = useTags();
4646
const tagsArray = tags as Tag[];
47+
const { data: pageContentData, isLoading: pageContentLoading } = usePageContent('announcements');
4748

4849
const [timeFilter, setTimeFilter] = useState<'24h' | 'week' | 'month' | 'year' | null>(null);
4950
const [selectedTags, setSelectedTags] = useState<Tag[]>([]);
5051
const [isFilterOpen, setIsFilterOpen] = useState(false);
5152
const [searchQuery, setSearchQuery] = useState('');
5253
const filterRef = useRef<HTMLDivElement>(null);
53-
const [content, setContent] = useState<PageContent>({});
54-
const [pageLoading, setPageLoading] = useState(true);
5554

5655
const navigate = useNavigate();
5756

@@ -65,26 +64,8 @@ const AnnouncementsPage = ({ previewContent }: AnnouncementsPageProps = {}) => {
6564
const loading = announcementsLoading;
6665
const error = announcementsError ? 'An unexpected error occurred' : null;
6766

68-
useEffect(() => {
69-
if (previewContent) {
70-
setContent(previewContent);
71-
setPageLoading(false);
72-
} else {
73-
const loadContent = async () => {
74-
try {
75-
const response = await fetch(`${API_BASE_URL}/api/page-content/announcements`);
76-
if (!response.ok) throw new Error('Failed to fetch page content');
77-
const data = await response.json();
78-
setContent(data);
79-
} catch (error) {
80-
console.error('Error loading page content:', error);
81-
} finally {
82-
setPageLoading(false);
83-
}
84-
};
85-
loadContent();
86-
}
87-
}, [previewContent]);
67+
const content = previewContent || pageContentData || {};
68+
const pageLoading = !previewContent && pageContentLoading;
8869

8970

9071
useEffect(() => {

frontend/src/pages/BlogsPage/Blogs.tsx

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { IoFunnelOutline } from 'react-icons/io5';
44
import 'react-quill-new/dist/quill.snow.css';
55
import S3Image from '../../components/S3Image';
66
import Pagination from '../../components/Pagination';
7-
import { API_BASE_URL } from '../../config/api';
87
import { useBlogs } from '../../hooks/queries/useBlogs';
98
import { useBlogTags } from '../../hooks/queries/useTags';
9+
import { usePageContent } from '../../hooks/queries/usePageContent';
1010

1111
type Tag = {
1212
id: string;
@@ -44,13 +44,12 @@ const BlogsPage = ({ previewContent }: BlogsPageProps = {}) => {
4444
const { data: blogsData, isLoading: blogsLoading, error: blogsError } = useBlogs(currentPage, itemsPerPage);
4545
const { data: allTags = [] } = useBlogTags();
4646
const tagsArray = allTags as Tag[];
47+
const { data: pageContentData, isLoading: pageContentLoading } = usePageContent('blogs');
4748

4849
const [timeFilter, setTimeFilter] = useState<'24h' | 'week' | 'month' | 'year' | null>(null);
4950
const [selectedTags, setSelectedTags] = useState<Tag[]>([]);
5051
const [isFilterOpen, setIsFilterOpen] = useState(false);
5152
const [searchQuery, setSearchQuery] = useState('');
52-
const [content, setContent] = useState<PageContent>({});
53-
const [pageLoading, setPageLoading] = useState(true);
5453

5554
const filterRef = useRef<HTMLDivElement>(null);
5655
const navigate = useNavigate();
@@ -65,26 +64,8 @@ const BlogsPage = ({ previewContent }: BlogsPageProps = {}) => {
6564
const loading = blogsLoading;
6665
const error = blogsError ? 'An unexpected error occurred' : null;
6766

68-
useEffect(() => {
69-
if (previewContent) {
70-
setContent(previewContent);
71-
setPageLoading(false);
72-
} else {
73-
const loadContent = async () => {
74-
try {
75-
const response = await fetch(`${API_BASE_URL}/api/page-content/blogs`);
76-
if (!response.ok) throw new Error('Failed to fetch page content');
77-
const data = await response.json();
78-
setContent(data);
79-
} catch (error) {
80-
console.error('Error loading page content:', error);
81-
} finally {
82-
setPageLoading(false);
83-
}
84-
};
85-
loadContent();
86-
}
87-
}, [previewContent]);
67+
const content = previewContent || pageContentData || {};
68+
const pageLoading = !previewContent && pageContentLoading;
8869

8970

9071
useEffect(() => {

0 commit comments

Comments
 (0)