import { ForumCategory, ForumPost, ForumTopic } from '@/proxy/forum/forum' import { useStoreState } from '@/store/store' import React, { useState, useEffect } from 'react' import { useForumData } from './useForumData' import { ForumView } from './forum/ForumView' import { Container } from '@/components/shared' import { Helmet } from 'react-helmet' import { useLocalization } from '@/utils/hooks/useLocalization' import { APP_NAME } from '@/constants/app.constant' import { Button } from '@/components/ui' export function Forum() { const { translate } = useLocalization() const { user } = useStoreState((state) => state.auth) const { categories, topics, posts, loading, error, createTopic, createPost, likePost, unlikePost, clearError, } = useForumData() const [selectedCategory, setSelectedCategory] = useState(null) const [selectedTopic, setSelectedTopic] = useState(null) const [forumViewState, setForumViewState] = useState<'categories' | 'topics' | 'posts'>( 'categories', ) useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if ((e.metaKey || e.ctrlKey) && e.key === 'k') { e.preventDefault() } } document.addEventListener('keydown', handleKeyDown) return () => document.removeEventListener('keydown', handleKeyDown) }, []) useEffect(() => { if (error) { const timer = setTimeout(() => { clearError() }, 5000) return () => clearTimeout(timer) } }, [error, clearError]) return ( {error && (
Error: {error}
)} createTopic(topicData).then(() => {})} onCreatePost={(postData) => createPost(postData).then(() => {})} onLikePost={(id) => likePost(id).then(() => {})} onUnlikePost={(id) => unlikePost(id).then(() => {})} currentUserId={user.id} currentUserName={user.name} selectedCategory={selectedCategory} selectedTopic={selectedTopic} viewState={forumViewState} onCategorySelect={setSelectedCategory} onTopicSelect={setSelectedTopic} onViewStateChange={setForumViewState} />
) } export default Forum