| @@ -2012,7 +2012,6 @@ | |||||
| "version": "19.1.4", | "version": "19.1.4", | ||||
| "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", | ||||
| "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", | "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", | ||||
| "dev": true, | |||||
| "license": "MIT", | "license": "MIT", | ||||
| "dependencies": { | "dependencies": { | ||||
| "csstype": "^3.0.2" | "csstype": "^3.0.2" | ||||
| @@ -2022,7 +2021,7 @@ | |||||
| "version": "19.1.5", | "version": "19.1.5", | ||||
| "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", | ||||
| "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", | "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", | ||||
| "dev": true, | |||||
| "devOptional": true, | |||||
| "license": "MIT", | "license": "MIT", | ||||
| "peerDependencies": { | "peerDependencies": { | ||||
| "@types/react": "^19.0.0" | "@types/react": "^19.0.0" | ||||
| @@ -2883,7 +2882,6 @@ | |||||
| "version": "3.1.3", | "version": "3.1.3", | ||||
| "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | ||||
| "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", | ||||
| "dev": true, | |||||
| "license": "MIT" | "license": "MIT" | ||||
| }, | }, | ||||
| "node_modules/debug": { | "node_modules/debug": { | ||||
| @@ -1,10 +1,8 @@ | |||||
| import axios from 'axios' | import axios from 'axios' | ||||
| import toCamel from 'camelcase-keys' | import toCamel from 'camelcase-keys' | ||||
| import React, { useEffect, useState } from 'react' | |||||
| import { useEffect, useState } from 'react' | |||||
| import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom' | import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom' | ||||
| import TagDetailSidebar from '@/components/TagDetailSidebar' | |||||
| import TagSidebar from '@/components/TagSidebar' | |||||
| import TopNav from '@/components/TopNav' | import TopNav from '@/components/TopNav' | ||||
| import { Toaster } from '@/components/ui/toaster' | import { Toaster } from '@/components/ui/toaster' | ||||
| import { API_BASE_URL } from '@/config' | import { API_BASE_URL } from '@/config' | ||||
| @@ -21,7 +19,7 @@ import WikiHistoryPage from '@/pages/wiki/WikiHistoryPage' | |||||
| import WikiNewPage from '@/pages/wiki/WikiNewPage' | import WikiNewPage from '@/pages/wiki/WikiNewPage' | ||||
| import WikiSearchPage from '@/pages/wiki/WikiSearchPage' | import WikiSearchPage from '@/pages/wiki/WikiSearchPage' | ||||
| import type { Post, Tag, User } from '@/types' | |||||
| import type { User } from '@/types' | |||||
| export default () => { | export default () => { | ||||
| @@ -29,11 +27,12 @@ export default () => { | |||||
| useEffect (() => { | useEffect (() => { | ||||
| const createUser = async () => { | const createUser = async () => { | ||||
| const { data } = await axios.post (`${ API_BASE_URL }/users`) | |||||
| const res = await axios.post (`${ API_BASE_URL }/users`) | |||||
| const data = res.data as { code: string; user: any } | |||||
| if (data.code) | if (data.code) | ||||
| { | { | ||||
| localStorage.setItem ('user_code', data.code) | localStorage.setItem ('user_code', data.code) | ||||
| setUser (toCamel (data.user, { deep: true })) | |||||
| setUser (toCamel (data.user, { deep: true }) as User) | |||||
| } | } | ||||
| } | } | ||||
| @@ -41,7 +40,8 @@ export default () => { | |||||
| if (code) | if (code) | ||||
| { | { | ||||
| void (async () => { | void (async () => { | ||||
| const { data } = await axios.post (`${ API_BASE_URL }/users/verify`, { code }) | |||||
| const res = await axios.post (`${ API_BASE_URL }/users/verify`, { code }) | |||||
| const data = res.data as { valid: boolean, user: any } | |||||
| if (data.valid) | if (data.valid) | ||||
| setUser (toCamel (data.user, { deep: true })) | setUser (toCamel (data.user, { deep: true })) | ||||
| else | else | ||||
| @@ -1,8 +1,5 @@ | |||||
| import React, { useRef, useLayoutEffect, useEffect, useState, CSSProperties } from 'react' | import React, { useRef, useLayoutEffect, useEffect, useState, CSSProperties } from 'react' | ||||
| import axios from 'axios' | |||||
| import { Link, useNavigate, useLocation } from 'react-router-dom' | import { Link, useNavigate, useLocation } from 'react-router-dom' | ||||
| import { API_BASE_URL } from '../config' | |||||
| type Props = { id: string, | type Props = { id: string, | ||||
| width: number, | width: number, | ||||
| height: number, | height: number, | ||||
| @@ -10,7 +10,7 @@ import { cn } from '@/lib/utils' | |||||
| import type { Tag, User, WikiPage } from '@/types' | import type { Tag, User, WikiPage } from '@/types' | ||||
| type Props = { user: User | |||||
| type Props = { user: User | null | |||||
| setUser: (user: User) => void } | setUser: (user: User) => void } | ||||
| const enum Menu { None, | const enum Menu { None, | ||||
| @@ -20,7 +20,7 @@ const enum Menu { None, | |||||
| Wiki } | Wiki } | ||||
| const TopNav: React.FC = ({ user, setUser }: Props) => { | |||||
| export default ({ user, setUser }: Props) => { | |||||
| const location = useLocation () | const location = useLocation () | ||||
| const navigate = useNavigate () | const navigate = useNavigate () | ||||
| @@ -230,6 +230,3 @@ const TopNav: React.FC = ({ user, setUser }: Props) => { | |||||
| }) ()} | }) ()} | ||||
| </>) | </>) | ||||
| } | } | ||||
| export default TopNav | |||||
| @@ -16,7 +16,7 @@ import { cn } from '@/lib/utils' | |||||
| import type { Post, Tag, User } from '@/types' | import type { Post, Tag, User } from '@/types' | ||||
| type Props = { user: User } | |||||
| type Props = { user: User | null } | |||||
| export default ({ user }: Props) => { | export default ({ user }: Props) => { | ||||
| @@ -21,7 +21,11 @@ | |||||
| "noUnusedParameters": true, | "noUnusedParameters": true, | ||||
| "erasableSyntaxOnly": true, | "erasableSyntaxOnly": true, | ||||
| "noFallthroughCasesInSwitch": true, | "noFallthroughCasesInSwitch": true, | ||||
| "noUncheckedSideEffectImports": true | |||||
| "noUncheckedSideEffectImports": true, | |||||
| "baseUrl": "./src", | |||||
| "paths": { | |||||
| "@/*": ["*"] | |||||
| } | |||||
| }, | }, | ||||
| "include": ["src"] | "include": ["src"] | ||||
| } | } | ||||