generated from pricelees/issue-pr-template
<!-- 제목 양식 --> <!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) --> ## 📝 관련 이슈 및 PR **PR과 관련된 이슈 번호** - #37 ## ✨ 작업 내용 <!-- 어떤 작업을 했는지 알려주세요! --> - 가격, 시간 등 테마를 정의하는데 필요하다고 느껴지는 필드 추가 - JPA Auditing으로 감사 정보 확인 기능 추가 - 프론트엔드 페이지 디자인 변경 및 새로운 API 반영 ## 🧪 테스트 <!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! --> 6db81feb9b 을 바탕으로 향후 다른 모든 기능의 테스트를 통합 테스트로 전환할 예정. 지금은 불필요한 테스트가 너무 많다고 느껴짐. ## 📚 참고 자료 및 기타 <!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! --> - FInder / Writer / Validator 구조를 수정할 필요가 있음. 복잡하고 가독성이 낮은 로직만 별도로 빼는 것이 더 효율적이라고 판단됨. Reviewed-on: #38 Co-authored-by: pricelees <priceelees@gmail.com> Co-committed-by: pricelees <priceelees@gmail.com>
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import React from 'react';
|
|
import { Link, useNavigate } from 'react-router-dom';
|
|
import { useAuth } from 'src/context/AuthContext';
|
|
import 'src/css/navbar.css';
|
|
|
|
const Navbar: React.FC = () => {
|
|
const { loggedIn, userName, logout } = useAuth();
|
|
const navigate = useNavigate();
|
|
|
|
const handleLogout = async (e: React.MouseEvent) => {
|
|
e.preventDefault();
|
|
try {
|
|
await logout();
|
|
navigate('/');
|
|
} catch (error) {
|
|
console.error('Logout failed:', error);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<nav className="navbar-container">
|
|
<div className="nav-links">
|
|
<Link className="nav-link" to="/">홈</Link>
|
|
<Link className="nav-link" to="/v2/reservation">예약하기</Link>
|
|
</div>
|
|
<div className="nav-actions">
|
|
{!loggedIn ? (
|
|
<>
|
|
<button className="btn btn-secondary" onClick={() => navigate('/v2/login')}>로그인</button>
|
|
<button className="btn btn-primary" onClick={() => navigate('/v2/signup')}>회원가입</button>
|
|
</>
|
|
) : (
|
|
<div className="profile-info">
|
|
<img className="profile-image" src="/image/default-profile.png" alt="Profile" />
|
|
<span>{userName}</span>
|
|
<div className="dropdown-menu">
|
|
<Link className="dropdown-item" to="/my-reservation/v2">내 예약</Link>
|
|
<div className="dropdown-divider" />
|
|
<a className="dropdown-item" href="#" onClick={handleLogout}>로그아웃</a>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</div>
|
|
</nav>
|
|
);
|
|
};
|
|
|
|
export default Navbar;
|