Showing
10 changed files
with
66 additions
and
59 deletions
... | @@ -119,4 +119,5 @@ dist | ... | @@ -119,4 +119,5 @@ dist |
119 | package-lock.json | 119 | package-lock.json |
120 | /uploads | 120 | /uploads |
121 | /assets | 121 | /assets |
122 | -build | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
122 | +build | ||
123 | +.vscode | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -9,7 +9,7 @@ const handleRepo = (list) =>{ | ... | @@ -9,7 +9,7 @@ const handleRepo = (list) =>{ |
9 | list.forEach(element => { | 9 | list.forEach(element => { |
10 | const anchor = document.createElement("a"); | 10 | const anchor = document.createElement("a"); |
11 | anchor.href = element.url; | 11 | anchor.href = element.url; |
12 | - anchor.target = "_blank" | 12 | + anchor.target = "_blank"; |
13 | anchor.innerHTML = `<span class="repoName">${element.name}</span> : ${element.description} - <span class="repoStar">${element.stars} stars</span>` | 13 | anchor.innerHTML = `<span class="repoName">${element.name}</span> : ${element.description} - <span class="repoStar">${element.stars} stars</span>` |
14 | trendRepoBox.appendChild(anchor); | 14 | trendRepoBox.appendChild(anchor); |
15 | }); | 15 | }); | ... | ... |
... | @@ -6,8 +6,7 @@ const totalContributionIndicator = document.getElementById( | ... | @@ -6,8 +6,7 @@ const totalContributionIndicator = document.getElementById( |
6 | ); | 6 | ); |
7 | const userCharacterBox = document.querySelector(".user-status__character"); | 7 | const userCharacterBox = document.querySelector(".user-status__character"); |
8 | const userRepoBox = document.querySelector(".user-repo"); | 8 | const userRepoBox = document.querySelector(".user-repo"); |
9 | -const URL = | 9 | +const githubNickname = document.getElementById("jsGithubNickname"); |
10 | - "https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2"; | ||
11 | 10 | ||
12 | const handleImage = () => { | 11 | const handleImage = () => { |
13 | const total = totalContributionIndicator.innerText; | 12 | const total = totalContributionIndicator.innerText; |
... | @@ -41,16 +40,16 @@ const handleRepo = (list) => { | ... | @@ -41,16 +40,16 @@ const handleRepo = (list) => { |
41 | }); | 40 | }); |
42 | }; | 41 | }; |
43 | 42 | ||
44 | -const getGithubRepo = () => { | 43 | +const getGithubRepo = () =>{ |
45 | - const response = fetch(URL) | 44 | + const nickname = githubNickname.innerText; |
46 | - .then(function (response) { | 45 | + const userId = window.location.href.split("/users/")[1]; |
47 | - return response.json(); | 46 | + const response = fetch(`/users/${userId}/repo`,{headers:{nickname}}).then(function(reponse){ |
48 | - }) | 47 | + const data = reponse.json(); |
49 | - .then(function (data) { | 48 | + return data |
50 | - const trendRepoList = data.slice(0, 2); | 49 | + }).then(function(data){ |
51 | - handleRepo(trendRepoList); | 50 | + handleRepo(data); |
52 | - }); | 51 | + }) |
53 | -}; | 52 | +} |
54 | 53 | ||
55 | const init = () => { | 54 | const init = () => { |
56 | handleImage(); | 55 | handleImage(); | ... | ... |
... | @@ -4,9 +4,9 @@ | ... | @@ -4,9 +4,9 @@ |
4 | flex-direction: column; | 4 | flex-direction: column; |
5 | padding: 30px; | 5 | padding: 30px; |
6 | img { | 6 | img { |
7 | - width: 100px; | 7 | + width: 176px; |
8 | - height: 100px; | 8 | + height: 220px; |
9 | - object-fit: cover; | 9 | + object-fit: contain; |
10 | } | 10 | } |
11 | .fileUpload { | 11 | .fileUpload { |
12 | display: flex; | 12 | display: flex; | ... | ... |
... | @@ -96,16 +96,21 @@ | ... | @@ -96,16 +96,21 @@ |
96 | font-size: 1.2rem; | 96 | font-size: 1.2rem; |
97 | overflow-x: scroll; | 97 | overflow-x: scroll; |
98 | } | 98 | } |
99 | - i { | 99 | + button { |
100 | - background: transparent; | ||
101 | border: none; | 100 | border: none; |
101 | + background: none; | ||
102 | + padding: 0; | ||
102 | i { | 103 | i { |
103 | - font-size: 1.5rem; | 104 | + background: transparent; |
104 | - margin: 3px; | 105 | + border: none; |
106 | + i { | ||
107 | + font-size: 1.5rem; | ||
108 | + margin: 3px; | ||
109 | + } | ||
110 | + } | ||
111 | + i:hover { | ||
112 | + cursor: pointer; | ||
105 | } | 113 | } |
106 | - } | ||
107 | - i:hover { | ||
108 | - cursor: pointer; | ||
109 | } | 114 | } |
110 | } | 115 | } |
111 | .home-search__form:hover { | 116 | .home-search__form:hover { | ... | ... |
... | @@ -48,7 +48,6 @@ | ... | @@ -48,7 +48,6 @@ |
48 | } | 48 | } |
49 | 49 | ||
50 | .boxEffect { | 50 | .boxEffect { |
51 | - z-index: -1; | ||
52 | content: ""; | 51 | content: ""; |
53 | bottom: 15px; | 52 | bottom: 15px; |
54 | right: 10px; | 53 | right: 10px; |
... | @@ -85,9 +84,9 @@ | ... | @@ -85,9 +84,9 @@ |
85 | 84 | ||
86 | .user-profile__column { | 85 | .user-profile__column { |
87 | img { | 86 | img { |
88 | - width: 120px; | 87 | + width: 176px; |
89 | - height: 120px; | 88 | + height: 220px; |
90 | - object-fit: cover; | 89 | + object-fit: contain; |
91 | margin: 5px; | 90 | margin: 5px; |
92 | } | 91 | } |
93 | .user-profile__link { | 92 | .user-profile__link { |
... | @@ -117,6 +116,12 @@ | ... | @@ -117,6 +116,12 @@ |
117 | .user-profile__tech { | 116 | .user-profile__tech { |
118 | display: flex; | 117 | display: flex; |
119 | } | 118 | } |
119 | + .user-profile__introduction { | ||
120 | + width: 100%; | ||
121 | + overflow: hidden; | ||
122 | + word-wrap: break-word; | ||
123 | + word-break: break-all; | ||
124 | + } | ||
120 | ul { | 125 | ul { |
121 | display: flex; | 126 | display: flex; |
122 | flex-direction: column; | 127 | flex-direction: column; |
... | @@ -212,7 +217,7 @@ | ... | @@ -212,7 +217,7 @@ |
212 | max-width: 200px; | 217 | max-width: 200px; |
213 | height: auto; | 218 | height: auto; |
214 | object-fit: cover; | 219 | object-fit: cover; |
215 | - margin-top: px; | 220 | + margin-top: 20px; |
216 | } | 221 | } |
217 | } | 222 | } |
218 | } | 223 | } | ... | ... |
... | @@ -27,18 +27,13 @@ export const getUserDetail = async (req, res) => { | ... | @@ -27,18 +27,13 @@ export const getUserDetail = async (req, res) => { |
27 | const id = req.params.id; | 27 | const id = req.params.id; |
28 | const quote = await getQuote(); | 28 | const quote = await getQuote(); |
29 | const user = await User.findById(id); | 29 | const user = await User.findById(id); |
30 | - const repo = await getRepos(); | ||
31 | const totalCon = await getContributions(user.githubName); | 30 | const totalCon = await getContributions(user.githubName); |
32 | res.render("userDetail", { | 31 | res.render("userDetail", { |
33 | pagetTitle: "User Detail", | 32 | pagetTitle: "User Detail", |
34 | quote: quote.quote, | 33 | quote: quote.quote, |
35 | author: quote.author, | 34 | author: quote.author, |
36 | user, | 35 | user, |
37 | - fitstRepoName: repo.fitstRepoName, | 36 | + totalContributions: totalCon |
38 | - firstRepoUrl: repo.firstRepoUrl, | ||
39 | - secondRepoName: repo.secondRepoName, | ||
40 | - secondRepoUrl: repo.secondRepoUrl, | ||
41 | - totalContributions: totalCon, | ||
42 | }); | 37 | }); |
43 | } catch (error) { | 38 | } catch (error) { |
44 | console.log(error); | 39 | console.log(error); |
... | @@ -87,7 +82,7 @@ export const postEditProfile = async (req, res) => { | ... | @@ -87,7 +82,7 @@ export const postEditProfile = async (req, res) => { |
87 | ); | 82 | ); |
88 | req.session.passport.user = updatedUser; | 83 | req.session.passport.user = updatedUser; |
89 | //console.log(updatedUser); | 84 | //console.log(updatedUser); |
90 | - res.redirect("/users/edit-profile"); | 85 | + res.redirect(`/users/${id}`); |
91 | } catch (error) { | 86 | } catch (error) { |
92 | console.log(error); | 87 | console.log(error); |
93 | res.redirect("/"); | 88 | res.redirect("/"); |
... | @@ -135,7 +130,7 @@ export const githubLoginCallback = async (_, __, profile, done) => { | ... | @@ -135,7 +130,7 @@ export const githubLoginCallback = async (_, __, profile, done) => { |
135 | avatarUrl, | 130 | avatarUrl, |
136 | githubUrl, | 131 | githubUrl, |
137 | name, | 132 | name, |
138 | - email, | 133 | |
139 | }); | 134 | }); |
140 | return done(null, newUser); | 135 | return done(null, newUser); |
141 | } | 136 | } |
... | @@ -154,25 +149,6 @@ export const logout = (req, res) => { | ... | @@ -154,25 +149,6 @@ export const logout = (req, res) => { |
154 | res.redirect("/"); | 149 | res.redirect("/"); |
155 | }; | 150 | }; |
156 | 151 | ||
157 | -const getRepos = async () => { | ||
158 | - const url = | ||
159 | - "https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2"; | ||
160 | - const latelyRepos = await axios.get(url).then(function (response) { | ||
161 | - return response.data; | ||
162 | - }); | ||
163 | - const fitstRepoName = latelyRepos[0].name; | ||
164 | - const secondRepoName = latelyRepos[1].name; | ||
165 | - const firstRepoUrl = latelyRepos[0].html_url; | ||
166 | - const secondRepoUrl = latelyRepos[1].html_url; | ||
167 | - | ||
168 | - return { | ||
169 | - fitstRepoName, | ||
170 | - firstRepoUrl, | ||
171 | - secondRepoName, | ||
172 | - secondRepoUrl, | ||
173 | - }; | ||
174 | -}; | ||
175 | - | ||
176 | const getContributions = async (username) => { | 152 | const getContributions = async (username) => { |
177 | const token = process.env.GH_SECRET_SH; | 153 | const token = process.env.GH_SECRET_SH; |
178 | const headers = { | 154 | const headers = { |
... | @@ -192,3 +168,21 @@ const getContributions = async (username) => { | ... | @@ -192,3 +168,21 @@ const getContributions = async (username) => { |
192 | .totalContributions; | 168 | .totalContributions; |
193 | return total; | 169 | return total; |
194 | }; | 170 | }; |
171 | + | ||
172 | +export const getRepos = async(req,res) =>{ | ||
173 | + try{ | ||
174 | + const githubNickname = req.headers.nickname | ||
175 | + const URL = `https://api.github.com/users/${githubNickname}/repos?sort=updated&per_page=2`; | ||
176 | + const response = await fetch(URL,{ | ||
177 | + headers: { | ||
178 | + authorization: `token ${process.env.GH_SECRET_SH}` | ||
179 | + } | ||
180 | + }).then(function (response) { | ||
181 | + return response.json(); | ||
182 | + }).then(function (data) { | ||
183 | + return res.send(data); | ||
184 | + }); | ||
185 | + }catch(error){ | ||
186 | + console.log(error); | ||
187 | + } | ||
188 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | import express from "express"; | 1 | import express from "express"; |
2 | import { | 2 | import { |
3 | getEditProfile, | 3 | getEditProfile, |
4 | + getRepos, | ||
4 | getUserDetail, | 5 | getUserDetail, |
5 | handleUsers, | 6 | handleUsers, |
6 | postEditProfile, | 7 | postEditProfile, |
... | @@ -20,5 +21,6 @@ userRouter.post( | ... | @@ -20,5 +21,6 @@ userRouter.post( |
20 | ); | 21 | ); |
21 | 22 | ||
22 | userRouter.get("/:id", getUserDetail); | 23 | userRouter.get("/:id", getUserDetail); |
24 | +userRouter.get("/:id/repo", getRepos); | ||
23 | 25 | ||
24 | export default userRouter; | 26 | export default userRouter; | ... | ... |
... | @@ -18,7 +18,8 @@ block content | ... | @@ -18,7 +18,8 @@ block content |
18 | a(href="https://google.com" target="_blank") | 18 | a(href="https://google.com" target="_blank") |
19 | img(src="https://user-images.githubusercontent.com/48612525/86507657-d54fbd80-bd8e-11ea-866b-ac26496481ae.png" alt="google icon") | 19 | img(src="https://user-images.githubusercontent.com/48612525/86507657-d54fbd80-bd8e-11ea-866b-ac26496481ae.png" alt="google icon") |
20 | input(type="text" id="jsInput" placeholder="Google 검색") | 20 | input(type="text" id="jsInput" placeholder="Google 검색") |
21 | - i.fa.fa-search(aria-hidden="true") | 21 | + button |
22 | + i.fa.fa-search(aria-hidden="true") | ||
22 | 23 | ||
23 | .home-quote | 24 | .home-quote |
24 | h2=quote | 25 | h2=quote | ... | ... |
... | @@ -12,7 +12,7 @@ block content | ... | @@ -12,7 +12,7 @@ block content |
12 | img(src=`/${user.avatarUrl}`) | 12 | img(src=`/${user.avatarUrl}`) |
13 | .user-profile__link | 13 | .user-profile__link |
14 | a(href=user.githubUrl target="_blank") GitHub | 14 | a(href=user.githubUrl target="_blank") GitHub |
15 | - i.fab.fa-github | 15 | + i.fab.fa-github |
16 | a(href=`//${user.blogUrl}` target="_blank") Blog | 16 | a(href=`//${user.blogUrl}` target="_blank") Blog |
17 | i.fas.fa-link | 17 | i.fas.fa-link |
18 | .user-profile__column | 18 | .user-profile__column |
... | @@ -24,7 +24,7 @@ block content | ... | @@ -24,7 +24,7 @@ block content |
24 | h3 GITHUB | 24 | h3 GITHUB |
25 | br | 25 | br |
26 | |NICKNAME | 26 | |NICKNAME |
27 | - h4=user.githubName | 27 | + h4#jsGithubNickname=user.githubName |
28 | .user-profile__email | 28 | .user-profile__email |
29 | h3 EMAIL | 29 | h3 EMAIL |
30 | h4=user.email | 30 | h4=user.email | ... | ... |
-
Please register or login to post a comment