diff --git a/src/client/app.tsx b/src/client/app.tsx index fc4a6cd..a469b01 100644 --- a/src/client/app.tsx +++ b/src/client/app.tsx @@ -1,12 +1,11 @@ import React, { createContext, useEffect, useRef, useState } from 'react'; import ReactDom from 'react-dom'; import {BrowserRouter, Redirect, Route, Switch as RouterSwitch} from 'react-router-dom'; -import { Gallery, ContentAbout, LoginPage, NotFoundPage} from './page/mod'; +import { Gallery, ContentAbout, LoginPage, NotFoundPage, ProfilePage,DifferencePage} from './page/mod'; import {getInitialValue, UserContext} from './state'; import './css/style.css'; -const FooProfile = ()=>
test profile
; const App = () => { const [user,setUser] = useState(""); const [userPermission,setUserPermission] = useState([]); @@ -30,7 +29,8 @@ const App = () => { }> }> }/> - + + diff --git a/src/client/component/headline.tsx b/src/client/component/headline.tsx index ab16f67..f33c339 100644 --- a/src/client/component/headline.tsx +++ b/src/client/component/headline.tsx @@ -6,7 +6,9 @@ import { Hidden, Tooltip, Link } from '@material-ui/core'; import { makeStyles, Theme, useTheme, fade } from '@material-ui/core/styles'; -import { ChevronLeft, ChevronRight, Menu as MenuIcon, Search as SearchIcon, AccountCircle } from '@material-ui/icons'; +import { ChevronLeft, ChevronRight, Menu as MenuIcon, Search as SearchIcon, AccountCircle +} from '@material-ui/icons'; + import { Link as RouterLink, useRouteMatch } from 'react-router-dom'; import { doLogout, UserContext } from '../state'; diff --git a/src/client/component/navlist.tsx b/src/client/component/navlist.tsx index 9975ae6..5ecff71 100644 --- a/src/client/component/navlist.tsx +++ b/src/client/component/navlist.tsx @@ -1,6 +1,8 @@ import React from 'react'; -import {List, ListItem, ListItemIcon, Tooltip, ListItemText} from '@material-ui/core'; -import {ArrowBack as ArrowBackIcon} from '@material-ui/icons'; +import {List, ListItem, ListItemIcon, Tooltip, ListItemText, Divider} from '@material-ui/core'; +import {ArrowBack as ArrowBackIcon, Settings as SettingIcon, + Collections as CollectionIcon, VideoLibrary as VideoIcon, Home as HomeIcon, + Folder as FolderIcon } from '@material-ui/icons'; import {Link as RouterLink, useHistory} from 'react-router-dom'; export const NavItem = (props:{name:string,to:string, icon:React.ReactElement})=>{ @@ -23,4 +25,20 @@ export const NavList = (props: {children?:React.ReactNode})=>{ export const BackItem = (props:{to?:string})=>{ return }/>; +} + +export function CommonMenuList(props?:{url?:string}) { + //if(props === undefined){ + // props = {}; + //} + //props.url = props.url || ""; + //{props.url !== "" && <> } + return ( + } /> + }> + } /> + + }> + } /> + ); } \ No newline at end of file diff --git a/src/client/page/404.tsx b/src/client/page/404.tsx index a7e9672..f22ec95 100644 --- a/src/client/page/404.tsx +++ b/src/client/page/404.tsx @@ -1,10 +1,10 @@ import React from 'react'; import {Typography} from '@material-ui/core'; import {ArrowBack as ArrowBackIcon} from '@material-ui/icons'; -import { Headline, BackItem, NavList } from '../component/mod'; +import { Headline, BackItem, NavList, CommonMenuList } from '../component/mod'; export const NotFoundPage = ()=>{ - const menu = (); + const menu = CommonMenuList(); return 404 Not Found diff --git a/src/client/page/contentinfo.tsx b/src/client/page/contentinfo.tsx index e57a5b5..7e38221 100644 --- a/src/client/page/contentinfo.tsx +++ b/src/client/page/contentinfo.tsx @@ -5,7 +5,7 @@ import { LoadingCircle } from '../component/loading'; import { Link, Paper, makeStyles, Theme, Box, useTheme, Typography } from '@material-ui/core'; import {ArrowBack as ArrowBackIcon } from '@material-ui/icons'; import { getPresenter } from './reader/reader'; -import { BackItem, ContentInfo, Headline, NavItem, NavList } from '../component/mod'; +import { BackItem, CommonMenuList, ContentInfo, Headline, NavItem, NavList } from '../component/mod'; export const makeContentInfoUrl = (id: number) => `/doc/${id}`; export const makeMangaReaderUrl = (id: number) => `/doc/${id}/reader`; @@ -34,11 +34,7 @@ export const ContentAbout = (prop: { match: MatchType }) => { } const id = Number.parseInt(match.params['id']); const [info, setInfo] = useState({ content: undefined, notfound:false }); - const menu_list = (link?:string)=>( - - - - ); + const menu_list = () => ; useEffect(() => { (async () => { diff --git a/src/client/page/difference.tsx b/src/client/page/difference.tsx new file mode 100644 index 0000000..ca7ffed --- /dev/null +++ b/src/client/page/difference.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { CommonMenuList, Headline } from "../component/mod"; +import { UserContext } from "../state"; +import { Grid, Typography } from "@material-ui/core"; + +export function DifferencePage(){ + const menu = CommonMenuList(); + return ( +
Not implemented
+
) +} \ No newline at end of file diff --git a/src/client/page/gallery.tsx b/src/client/page/gallery.tsx index 05b7a8e..33fd96d 100644 --- a/src/client/page/gallery.tsx +++ b/src/client/page/gallery.tsx @@ -1,24 +1,15 @@ import React, { useContext, useEffect } from 'react'; -import { NavList, NavItem, Headline, BackItem } from '../component/mod'; -import {ArrowBack as ArrowBackIcon, Settings as SettingIcon, - Collections as CollectionIcon, VideoLibrary as VideoIcon, Home as HomeIcon} from '@material-ui/icons'; +import { Headline, CommonMenuList } from '../component/mod'; import {GalleryInfo} from '../component/mod'; import {useLocation} from 'react-router-dom'; import { QueryStringToMap } from '../accessor/util'; -import { Divider } from '@material-ui/core'; + export const Gallery = ()=>{ const location = useLocation(); const query = QueryStringToMap(location.search); - - const menu_list = ( - {location.search !== "" && <> } - }/> - }> - }/> - - }/> - ); + location; + const menu_list = CommonMenuList({url:location.search}); return ( diff --git a/src/client/page/login.tsx b/src/client/page/login.tsx index f3465ce..4202393 100644 --- a/src/client/page/login.tsx +++ b/src/client/page/login.tsx @@ -1,5 +1,5 @@ import React, { useContext, useState } from 'react'; -import {Headline} from '../component/mod'; +import {CommonMenuList, Headline} from '../component/mod'; import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, MenuList, Paper, TextField, Typography, useTheme } from '@material-ui/core'; import { UserContext } from '../state'; @@ -39,8 +39,7 @@ export const LoginPage = ()=>{ } history.push("/"); } - const menu = ( - ); + const menu = CommonMenuList(); return Login diff --git a/src/client/page/mod.ts b/src/client/page/mod.ts index 1ea5f24..c6b9683 100644 --- a/src/client/page/mod.ts +++ b/src/client/page/mod.ts @@ -2,3 +2,5 @@ export * from './contentinfo'; export * from './gallery'; export * from './login'; export * from './404'; +export * from './profile'; +export * from './difference'; \ No newline at end of file diff --git a/src/client/page/profile.tsx b/src/client/page/profile.tsx new file mode 100644 index 0000000..d041527 --- /dev/null +++ b/src/client/page/profile.tsx @@ -0,0 +1,18 @@ +import { CommonMenuList, Headline } from "../component/mod"; +import React, { useContext } from 'react'; +import { UserContext } from "../state"; +import { Grid, Paper, Typography } from "@material-ui/core"; + +export function ProfilePage(){ + const userctx = useContext(UserContext); + const menu = CommonMenuList(); + return ( + + + + {userctx.username} + + + + ) +} \ No newline at end of file