Skip to content

Commit

Permalink
Merge pull request #14 from Skhuthon/feature/9
Browse files Browse the repository at this point in the history
[#9] feat: ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ๋ฐ ๋งˆ์ดํŽ˜์ด์ง€ ์ˆ˜์ •
  • Loading branch information
202212025 authored Jun 29, 2024
2 parents 0ca95df + 13c119e commit 3b9311f
Show file tree
Hide file tree
Showing 11 changed files with 140 additions and 95 deletions.
2 changes: 0 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/react-router-dom": "^5.3.3",
"axios": "^1.7.2",
"aos": "^2.3.4",
"axios": "^1.7.2",
"react": "^18.3.1",
Expand Down
3 changes: 2 additions & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import UserPage from "./pages/UserPage";
import LoginPage from "./pages/LoginPage";
import ReviewWriting from "./pages/ReviewWriting";
import ReviewList from "./pages/ReviewList";
import KakaoRedirectHandler from "./pages/KakaoRedirectHandler";
import MyPage from "./pages/MyPage";
import PostReview from "./pages/PostReview";
import ReadReview from "./pages/ReadReview";
Expand All @@ -34,7 +35,7 @@ const App: React.FC = () => {
<Route path="/themeRecsResult" element={<ThemeRecsResult />} />
<Route path="/userPage" element={<UserPage />} />
<Route path="/loginPage" element={<LoginPage />} />
<Route path="/auth/kakao/redirect" element={<UserPage />} />
<Route path="/auth/kakao/redirect" element={<KakaoRedirectHandler />} />
<Route path="/reviewList" element={<ReviewList />} />
<Route path="/reviewWriting" element={<ReviewWriting />} />
<Route path="/themeList" element={<ThemeList />} />
Expand Down
2 changes: 1 addition & 1 deletion src/components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const Navbar = () => {
</div>
</NavLink>

<NavLink to={`/loginPage`}>
<NavLink to={`/userPage`}>
<div className="nav">
<div>
<BsPersonFill />
Expand Down
6 changes: 4 additions & 2 deletions src/components/ReviewTheme.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { Theme } from "../styles/RoomThemeStyled";
import { Theme } from "../styles/RoomTheme2Styled";

const ReviewTheme = () => {


return (
<Theme>
<Theme data-aos="fade-up" data-aos-duration="1000">
<div className="titleBox">
<p>๋ฐฉํƒˆ์ถœ ํ…Œ๋งˆ ์ด๋ฆ„</p>
</div>
Expand Down
49 changes: 0 additions & 49 deletions src/pages/AuthRedirect.tsx

This file was deleted.

7 changes: 6 additions & 1 deletion src/pages/KakaoLogin.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import React from "react";
import React, { useEffect } from "react";
import loginBtn from '../image/kakao_login_img.png'
import axios from "axios";
import { useNavigate } from "react-router-dom";

const KakaoLogin: React.FC = () => {

const loginWithKakao = () => {

if (window.Kakao && window.Kakao.Auth) {
window.Kakao.Auth.authorize({
redirectUri: "http://localhost:3000/auth/kakao/redirect", // ์„ค์ •ํ•œ ๋ฆฌ๋””๋ ‰์…˜ URI ์ž…๋ ฅ
Expand All @@ -23,3 +27,4 @@ const KakaoLogin: React.FC = () => {
};

export default KakaoLogin;

37 changes: 37 additions & 0 deletions src/pages/KakaoRedirectHandler.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import React, { useEffect } from "react";
import { useNavigate } from "react-router-dom";
import axios from "axios";

const KakaoRedirectHandler = () => {
console.log("๋กœ๊ทธ์ธ์ค‘...");
const navigate = useNavigate();
const code = new URL(window.location.href).searchParams.get("code");
console.log(code);
const login = async () => {
try {
console.log('code', code);

const response = await axios.post(
"https://api.labyrinth30-edu.link/auth/kakao/redirect",
{
params: { code },
}
);
localStorage.setItem("accessToken", response.data.accessToken);
navigate("/themeRecs");
console.log(response);
} catch (error) {
console.log('123', error);
}
};

useEffect(() => {
if (code) {
login();
}
}, []);
return (
<div>๋กœ๊ทธ์ธ ์ค‘..</div>
);
};
export default KakaoRedirectHandler;
1 change: 1 addition & 0 deletions src/pages/LoginPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import KakaoLogin from "./KakaoLogin"; // Kakao ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ
import { Container } from "../styles/LoginPageStyled";

const LoginPage: React.FC = () => {

useEffect(() => {
const initializeKakao = () => {
console.log("Kakao SDK ์ดˆ๊ธฐํ™” ์‹œ๋„"); // ๋กœ๊ทธ ์ถ”๊ฐ€
Expand Down
56 changes: 51 additions & 5 deletions src/pages/ReviewWriting.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,45 @@
import { Select } from "../styles/ThemeRecsQuestionsStyled";
import { IoIosArrowForward } from "react-icons/io";
import { Container } from "../styles/NavbarStyled";
import axios from "axios";
import { useState } from "react";

interface reviewContents {
themeName: String;
isSuccess: Boolean;
numberOfPeople: Number;
numberofHintsUsed: Number;
remainingTime: Number;
totalThemeTime: Number;
content: String;
}

const ReviewWriting = () => {
const [minute1, setMinute1] = useState<number>(0);
const [second, setSecond] = useState<number>(0);
const [minute2, setMinute2] = useState<number>(0);

const handleSubmit = (event: React.FormEvent) => {
event.preventDefault();

const minute1Converted = minute1 / 60;
const minute2Converted = minute2 / 60;

const data = {
minute1: minute1Converted,
second: second,
minute2: minute2Converted
};

axios.post('YOUR_BACKEND_ENDPOINT', data)
.then(response => {
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error);
});
};

return (
<>
<Container>
Expand Down Expand Up @@ -37,9 +74,18 @@ const ReviewWriting = () => {
<input type="number" />ํšŒ
</div>
<div>
<input type="number" />๋ถ„
<input type="number" />์ดˆ /
<input type="number" />๋ถ„
<input type="number"
value={minute1}
onChange={(e) => setMinute1(Number(e.target.value))}
/>๋ถ„
<input type="number"
value={second}
onChange={(e) => setSecond(Number(e.target.value))}
/>์ดˆ /
<input type="number"
value={minute2}
onChange={(e) => setMinute2(Number(e.target.value))}
/>๋ถ„
</div>
</>
</Container>
Expand All @@ -49,9 +95,9 @@ const ReviewWriting = () => {
<div>์–ด๋– ์…จ๋‚˜์š”?</div>
</div>
<div>
<textarea placeholder="ํ•œ ์ค„ ํ‰ ๋‚จ๊ฒจ์ฃผ์„ธ์š”" />
<textarea placeholder="ํ•œ ์ค„ ํ‰ ๋‚จ๊ฒจ์ฃผ์„ธ์š”" maxLength={500} />
</div>
<div>
<div onClick={handleSubmit}>
<button>์ œ์ถœ</button>
<div>
<IoIosArrowForward />
Expand Down
71 changes: 38 additions & 33 deletions src/pages/UserPage.tsx
Original file line number Diff line number Diff line change
@@ -1,48 +1,53 @@
import { BsPersonFill } from "react-icons/bs";
import { Container } from "../styles/UserPageStyled";
import ReviewTheme from "../components/ReviewTheme";
import { NavLink } from "react-router-dom";
import { NavLink, useNavigate } from "react-router-dom";
import { IoIosArrowForward } from "react-icons/io";
import { useEffect } from "react";
import axios from "axios";

const UserPage = () => {
const navigate = useNavigate();

useEffect(() => {
const params = new URLSearchParams(window.location.search);
const code = params.get('code');

if (code) {
console.log('์ธ๊ฐ€ ์ฝ”๋“œ:', code); // ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅ

// ๋ฐฑ์—”๋“œ๋กœ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ POST ์š”์ฒญ
axios.post('https://api.labyrinth30-edu.link/auth/kakao/redirect', { code })
.then(response => {
const { access_token } = response.data;
localStorage.setItem('kakao_token', access_token);
navigate('/userPage'); // ๋กœ๊ทธ์ธ ํ›„ ์ด๋™ํ•  ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜
})
.catch(error => {
console.error('Error:', error);
navigate('/loginPage'); // ๋กœ๊ทธ์ธ ์‹คํŒจ ์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜
});
} else {
console.error('์ธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.');
navigate('/loginPage'); // ์ธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜
}
}, [navigate]);


return (
<>
<Container>
<div className="userInfo">
<div className="userImg">
<BsPersonFill />
</div>
<div className="userName">์ด๋ฆ„</div>
</div>
<div className="reviews">
<div className="reviewTitle">์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ</div>
<NavLink to={`/reviewList`} className="moreReviews">
<div>๋”๋ณด๊ธฐ</div>
<div className="icon">
<IoIosArrowForward />
</div>
</NavLink>
<div className="reviewBox">
<ReviewTheme />
<ReviewTheme />
<ReviewTheme />
<div>
<div>๋‹น์‹ ์„ ์œ„ํ•œ ๋ฐฉ,</div>
<div>userName๋‹˜์˜ ๋ฐฉํƒˆ์ถœ ์ผ์ง€</div>
<div>
<NavLink to='/reviewWriting'>+ ๋ฆฌ๋ทฐ ์ž‘์„ฑ</NavLink>
</div>
</div>

<div className="text">
<div className="subTitle">๋‹น์‹ ์„ ์œ„ํ•œ ๋ฐฉ,</div>
<div className="title">์–ด๋• ๋Š”์ง€<br />๋‚จ๊ฒจ์ฃผ์‹œ๊ฒ ์–ด์š”?</div>
<div>
<ReviewTheme />
<ReviewTheme />
</div>
<NavLink to={`/reviewWriting`}>
<>
<div className="writingBtn">
<div className="writing">๋‚จ๊ธฐ๋Ÿฌ ๊ฐ€๊ธฐ</div>
<div className="icon">
<IoIosArrowForward />
</div>
</div>
</>
</NavLink>
</Container>
</>
);
Expand Down

0 comments on commit 3b9311f

Please sign in to comment.