@@ -5,21 +5,37 @@ import "./css/index.css";
5
5
6
6
function Contribute ( ) {
7
7
const userURL = "https://api.github.com/users/" ;
8
- const url =
9
- "https://api.github.com/repos/devvsakib/github-error-solve/contributors" ;
8
+ const url = "https://api.github.com/repos/devvsakib/github-error-solve/contributors" ;
9
+
10
+
10
11
const [ data , setData ] = useState ( [ ] ) ;
11
12
const [ loading , setLoading ] = useState ( true ) ;
13
+
12
14
useEffect ( ( ) => {
13
15
setLoading ( false ) ;
14
16
const fetchUsers = async ( url ) => {
15
- const response = await fetch ( url ) ;
16
- const users = await response . json ( ) ;
17
- setData ( users ) ;
18
- setLoading ( true ) ;
19
- } ;
20
- fetchUsers ( url ) ;
17
+ const response = await fetch ( url ) ;
18
+ const users = await response . json ( ) ;
19
+ setData ( users ) ;
20
+ const usersMerged = await Promise . all ( users . map ( async item => {
21
+ const result = await getUserObj ( item . url )
22
+ let tempFinData = {
23
+ ...item ,
24
+ ...result
25
+ }
26
+ return tempFinData
27
+ } ) )
28
+ setData ( usersMerged )
29
+ setLoading ( true ) ;
30
+ } ;
31
+ const getUserObj = async url => {
32
+ const response = await fetch ( url ) ;
33
+ let dataOfUser = await response . json ( ) ;
34
+ return ( { twitter_username :dataOfUser . twitter_username } )
35
+ }
36
+ fetchUsers ( url ) ;
21
37
} , [ data . length ] ) ;
22
-
38
+
23
39
// fun purpose, but looks better, isn't it?
24
40
const changeColor = ( ) => {
25
41
const colorArray = [
@@ -39,12 +55,12 @@ function Contribute() {
39
55
< section className = "flex flex-wrap justify-center" >
40
56
{
41
57
// User filtered by CONTRIBUTIONS number, contribute more to jump in first place
42
-
58
+
43
59
loading ? (
44
60
data . map ( ( user ) => (
45
- < div
46
- id = "container"
47
- className = { `py-4 mb-4 col-span-12 md:col-span-6 xl:col-span-4 md:px-6 border-l-4 rounded-lg bg-dark-secondary flex flex-col mt-8 items-center mx-auto gap-2 px-3 border-[#${ changeColor ( ) } ] hover:border-primary hover:text-primary` }
61
+ < div key = { user . login }
62
+ id = "container"
63
+ className = { `py-4 mb-4 col-span-12 md:col-span-6 xl:col-span-4 md:px-6 border-l-4 rounded-lg bg-dark-secondary flex flex-col mt-8 items-center mx-auto gap-2 px-3 border-[#${ changeColor ( ) } ] hover:border-primary hover:text-primary` }
48
64
>
49
65
< img className = "pfp mb-8 skeleton" src = { user . avatar_url } />
50
66
< h1 className = "text-center -mb-10 font-semibold uppercase" >
@@ -55,11 +71,11 @@ function Contribute() {
55
71
</ h1 >
56
72
< div className = "links text-sm" >
57
73
< a className = "spf-link" href = { user . html_url } >
58
- Github
59
- </ a >
60
- < a className = "spf-link" href = { user . twiter } >
61
- Twiter
74
+ GitHub
62
75
</ a >
76
+ { user . twitter_username && < a className = "spf-link" href = { `https://twitter.com/${ user . twitter_username } ` } >
77
+ Twitter
78
+ </ a > }
63
79
{ /* spf-link : abbreviation of (specific-link) for css */ }
64
80
</ div >
65
81
</ div >
0 commit comments