From 8c228ab10b49d852076858eddd2515c99147e03d Mon Sep 17 00:00:00 2001 From: Max Wofford Date: Tue, 2 Apr 2024 16:13:13 -0400 Subject: [PATCH] Fix url encoding error on build --- pages/api/onboard/p/[project]/index.js | 13 +++++++++---- pages/api/onboard/svg/[board_url]/index.js | 9 +++++++-- pages/api/onboard/svg/[board_url]/top.js | 3 +++ pages/onboard/board/[slug].js | 12 +++++------- pages/onboard/gallery/index.js | 2 +- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/pages/api/onboard/p/[project]/index.js b/pages/api/onboard/p/[project]/index.js index efde6e46..0f9601e2 100644 --- a/pages/api/onboard/p/[project]/index.js +++ b/pages/api/onboard/p/[project]/index.js @@ -31,12 +31,17 @@ async function getReadmeData(url) { export const getOnboardProject = async name => { // this is not performant to call all projects every time, but we're doing it for now while things load quickly enough // TODO: Speed this up - const project = (await getAllOnboardProjects()).find(p => p.name === name) - const readmeData = await getReadmeData(project.readmeURL) + try { + const project = (await getAllOnboardProjects()).find(p => p.name === name) + const readmeData = await getReadmeData(project.readmeURL) - const result = { ...project, readmeData } + const result = { ...project, readmeData } - return result + return result + } catch (e) { + console.error(e) + return null + } } export default async function handler(req, res) { diff --git a/pages/api/onboard/svg/[board_url]/index.js b/pages/api/onboard/svg/[board_url]/index.js index 8253e414..2b0d7a0e 100644 --- a/pages/api/onboard/svg/[board_url]/index.js +++ b/pages/api/onboard/svg/[board_url]/index.js @@ -9,12 +9,17 @@ import { import fs from 'fs' export const gerberToSvg = async gerberURL => { - const data = await fetch(gerberURL).then(res => res.arrayBuffer()) + const data = await fetch(gerberURL).then(res => { + return { status: res.status, arrayBuffer: res.arrayBuffer()} + }) + if (data.status !== 200) { + return { status: data.status, error: 'Failed to fetch gerber file' } + } const files = [] const zip = new JSZip() const zippedData = await new Promise((resolve, _reject) => { - zip.loadAsync(data).then(resolve, e => { + zip.loadAsync(data.arrayBuffer).then(resolve, e => { console.error(e) resolve({ files: {} // TODO: actually handle this error (bad or nonexistent gerber.zip) diff --git a/pages/api/onboard/svg/[board_url]/top.js b/pages/api/onboard/svg/[board_url]/top.js index 1a9f2c73..353567d7 100644 --- a/pages/api/onboard/svg/[board_url]/top.js +++ b/pages/api/onboard/svg/[board_url]/top.js @@ -13,5 +13,8 @@ export default async function handler(req, res) { return res.status(404).json({ status: 404, error: 'Invalid file' }) } const svg = await gerberToSvg(parsed_url) + if (svg.error) { + return res.status(svg.status).send(svg.error) + } return res.status(200).send(svg.top) } diff --git a/pages/onboard/board/[slug].js b/pages/onboard/board/[slug].js index 59b80879..dd51559b 100644 --- a/pages/onboard/board/[slug].js +++ b/pages/onboard/board/[slug].js @@ -94,11 +94,9 @@ const BoardPage = ({ project }) => { position: 'relative' }} > - - - {project.name} - - + + {project.name} + by {project?.readmeData?.frontmatter?.github_handle} @@ -209,11 +207,11 @@ const BoardPage = ({ project }) => { } export async function getStaticPaths(_context) { - const projects = await getAllOnboardProjects() + const projects = (await getAllOnboardProjects()).slice(0, 5) const paths = projects.map(project => { return { params: { - slug: encodeURIComponent(project.name) + slug: project.name } } }) diff --git a/pages/onboard/gallery/index.js b/pages/onboard/gallery/index.js index 1d9f9ec3..ed290d34 100644 --- a/pages/onboard/gallery/index.js +++ b/pages/onboard/gallery/index.js @@ -12,7 +12,7 @@ export default function Index({ projects, itemCount }) { ) } -export async function getStaticProps(_context) { +export async function getStaticProps() { const allProjects = await getAllOnboardProjects() const data = allProjects.slice(0, 10) const projects = []