Failed to extract signature
2 changed files with
30 additions and
7 deletions
-
src/index.tsx
-
src/util/index.ts
|
@ -14,27 +14,30 @@ import Live from "./pages/main/Live"; |
|
|
import NotFound from "./pages/main/404"; |
|
|
import NotFound from "./pages/main/404"; |
|
|
import BlogHome from "./pages/blog/Home"; |
|
|
import BlogHome from "./pages/blog/Home"; |
|
|
import { BlogPost } from "./pages/blog/components/BlogContent"; |
|
|
import { BlogPost } from "./pages/blog/components/BlogContent"; |
|
|
|
|
|
import { normalise } from "./util"; |
|
|
|
|
|
|
|
|
function App() { |
|
|
function App() { |
|
|
const [location] = useLocation(); |
|
|
const [location, navigate] = useLocation(); |
|
|
|
|
|
|
|
|
switch (location) { |
|
|
const normalised = normalise(location); |
|
|
|
|
|
|
|
|
|
|
|
if (location !== normalised) { |
|
|
|
|
|
navigate(normalised, { replace: true }); |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
switch (normalised) { |
|
|
case "/": |
|
|
case "/": |
|
|
return <Home />; |
|
|
return <Home />; |
|
|
case "/experience": |
|
|
case "/experience": |
|
|
case "/experience/": |
|
|
|
|
|
return <Exp />; |
|
|
return <Exp />; |
|
|
case "/projects": |
|
|
case "/projects": |
|
|
case "/projects/": |
|
|
|
|
|
return <Projects />; |
|
|
return <Projects />; |
|
|
case "/contact": |
|
|
case "/contact": |
|
|
case "/contact/": |
|
|
|
|
|
return <Contact />; |
|
|
return <Contact />; |
|
|
case "/live": |
|
|
case "/live": |
|
|
case "/live/": |
|
|
|
|
|
return <Live />; |
|
|
return <Live />; |
|
|
case "/blog": |
|
|
case "/blog": |
|
|
case "/blog/": |
|
|
|
|
|
// return <BlogHome />;
|
|
|
// return <BlogHome />;
|
|
|
default: |
|
|
default: |
|
|
// if (location.startsWith("/blog")) return <BlogPost />;
|
|
|
// if (location.startsWith("/blog")) return <BlogPost />;
|
|
|
|
@ -35,3 +35,23 @@ export function rewriteExtn(filename: string, extn: string) { |
|
|
split[split.length - 1] = extn; |
|
|
split[split.length - 1] = extn; |
|
|
return split.join("."); |
|
|
return split.join("."); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
export function normalise(path: string) { |
|
|
|
|
|
return ( |
|
|
|
|
|
(path.startsWith("/") ? "/" : "") + |
|
|
|
|
|
path.trim().split("/").filter(Boolean).join("/") |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
export function comparePaths(p1: string, p2: string) { |
|
|
|
|
|
return normalise(p1) === normalise(p2); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
export const get = { |
|
|
|
|
|
next<X>(xs: X[], i: number) { |
|
|
|
|
|
return xs.at((i + 1) % xs.length)!; |
|
|
|
|
|
}, |
|
|
|
|
|
prev<X>(xs: X[], i: number) { |
|
|
|
|
|
return xs.at((i - 1) % xs.length)!; |
|
|
|
|
|
}, |
|
|
|
|
|
}; |
|
|