on master help sign in
content/guides: rename routes for guide pages
78b45fbMatilde Park
content/ids/get.md → content/guides/getting-an-urbit-id.mdrenamed

The content is the same.

content/applications/guide.md → content/guides/installing-applications.mdrenamed

The content is the same.

content/groups/guide.md → content/guides/joining-groups.mdrenamed

The content is the same.

pages/applications/[[...application]].js+2−2
@@ -74,7 +74,7 @@ const ApplicationPage = ({ data, markdown, params }) => {
74 }
74 }
75 />
75 />
76 )}
76 )}
77− {ob.isValidPatp(data?.developer) ? (
77+ {ob.isValidPatp(data?.developer) && data.developer.length < 10 ? (
78 <MetadataLink
78 <MetadataLink
79 title="Developer"
79 title="Developer"
80 href={`/ids/${data.developer}`}
80 href={`/ids/${data.developer}`}
@@ -105,7 +105,7 @@ const ApplicationPage = ({ data, markdown, params }) => {
105 <p className="text-sm font-semibold text-wall-400">
105 <p className="text-sm font-semibold text-wall-400">
106 Learn how to install an Urbit application
106 Learn how to install an Urbit application
107 </p>
107 </p>
108− <Link href="/applications/guide">
108+ <Link href="/guides/installing-applications">
109 <button className="button-lg max-w-xs bg-green-400 text-white">
109 <button className="button-lg max-w-xs bg-green-400 text-white">
110 Installing Urbit applications
110 Installing Urbit applications
111 </button>
111 </button>
pages/groups/[[...group]].js+1−1
@@ -92,7 +92,7 @@ const GroupPage = ({ data, markdown, params }) => {
92 <p className="text-sm font-semibold text-wall-400">
92 <p className="text-sm font-semibold text-wall-400">
93 Get on the network and join this group.
93 Get on the network and join this group.
94 </p>
94 </p>
95− <Link href="/groups/guide">
95+ <Link href="/guides/joining-groups">
96 <button className="button-lg max-w-xs bg-green-400 text-white">
96 <button className="button-lg max-w-xs bg-green-400 text-white">
97 How to join a group
97 How to join a group
98 </button>
98 </button>
pages/groups/guide.js → pages/guides/[slug].jsrenamed+30−3
@@ -1,14 +1,22 @@
1+import { useRouter } from "next/router";
2+import { getPostBySlug, getAllPosts } from "../../lib/lib";
1import Head from "next/head";
3import Head from "next/head";
2import Link from "next/link";
4import Link from "next/link";
3−import { getPostBySlug } from "../../lib/lib";
4import Meta from "../../components/Meta";
5import Meta from "../../components/Meta";
5−import Markdown from "../../components/Markdown";
6+import ErrorPage from "../404";
6import Container from "../../components/Container";
7import Container from "../../components/Container";
8+import Markdown from "../../components/Markdown";
7import SingleColumn from "../../components/SingleColumn";
9import SingleColumn from "../../components/SingleColumn";
8import Section from "../../components/Section";
10import Section from "../../components/Section";
11+
9import { decode } from "html-entities";
12import { decode } from "html-entities";
10
13
11export default function GuidePage({ post, markdown }) {
14export default function GuidePage({ post, markdown }) {
15+ const router = useRouter();
16+ if (!router.isFallback && !post?.slug) {
17+ return <ErrorPage />;
18+ }
19+
12 return (
20 return (
13 <Container>
21 <Container>
14 <Head>
22 <Head>
@@ -34,7 +42,11 @@ export default function GuidePage({ post, markdown }) {
34
42
35//
43//
36export async function getStaticProps({ params }) {
44export async function getStaticProps({ params }) {
37− const post = getPostBySlug("guide", ["title", "slug", "content"], "groups");
45+ const post = getPostBySlug(
46+ params.slug,
47+ ["title", "slug", "date", "description", "content", "extra"],
48+ "guides"
49+ );
38
50
39 const markdown = await Markdown({ post });
51 const markdown = await Markdown({ post });
40
52
@@ -42,3 +54,18 @@ export async function getStaticProps({ params }) {
42 props: { post, markdown },
54 props: { post, markdown },
43 };
55 };
44}
56}
57+
58+export async function getStaticPaths() {
59+ const posts = getAllPosts(["slug", "date"], "guides", "date");
60+
61+ return {
62+ paths: posts.map((post) => {
63+ return {
64+ params: {
65+ slug: post.slug,
66+ },
67+ };
68+ }),
69+ fallback: false,
70+ };
71+}
pages/applications/guide.js → pages/guides/installing-applications.jsrenamed+2−2
@@ -88,9 +88,9 @@ export default function GuidePage({ post, markdown }) {
88//
88//
89export async function getStaticProps({ params }) {
89export async function getStaticProps({ params }) {
90 const post = getPostBySlug(
90 const post = getPostBySlug(
91− "guide",
91+ "installing-applications",
92 ["title", "slug", "content"],
92 ["title", "slug", "content"],
93− "applications"
93+ "guides"
94 );
94 );
95
95
96 const markdown = await Markdown({ post });
96 const markdown = await Markdown({ post });
pages/ids/[id].js+1−1
@@ -143,7 +143,7 @@ const IdPage = ({ data, markdown, applications, groups, network, params }) => {
143 <p className="text-md font-semibold text-wall-400">
143 <p className="text-md font-semibold text-wall-400">
144 Learn how get your own Urbit ID.
144 Learn how get your own Urbit ID.
145 </p>
145 </p>
146− <Link href="/ids/get">
146+ <Link href="/guides/getting-an-urbit-id">
147 <button className="button-lg max-w-xs bg-green-400 text-white">
147 <button className="button-lg max-w-xs bg-green-400 text-white">
148 Get an Urbit ID
148 Get an Urbit ID
149 </button>
149 </button>
pages/ids/get.jsdeleted−44
@@ -1,44 +0,0 @@
1−import Head from "next/head";
2−import Link from "next/link";
3−import { getPostBySlug } from "../../lib/lib";
4−import Meta from "../../components/Meta";
5−import Markdown from "../../components/Markdown";
6−import Container from "../../components/Container";
7−import SingleColumn from "../../components/SingleColumn";
8−import Section from "../../components/Section";
9−import { decode } from "html-entities";
10−
11−export default function GuidePage({ post, markdown }) {
12− return (
13− <Container>
14− <Head>
15− <title>Urbit • {post.title}</title>
16− {Meta(post)}
17− </Head>
18− <SingleColumn>
19− <Section narrow short>
20− <h2>{post.title}</h2>
21− </Section>
22− <Section narrow short className="markdown">
23− <article
24− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
25− ></article>
26− <Link href="/">
27− <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
28− </Link>
29− </Section>
30− </SingleColumn>
31− </Container>
32− );
33−}
34−
35−//
36−export async function getStaticProps({ params }) {
37− const post = getPostBySlug("get", ["title", "slug", "content"], "ids");
38−
39− const markdown = await Markdown({ post });
40−
41− return {
42− props: { post, markdown },
43− };
44−}