diff --git a/package.json b/package.json index a0d55e4..68dfd37 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "app:build:win64": "electron-builder --win --x64" }, "build": { - "asar": false, + "asar": true, "files": [ "build/**/*", "node_modules/**/*", diff --git a/src/client/page/gallery.tsx b/src/client/page/gallery.tsx index a531a4b..7762d82 100644 --- a/src/client/page/gallery.tsx +++ b/src/client/page/gallery.tsx @@ -1,7 +1,7 @@ import React, { useContext, useEffect, useState } from 'react'; -import { Headline, CommonMenuList,LoadingCircle, ContentInfo, NavList, NavItem } from '../component/mod'; +import { Headline, CommonMenuList,LoadingCircle, ContentInfo, NavList, NavItem, TagChip } from '../component/mod'; -import { Box, Paper, Link, useMediaQuery, Portal, List, ListItem, ListItemIcon, Tooltip, ListItemText } from '@material-ui/core'; +import { Box, Paper, Link, useMediaQuery, Portal, List, ListItem, ListItemIcon, Tooltip, ListItemText, Typography, Chip } from '@material-ui/core'; import {useTheme, makeStyles, Theme} from '@material-ui/core/styles'; import ContentAccessor,{QueryListOption, Document} from '../accessor/document'; import {Link as RouterLink} from 'react-router-dom'; @@ -42,7 +42,15 @@ export const GalleryInfo = (props: GalleryProp)=>{ return (); } else{ - return ({ + return ( + {props.option !== undefined && props.diff !== "" && + search for + {props.option.word !== undefined && } + {props.option.content_type !== undefined && } + {props.option.allow_tag !== undefined && props.option.allow_tag.map(x=>( + ))} + } + { state.documents.map(x=>{ return (); @@ -56,7 +64,9 @@ export const Gallery = ()=>{ const location = useLocation(); const query = QueryStringToMap(location.search); const menu_list = CommonMenuList({url:location.search}); - + let option: QueryListOption = query; + option.allow_tag = typeof option.allow_tag === "string" ? [option.allow_tag] : option.allow_tag; + option.limit = typeof query['limit'] === "string" ? parseInt(query['limit']) : undefined; return ( ) diff --git a/src/client/state.tsx b/src/client/state.tsx index b16d4e8..e03c1a8 100644 --- a/src/client/state.tsx +++ b/src/client/state.tsx @@ -1,5 +1,5 @@ import React, { createContext, useRef, useState } from 'react'; - +export const BackLinkContext = createContext({backLink:"",setBackLink:(s:string)=>{} }); export const UserContext = createContext({ username: "", permission: [] as string[], @@ -10,7 +10,7 @@ export const UserContext = createContext({ type LoginLocalStorage = { username: string, permission: string[], - refreshExpired: number + accessExpired: number }; let localObj: LoginLocalStorage | null = null; @@ -21,7 +21,7 @@ export const getInitialValue = async () => { const storage = storagestr !== null ? JSON.parse(storagestr) as LoginLocalStorage | null : null; localObj = storage; } - if (localObj !== null && localObj.refreshExpired > Math.floor(Date.now() / 1000)) { + if (localObj !== null && localObj.accessExpired > Math.floor(Date.now() / 1000)) { return { username: localObj.username, permission: localObj.permission, @@ -36,12 +36,12 @@ export const getInitialValue = async () => { localObj = { username: r.username, permission: r.permission, - refreshExpired: r.refreshExpired + accessExpired: r.accessExpired } } else { localObj = { - refreshExpired: 0, + accessExpired: 0, username: "", permission: r.permission } @@ -59,7 +59,7 @@ export const doLogout = async () => { try { const res = await req.json(); localObj = { - refreshExpired: 0, + accessExpired: 0, username: "", permission: res["permission"] } diff --git a/src/login.ts b/src/login.ts index cebdd65..2f3dce6 100644 --- a/src/login.ts +++ b/src/login.ts @@ -137,7 +137,7 @@ export const createLoginMiddleware = (userController: UserAccessor) => ctx.body = { username: user.username, permission: userPermission, - refreshExpired: (Math.floor(Date.now() / 1000) + refreshExpiredTime), + accessExpired : (Math.floor(Date.now() / 1000) + accessExpiredTime), }; console.log(`${username} logined`); return; diff --git a/src/server.ts b/src/server.ts index 86fb577..4bc12f3 100644 --- a/src/server.ts +++ b/src/server.ts @@ -81,7 +81,17 @@ class ServerApplication{ } private serve_index(router:Router){ const serveindex = (url:string)=>{ - router.get(url, (ctx)=>{ctx.type = 'html'; ctx.body = this.index_html;}) + router.get(url, (ctx)=>{ + ctx.type = 'html'; ctx.body = this.index_html; + const setting = get_setting(); + ctx.set('x-content-type-options','no-sniff'); + if(setting.mode === "development"){ + ctx.set('cache-control','no-cache'); + } + else{ + ctx.set('cache-control','public, max-age=3600'); + } + }) } serveindex('/'); serveindex('/doc/:rest(.*)'); @@ -92,11 +102,19 @@ class ServerApplication{ serveindex('/setting'); } private serve_static_file(router: Router){ - const setting = get_setting(); const static_file_server = (path:string,type:string) => { router.get('/'+path,async (ctx,next)=>{ + const setting = get_setting(); ctx.type = type; ctx.body = createReadStream(path); - })} + ctx.set('x-content-type-options','no-sniff'); + if(setting.mode === "development"){ + ctx.set('cache-control','no-cache'); + } + else{ + ctx.set('cache-control','public, max-age=3600'); + } + })}; + const setting = get_setting(); static_file_server('dist/css/style.css','css'); static_file_server('dist/js/bundle.js','js'); if(setting.mode === "development")