Skip to content

Commit

Permalink
🏷️ typedRoutes
Browse files Browse the repository at this point in the history
  • Loading branch information
neila-a committed Apr 19, 2024
1 parent 77ecde7 commit 8b5485b
Show file tree
Hide file tree
Showing 15 changed files with 51 additions and 31 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name: Create Release
run-name: Create Release

jobs:
Create-Release:
Create-Release:
name: Create Release
runs-on: ubuntu-latest
steps:
Expand Down
5 changes: 4 additions & 1 deletion packages/core/next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ const nextConfig: NextConfig = bundleAnalyzer({
devIndicators: {
buildActivityPosition: 'bottom-right',
},
compress: true
compress: true,
experimental: {
typedRoutes: true
}
});
module.exports = nextConfig;
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@verkfi/core",
"version": "1.7.0",
"devVersion": "871",
"devVersion": "872",
"dev": true,
"description": "Platform for Neila's something useless tools.",
"private": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/core/prebuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ async function publicMain() {
NextConfig = await build({
entryPoints: ["next.config.ts"],
outfile: "next.config.js",
bundle: true,
format: "cjs",
minify: true,
platform: "node"
}),
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/app/components/HeadBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export default function HeadBar(props: HeadBarOption): JSX.Element {
flexGrow: 1,
textAlign: props.isIndex && "center"
}}>
{props.isIndex ? "Verkfi" : props.pageName}
{props.isIndex ? upper : props.pageName}
</Typography>
<showSidebar.Consumer>
{value => !props.isIndex && value.show === false ? (
Expand Down
7 changes: 5 additions & 2 deletions packages/core/src/app/components/window/Window.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ import {
get
} from "react-intl-universal";
import MouseOverPopover from "../Popover";
import {
Route
} from "next";
export interface WindowOptions {
to: string;
name: string;
Expand Down Expand Up @@ -101,7 +104,7 @@ export default function Window(props: WindowOptions): JSX.Element {
cursor: "move",
flex: 1,
textAlign: "center"
}} id={`window-title-${id}`} /* id暂时没用 */>
}} id={`window-title-${id}`} /* id暂时没用 */>
<Typography variant="subtitle1">
{props.name}
</Typography>
Expand All @@ -120,7 +123,7 @@ export default function Window(props: WindowOptions): JSX.Element {
</MouseOverPopover>
<MouseOverPopover text={get("window.maxmize")}>
<IconButton aria-label={get("window.maxmize")} edge="end" onClick={event => {
router.push(props.to);
router.push(props.to satisfies Route);
setOpen(false);
}}>
<CropDinIcon />
Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/app/first/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ import {
} from "next/navigation";
import VerkfiIcon from "components/verkfiIcon/verkfiIcon";
import MouseOverPopover from "components/Popover";
import {
Route
} from "next";
export default function First() {
const first = useContext(firstContext),
[step, setStep] = useState<number>(0),
Expand Down Expand Up @@ -118,7 +121,7 @@ export default function First() {
</MouseOverPopover>
<Button variant="contained" onClick={event => {
first.set(false);
router.push("/");
router.push("/" satisfies Route);
}}>
{get("first.现在开始")}
</Button>
Expand Down
6 changes: 3 additions & 3 deletions packages/core/src/app/index/SingleTool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,14 @@ export default function SingleTool(props: {
logger.info(`点击了${tool.name}`);
if (tool.isGoto) {
if (tool.to.startsWith("/tools/extension")) {
Router.push(tool.to);
Router.push(tool.to satisfies Route);
} else {
setJumpDialogOpen(true);
setJumpTo(tool.to);
setJumpName(tool.name);
}
} else {
Router.push(`/tools/${tool.to}`);
Router.push(`/tools/${tool.to}` satisfies Route);
}
}} onContextMenu={async event => {
event.preventDefault();
Expand Down Expand Up @@ -286,7 +286,7 @@ export default function SingleTool(props: {
)}
</windows.Consumer>
<CheckDialog open={jumpDialogOpen} description={`${get("singleTool.jump")}${jumpName}?`} title={get('离开Verkfi')} onTrue={() => {
Router.push(jumpto);
Router.push(jumpto satisfies Route);
setJumpDialogOpen(false);
}} onFalse={() => {
setJumpDialogOpen(false);
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/app/index/convertExtensionTools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const convertExtensionTools: (extensionTools: single[]) => tool[] = extensionToo
name: single.name,
to: `/tools/extension?tool=${single.to}` as Lowercase<string>,
desc: single.desc,
/**
/**
* 这里的图片是直接从indexedDB加载来的,不需要且不能使用next/image的优化
*/
icon: () => <img src={`/extensionfiles/${single.to}/${single.icon}`} alt={single.name} height={24} width={24} />,
Expand Down
24 changes: 16 additions & 8 deletions packages/core/src/app/layout/Menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,17 @@ import {
lists as listsContext,
viewMode as viewModeContext,
extensions,
repoInfo,
} from "layout/layoutClient";
import {
useRouter
} from "next/navigation";
import getParamTools from "index/getParamTools";
import VerkfiIcon from "components/verkfiIcon/verkfiIcon";
import convertExtensionTools from "index/convertExtensionTools";
import {
Route
} from "next";
export default function Menu() {
const control = useContext(showSidebar),
theme = useTheme(),
Expand All @@ -74,6 +78,7 @@ export default function Menu() {
[sortedTools, setSortedTools] = useState(gotToolsList), // 排序完毕,但是不会根据搜索而改动的分类
[tools, setTools] = useState<tool[]>(gotToolsList), // 经常改动的分类
focusingTo = tools[tab] ? tools[tab].to : "", // 每次渲染会重新执行
upper = useContext(repoInfo).name.charAt(0).toUpperCase() + useContext(repoInfo).name.slice(1),
[editing, setEditing] = useState<boolean>(searchText === "");
function searchTools(search: string) {
if (search !== "") {
Expand Down Expand Up @@ -109,12 +114,15 @@ export default function Menu() {
event.preventDefault();
}
}} onKeyUp={event => {
if (event.key === "Tab") {
event.preventDefault();
handleTab();
} else if (event.key === "Enter") {
event.preventDefault();
handleEnter();
switch (event.key) {
case "Tab":
event.preventDefault();
handleTab();
break;
case "Enter":
event.preventDefault();
handleEnter();
break;
}
}} fullScreen={fullScreen} onClose={() => {
control.set(false);
Expand Down Expand Up @@ -281,7 +289,7 @@ export default function Menu() {
<Typography sx={{
ml: 1
}}>
Verkfi
{upper}
</Typography>
</Box>
<Box sx={{
Expand All @@ -291,7 +299,7 @@ export default function Menu() {
<IconButton color="primary" sx={{
p: '10px'
}} aria-label={get("主页")} onClick={_event => {
router.push("/");
router.push("/" satisfies Route);
}}>
<HomeIcon />
</IconButton>
Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/app/not-found.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import {
import {
default as ErrorElement
} from "error";
import {
Route
} from "next";
class NotFoundError extends Error {
constructor(message = '404') {
super(message);
Expand All @@ -15,7 +18,7 @@ export default function NotFound() {
const router = useRouter();
return (
<ErrorElement reset={() => {
router.push("/");
router.push("/" satisfies Route);
}} error={new NotFoundError()} />
);
}
5 changes: 4 additions & 1 deletion packages/core/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ import VerkfiIcon from 'components/verkfiIcon/verkfiIcon';
import generateTries from 'index/generateTries';
import convertExtensionTools from 'index/convertExtensionTools';
import MouseOverPopover from 'components/Popover';
import {
Route
} from 'next';
export default function Index(props: {
/**
* 是否为嵌入
Expand Down Expand Up @@ -124,7 +127,7 @@ export default function Index(props: {
}, []);
useEffect(() => {
if (first.value) {
router.push("/first");
router.push("/first" satisfies Route);
}
}, [first]);
function Tools() {
Expand Down
9 changes: 3 additions & 6 deletions packages/core/src/app/setting/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,8 @@ import {
sidebarMode as sidebarModeContext
} from 'layout/layoutClient';
import {
useLiveQuery
} from 'dexie-react-hooks';
import db, {
single
} from 'db';
Route
} from 'next';
export default function Settings(props: {
children: ReactNode
}): JSX.Element {
Expand Down Expand Up @@ -114,7 +111,7 @@ export default function Settings(props: {
}}>
{sets.map(Set => (
<Tab icon={<Set.Icon />} iconPosition="start" label={Set.name} key={Set.id} onClick={event => {
router.push(`/setting/${Set.id}`);
router.push(`/setting/${Set.id}` satisfies Route);
}} />
))}
</Tabs>
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/app/setting/option/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ export default function Options() {
{get("download.下载本应用")}
</Button>
<Button variant="outlined" startIcon={<HelpIcon />} onClick={event => {
router.push("https://neila.gitbook.io/verkfi/");
router.push("https://neila.gitbook.io/verkfi/" satisfies Route);
}}>
{get("帮助")}
</Button>
Expand All @@ -122,7 +122,7 @@ export default function Options() {
{get("download.将本应用通过浏览器添加至桌面")}
</Button>
<Button onClick={event => {
router.push(`${ghURL}releases`);
router.push(`${ghURL}releases` satisfies Route);
}}>
{get("download.下载单独安装包")}
</Button>
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/app/tools/info.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import {
const hex = Hex.hex;
export interface noIconTool {

/**
/**
* Name of your tool.
* @example FooBar
*/
Expand Down

0 comments on commit 8b5485b

Please sign in to comment.