on master help sign in
applications: add grant proposal if one exists under shortcode
bf45b69Matilde Park
pages/applications/[[...application]].js+12−5
@@ -19,8 +19,9 @@ import Gateway404 from "../../components/gateway/Gateway404";
19import MetadataBlock from "../../components/gateway/MetadataBlock";
19import MetadataBlock from "../../components/gateway/MetadataBlock";
20import MetadataLink from "../../components/gateway/MetadataLink";
20import MetadataLink from "../../components/gateway/MetadataLink";
21import Description from "../../components/gateway/Description";
21import Description from "../../components/gateway/Description";
22+import { getGrantByShortcode } from "../../lib/lib";
22
23
23−const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
24+const ApplicationPage = ({ data, markdown, organisation, matchedGrant, search, params }) => {
24 const { application } = params;
25 const { application } = params;
25 if (!ob.isValidPatp(application[0])) {
26 if (!ob.isValidPatp(application[0])) {
26 return <Gateway404 type="application" />;
27 return <Gateway404 type="application" />;
@@ -83,7 +84,7 @@ const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
83 item="Application"
84 item="Application"
84 />
85 />
85
86
86− <div className="flex flex-wrap md:flex-nowrap justify-between">
87+ <div className="flex flex-wrap justify-between">
87 <MetadataBlock
88 <MetadataBlock
88 title="License"
89 title="License"
89 content={data.license ? data.license : "Unknown"}
90 content={data.license ? data.license : "Unknown"}
@@ -102,16 +103,20 @@ const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
102 className="basis-1/2 sm:basis-1/4"
103 className="basis-1/2 sm:basis-1/4"
103 content={data.shortcode ? data.shortcode : data.title}
104 content={data.shortcode ? data.shortcode : data.title}
104 />
105 />
106+ {matchedGrant && <div className="basis-full flex flex-col space-y-1">
107+ <p className="font-semibold text-wall-400">Grant Proposal</p>
108+ <Link href={`/grants/${matchedGrant}`} passHref>
109+ <a className="text-green-400 font-medium">urbit.org/grants/{matchedGrant}
110+ </a>
111+ </Link>
112+ </div>}
105 </div>
113 </div>
106−
107 <Description
114 <Description
108 description={data.description}
115 description={data.description}
109 fallback="An application on Urbit."
116 fallback="An application on Urbit."
110 markdown={markdown}
117 markdown={markdown}
111 />
118 />
112
119
113− <hr className="text-white" />
114−
115 <div class="bg-wall-100 py-4 px-6 border-2 border-wall-200 rounded-xl">
120 <div class="bg-wall-100 py-4 px-6 border-2 border-wall-200 rounded-xl">
116 <p class="text-sm text-wall-400">
121 <p class="text-sm text-wall-400">
117 <span class="font-bold">Disclaimer:</span> Applications may not be
122 <span class="font-bold">Disclaimer:</span> Applications may not be
@@ -175,6 +180,7 @@ export const getServerSideProps = async ({ params, res }) => {
175 ? JSON.stringify(Markdown.parse({ post: { content } }))
180 ? JSON.stringify(Markdown.parse({ post: { content } }))
176 : null;
181 : null;
177
182
183+ const matchedGrant = getGrantByShortcode(params.application);
178 if (!data.title) {
184 if (!data.title) {
179 data = {
185 data = {
180 title: params.application?.join("/"),
186 title: params.application?.join("/"),
@@ -187,6 +193,7 @@ export const getServerSideProps = async ({ params, res }) => {
187 data,
193 data,
188 markdown,
194 markdown,
189 organisation,
195 organisation,
196+ matchedGrant,
190 params,
197 params,
191 },
198 },
192 };
199 };