99} from "@site/src/lib/statsProvider" ;
1010import SlotCounter from "react-slot-counter" ;
1111import { useLocation , useHistory } from "@docusaurus/router" ;
12+ import useDocusaurusContext from "@docusaurus/useDocusaurusContext" ;
1213import {
1314 githubService ,
1415 GitHubDiscussion ,
@@ -30,6 +31,7 @@ import {
3031 BarChart3 ,
3132 ArrowLeft ,
3233 GitFork ,
34+ RefreshCw ,
3335} from "lucide-react" ;
3436import NavbarIcon from "@site/src/components/navbar/NavbarIcon" ;
3537import "@site/src/components/discussions/discussions.css" ;
@@ -65,6 +67,9 @@ const categories: Category[] = [
6567const DashboardContent : React . FC = ( ) => {
6668 const location = useLocation ( ) ;
6769 const history = useHistory ( ) ;
70+ const {
71+ siteConfig : { customFields } ,
72+ } = useDocusaurusContext ( ) ;
6873 const [ activeTab , setActiveTab ] = useState <
6974 "home" | "discuss" | "giveaway" | "contributors"
7075 > ( "home" ) ;
@@ -80,6 +85,14 @@ const DashboardContent: React.FC = () => {
8085 const [ discussionsError , setDiscussionsError ] = useState < string | null > ( null ) ;
8186 const [ showDashboardMenu , setShowDashboardMenu ] = useState ( false ) ;
8287
88+ // Initialize GitHub service with token from Docusaurus config
89+ useEffect ( ( ) => {
90+ const token = customFields ?. gitToken as string ;
91+ if ( token ) {
92+ githubService . setToken ( token ) ;
93+ }
94+ } , [ customFields ?. gitToken ] ) ;
95+
8396 // Close dashboard menu when clicking outside
8497 useEffect ( ( ) => {
8598 const handleClickOutside = ( event : MouseEvent ) => {
@@ -138,6 +151,10 @@ const DashboardContent: React.FC = () => {
138151 }
139152 } ;
140153
154+ const handleRefreshDiscussions = ( ) => {
155+ fetchDiscussions ( ) ;
156+ } ;
157+
141158 // Discussion handlers
142159 const handleDiscussionTabChange = ( tab : DiscussionTab ) => {
143160 setActiveDiscussionTab ( tab ) ;
@@ -597,6 +614,17 @@ const DashboardContent: React.FC = () => {
597614 < option value = "latest" > Latest</ option >
598615 < option value = "oldest" > Oldest</ option >
599616 </ select >
617+ < button
618+ className = "refresh-discussions-btn"
619+ onClick = { handleRefreshDiscussions }
620+ disabled = { discussionsLoading }
621+ title = "Refresh discussions"
622+ >
623+ < RefreshCw
624+ size = { 16 }
625+ className = { discussionsLoading ? "spinning" : "" }
626+ />
627+ </ button >
600628 < button
601629 className = "new-discussion-btn"
602630 onClick = { handleNewDiscussion }
@@ -629,6 +657,15 @@ const DashboardContent: React.FC = () => {
629657 { discussionsError && (
630658 < div className = "discussions-error-message" >
631659 < p > { discussionsError } </ p >
660+ < p >
661+ < a
662+ href = "https://github.com/recodehive/recode-website/discussions"
663+ target = "_blank"
664+ rel = "noopener noreferrer"
665+ >
666+ View discussions on GitHub →
667+ </ a >
668+ </ p >
632669 </ div >
633670 ) }
634671 { ! discussionsLoading &&
0 commit comments