Merge remote-tracking branch 'origin/main'
# Conflicts: # src/App.tsx # src/lib/api.ts
This commit is contained in:
commit
ae2a17ca5c
5
.env.example
Normal file
5
.env.example
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Rename this file to .env and set the API base URL for your environment
|
||||||
|
# Example:
|
||||||
|
# VITE_API_BASE_URL=http://localhost:8000
|
||||||
|
VITE_API_BASE_URL=https://api.example.com
|
||||||
|
|
||||||
@ -16,8 +16,6 @@ import Dashboard from './pages/Dashboard'
|
|||||||
import MePage from './pages/MePage'
|
import MePage from './pages/MePage'
|
||||||
import CharacterEditPage from './pages/CharacterEditPage'
|
import CharacterEditPage from './pages/CharacterEditPage'
|
||||||
import GuidePage from './pages/Guide'
|
import GuidePage from './pages/Guide'
|
||||||
import FriendListPage from './pages/FriendListPage'
|
|
||||||
import FriendRequestsPage from './pages/FriendRequestsPage'
|
|
||||||
|
|
||||||
const darkTheme = createTheme({
|
const darkTheme = createTheme({
|
||||||
palette: {
|
palette: {
|
||||||
@ -48,10 +46,6 @@ function App() {
|
|||||||
<Route path="/characters/:id/edit" element={<CharacterEditPage />} />
|
<Route path="/characters/:id/edit" element={<CharacterEditPage />} />
|
||||||
<Route path="/homeworks/:id/edit" element={<HomeworkEditPage />} />
|
<Route path="/homeworks/:id/edit" element={<HomeworkEditPage />} />
|
||||||
<Route path="/guide" element={<GuidePage />} />
|
<Route path="/guide" element={<GuidePage />} />
|
||||||
<Route path="/friends" element={<FriendListPage />} />
|
|
||||||
<Route path="/friends/requests" element={<FriendRequestsPage />} />
|
|
||||||
{/*<Route path="/friends/:friendId/characters" element={<FriendCharacterPage />} />*/}
|
|
||||||
{/*<Route path="/friends/:friendId/characters/:characterId/homeworks" element={<FriendHomeworkPage />} />*/}
|
|
||||||
</Routes>
|
</Routes>
|
||||||
</Layout>
|
</Layout>
|
||||||
</Router>
|
</Router>
|
||||||
|
|||||||
@ -19,6 +19,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
|||||||
|
|
||||||
const [anchorElCharacter, setAnchorElCharacter] = useState<null | HTMLElement>(null)
|
const [anchorElCharacter, setAnchorElCharacter] = useState<null | HTMLElement>(null)
|
||||||
const [anchorElHomework, setAnchorElHomework] = useState<null | HTMLElement>(null)
|
const [anchorElHomework, setAnchorElHomework] = useState<null | HTMLElement>(null)
|
||||||
|
const [anchorElFriend, setAnchorElFriend] = useState<null | HTMLElement>(null)
|
||||||
const [anchorElUser, setAnchorElUser] = useState<null | HTMLElement>(null)
|
const [anchorElUser, setAnchorElUser] = useState<null | HTMLElement>(null)
|
||||||
|
|
||||||
const handleMenuOpen = (
|
const handleMenuOpen = (
|
||||||
@ -71,6 +72,16 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
|||||||
<MenuItem component={Link} to="/homeworks" onClick={handleMenuClose(setAnchorElHomework)}>숙제 목록</MenuItem>
|
<MenuItem component={Link} to="/homeworks" onClick={handleMenuClose(setAnchorElHomework)}>숙제 목록</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
|
<Button color="inherit" onClick={handleMenuOpen(setAnchorElFriend)}>친구</Button>
|
||||||
|
<Menu
|
||||||
|
anchorEl={anchorElFriend}
|
||||||
|
open={Boolean(anchorElFriend)}
|
||||||
|
onClose={handleMenuClose(setAnchorElFriend)}
|
||||||
|
>
|
||||||
|
<MenuItem component={Link} to="/friends" onClick={handleMenuClose(setAnchorElFriend)}>친구목록</MenuItem>
|
||||||
|
<MenuItem component={Link} to="/friends/requests" onClick={handleMenuClose(setAnchorElFriend)}>요청관리</MenuItem>
|
||||||
|
</Menu>
|
||||||
|
|
||||||
<IconButton color="inherit" onClick={handleUserMenuOpen} size="large">
|
<IconButton color="inherit" onClick={handleUserMenuOpen} size="large">
|
||||||
<AccountCircle />
|
<AccountCircle />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
const api = axios.create({
|
const api = axios.create({
|
||||||
// baseURL: 'https://api.biryu2000.kr',
|
baseURL: 'https://api.biryu2000.kr',
|
||||||
baseURL: 'http://localhost:8000',
|
// baseURL: 'http://localhost:8000',
|
||||||
})
|
})
|
||||||
|
|
||||||
// 요청 시 토큰 자동 추가
|
// 요청 시 토큰 자동 추가
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import { StrictMode } from 'react'
|
import { StrictMode } from 'react'
|
||||||
import { createRoot } from 'react-dom/client'
|
import { createRoot } from 'react-dom/client'
|
||||||
import './index.css'
|
|
||||||
import App from './App.tsx'
|
import App from './App.tsx'
|
||||||
|
|
||||||
// ✅ 추가: AuthProvider import
|
// ✅ 추가: AuthProvider import
|
||||||
|
|||||||
@ -37,11 +37,11 @@ export default function CharacterEditPage() {
|
|||||||
|
|
||||||
const handleUpdate = async () => {
|
const handleUpdate = async () => {
|
||||||
try {
|
try {
|
||||||
await api.put(`/characters/${id}`, {
|
await api.put(`/characters/${id}`, {
|
||||||
name,
|
name,
|
||||||
server,
|
server,
|
||||||
power: Number(combatPower)
|
combat_power: Number(combatPower)
|
||||||
})
|
})
|
||||||
navigate('/characters')
|
navigate('/characters')
|
||||||
} catch {
|
} catch {
|
||||||
setError('캐릭터 수정에 실패했습니다.')
|
setError('캐릭터 수정에 실패했습니다.')
|
||||||
|
|||||||
12
src/pages/FriendList.tsx
Normal file
12
src/pages/FriendList.tsx
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { Box, Typography } from '@mui/material'
|
||||||
|
|
||||||
|
export default function FriendList() {
|
||||||
|
return (
|
||||||
|
<Box sx={{ p: 4 }}>
|
||||||
|
<Typography variant="h5" gutterBottom>
|
||||||
|
친구 목록
|
||||||
|
</Typography>
|
||||||
|
<Typography>준비 중...</Typography>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
12
src/pages/FriendRequests.tsx
Normal file
12
src/pages/FriendRequests.tsx
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { Box, Typography } from '@mui/material'
|
||||||
|
|
||||||
|
export default function FriendRequests() {
|
||||||
|
return (
|
||||||
|
<Box sx={{ p: 4 }}>
|
||||||
|
<Typography variant="h5" gutterBottom>
|
||||||
|
요청 관리
|
||||||
|
</Typography>
|
||||||
|
<Typography>준비 중...</Typography>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -20,7 +20,7 @@ export default function Login() {
|
|||||||
password,
|
password,
|
||||||
})
|
})
|
||||||
|
|
||||||
const { access_token, token_type } = res.data
|
const { access_token } = res.data
|
||||||
console.log('로그인 성공:', access_token)
|
console.log('로그인 성공:', access_token)
|
||||||
|
|
||||||
login(access_token) // ✅ 전역 상태 + localStorage 동시 반영
|
login(access_token) // ✅ 전역 상태 + localStorage 동시 반영
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user