|
|
@@ -6,6 +6,8 @@ import TopNav from './components/TopNav' |
|
|
|
import TagSidebar from './components/TagSidebar' |
|
|
|
import PostPage from './pages/PostPage' |
|
|
|
import PostDetailPage from './pages/PostDetailPage' |
|
|
|
import { API_BASE_URL } from './config' |
|
|
|
import axios from 'axios' |
|
|
|
|
|
|
|
type Tag = { id: number |
|
|
|
name: string |
|
|
@@ -17,18 +19,48 @@ type Post = { id: number |
|
|
|
thumbnail: string |
|
|
|
tags: Tag[] } |
|
|
|
|
|
|
|
type User = { id: number |
|
|
|
name: string | null |
|
|
|
inheritanceCode: string |
|
|
|
role: string } |
|
|
|
|
|
|
|
|
|
|
|
const App = () => { |
|
|
|
const [posts, setPosts] = useState<Post[]> ([]) |
|
|
|
const [user, setUser] = useState<User | null> (null) |
|
|
|
|
|
|
|
useEffect (() => { |
|
|
|
const createUser = () => ( |
|
|
|
axios.post (`${ API_BASE_URL }/users`) |
|
|
|
.then (res => { |
|
|
|
if (res.data.code) |
|
|
|
{ |
|
|
|
localStorage.setItem ('user_code', res.data.code) |
|
|
|
setUser (res.data) |
|
|
|
} |
|
|
|
})) |
|
|
|
|
|
|
|
const code = localStorage.getItem ('user_code') |
|
|
|
if (code) |
|
|
|
{ |
|
|
|
void (axios.post (`${ API_BASE_URL }/users/verify`, { code }) |
|
|
|
.then (res => { |
|
|
|
if (res.data.valid) |
|
|
|
setUser (res.data.user) |
|
|
|
else |
|
|
|
createUser () |
|
|
|
})) |
|
|
|
} |
|
|
|
else |
|
|
|
createUser () |
|
|
|
|
|
|
|
alert ('このサイトはまだ作りかけです!!!!\n出てけ!!!!!!!!!!!!!!!!!!!!') |
|
|
|
}, []) |
|
|
|
|
|
|
|
return ( |
|
|
|
<Router> |
|
|
|
<div className="flex flex-col h-screen w-screen"> |
|
|
|
<TopNav /> |
|
|
|
<TopNav user={user} /> |
|
|
|
<div className="flex flex-1"> |
|
|
|
<TagSidebar posts={posts} setPosts={setPosts} /> |
|
|
|
<main className="flex-1 overflow-y-auto p-4"> |
|
|
|