@@ -108,6 +108,44 @@ export default function SearchPage() {
108108 ) ;
109109 const [ loadingAnalytics , setLoadingAnalytics ] = useState < boolean > ( false ) ;
110110
111+ const loadUserAnalytics = useCallback ( async ( ) => {
112+ if ( ! userParam ) return ;
113+
114+ setLoadingAnalytics ( true ) ;
115+ try {
116+ const analytics = await githubAPIClient . getUserAnalytics ( userParam ) ;
117+ if ( analytics ) {
118+ // Convert GitHubUserDetailed to the expected profile format
119+ const convertedAnalytics : UserAnalytics = {
120+ profile : analytics . profile ? {
121+ avatar_url : analytics . profile . avatar_url ,
122+ login : analytics . profile . login ,
123+ type : analytics . profile . type ,
124+ bio : analytics . profile . bio ,
125+ public_repos : analytics . profile . public_repos ,
126+ followers : analytics . profile . followers ,
127+ following : analytics . profile . following ,
128+ location : analytics . profile . location ,
129+ company : analytics . profile . company ,
130+ html_url : analytics . profile . html_url
131+ } : undefined ,
132+ overview : analytics . overview ,
133+ languages : analytics . languages ,
134+ behavior : analytics . behavior
135+ } ;
136+ setUserAnalytics ( convertedAnalytics ) ;
137+ } else {
138+ setUserAnalytics ( null ) ;
139+ }
140+ } catch ( error ) {
141+ console . error ( "Analytics error:" , error ) ;
142+ // Fallback to null if API fails
143+ setUserAnalytics ( null ) ;
144+ } finally {
145+ setLoadingAnalytics ( false ) ;
146+ }
147+ } , [ userParam ] ) ;
148+
111149 const throttle = useCallback (
112150 < T extends ( ...args : unknown [ ] ) => void > (
113151 func : T ,
@@ -202,7 +240,7 @@ export default function SearchPage() {
202240 loadUserAnalytics ( ) ;
203241 }
204242 }
205- } , [ userParam , repoParam , setCurrentQuery , setCurrentSearchType ] ) ;
243+ } , [ userParam , repoParam , setCurrentQuery , setCurrentSearchType , loadUserAnalytics ] ) ;
206244 const performSearch = async ( query : string , type : "users" | "repos" ) => {
207245 setSearchResults ( ( prev ) => ( { ...prev , loading : true , error : null } ) ) ;
208246
@@ -239,22 +277,6 @@ export default function SearchPage() {
239277 }
240278 } ;
241279
242- const loadUserAnalytics = async ( ) => {
243- if ( ! userParam ) return ;
244-
245- setLoadingAnalytics ( true ) ;
246- try {
247- const analytics = await githubAPIClient . getUserAnalytics ( userParam ) ;
248- setUserAnalytics ( analytics ) ;
249- } catch ( error ) {
250- console . error ( "Analytics error:" , error ) ;
251- // Fallback to null if API fails
252- setUserAnalytics ( null ) ;
253- } finally {
254- setLoadingAnalytics ( false ) ;
255- }
256- } ;
257-
258280 // Dispatch active section to sidebar
259281 useEffect ( ( ) => {
260282 const event = new CustomEvent ( "activeSectionChange" , {
0 commit comments