From c21ad560547b65b143b2b9ed58157256b59c70d0 Mon Sep 17 00:00:00 2001 From: Rishab Kumar Jha Date: Sun, 30 Jun 2024 15:51:00 +0530 Subject: [PATCH 1/6] fixed Project og title added in ssr --- server/controllers/project.controller.js | 6 ++++-- server/views/index.js | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/server/controllers/project.controller.js b/server/controllers/project.controller.js index 86c340ea40..98d044f882 100644 --- a/server/controllers/project.controller.js +++ b/server/controllers/project.controller.js @@ -165,12 +165,14 @@ export async function projectExists(projectId) { */ export async function projectForUserExists(username, projectId) { const user = await User.findByUsername(username); - if (!user) return false; + if (!user) return { success: false }; const project = await Project.findOne({ user: user._id, $or: [{ _id: projectId }, { slug: projectId }] }); - return project != null; + return project != null + ? { success: true, projectName: project.name } + : { success: false }; } /** diff --git a/server/views/index.js b/server/views/index.js index fa1b0a351c..41a61cb129 100644 --- a/server/views/index.js +++ b/server/views/index.js @@ -1,6 +1,6 @@ import get404Sketch from './404Page'; -export function renderIndex() { +export function renderIndex(username , projectName) { const assetsManifest = process.env.webpackAssets && JSON.parse(process.env.webpackAssets); return ` @@ -10,7 +10,7 @@ export function renderIndex() { - p5.js Web Editor + ${`${username ? `${projectName} by ${username} -`: ""}`}p5.js Web Editor ${process.env.NODE_ENV === 'production' ? `` : ''} @@ -54,11 +54,11 @@ export function renderIndex() { * @param {import('express').e.Response} res * @param {boolean} [exists] */ -export default function sendHtml(req, res, exists = true) { - if (!exists) { +export default function sendHtml(req, res, exists = {success:true}) { + if (!exists.success) { res.status(404); get404Sketch((html) => res.send(html)); } else { - res.send(renderIndex()); + res.send(renderIndex(req.params.username, exists.projectName)); } }; From 7435577b4e8db7c519cd7648a84f2a7d4dad8685 Mon Sep 17 00:00:00 2001 From: Rishab Kumar Jha Date: Fri, 5 Jul 2024 04:48:00 +0530 Subject: [PATCH 2/6] added renderProjectIndex function --- server/views/index.js | 54 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/server/views/index.js b/server/views/index.js index 41a61cb129..2f7a631472 100644 --- a/server/views/index.js +++ b/server/views/index.js @@ -1,6 +1,6 @@ import get404Sketch from './404Page'; -export function renderIndex(username , projectName) { +export function renderIndex() { const assetsManifest = process.env.webpackAssets && JSON.parse(process.env.webpackAssets); return ` @@ -10,7 +10,55 @@ export function renderIndex(username , projectName) { - ${`${username ? `${projectName} by ${username} -`: ""}`}p5.js Web Editor + p5.js Web Editor + ${process.env.NODE_ENV === 'production' ? `` : ''} + + + + + + +
+
+ + + + `; +} + +export function renderProjectIndex(username , projectName) { + const assetsManifest = process.env.webpackAssets && JSON.parse(process.env.webpackAssets); + return ` + + + + + + + + ${`${projectName} by ${username} -`}p5.js Web Editor ${process.env.NODE_ENV === 'production' ? `` : ''} @@ -59,6 +107,6 @@ export default function sendHtml(req, res, exists = {success:true}) { res.status(404); get404Sketch((html) => res.send(html)); } else { - res.send(renderIndex(req.params.username, exists.projectName)); + res.send(renderProjectIndex(req.params.username, exists.projectName)); } }; From f2190bae0488dc97a3148b4329b8b7ec9a242096 Mon Sep 17 00:00:00 2001 From: raclim Date: Tue, 9 Jul 2024 13:15:39 -0400 Subject: [PATCH 3/6] add renderProjectIndex to user project route --- server/routes/server.routes.js | 9 +++++++-- server/views/index.js | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/server/routes/server.routes.js b/server/routes/server.routes.js index 68ffffccbd..303c69ac26 100644 --- a/server/routes/server.routes.js +++ b/server/routes/server.routes.js @@ -1,5 +1,5 @@ import { Router } from 'express'; -import sendHtml, { renderIndex } from '../views/index'; +import sendHtml, { renderIndex, renderProjectIndex } from '../views/index'; import { userExists } from '../controllers/user.controller'; import { projectExists, @@ -47,7 +47,12 @@ router.get('/:username/sketches/:project_id', async (req, res) => { req.params.username, req.params.project_id ); - sendHtml(req, res, exists); + + if (exists.success && exists.projectName) { + res.send(renderProjectIndex(req.params.username, exists.projectName)); + } else { + sendHtml(req, res, exists); + } }); router.get('/:username/sketches', async (req, res) => { diff --git a/server/views/index.js b/server/views/index.js index 2f7a631472..69d32ab5e1 100644 --- a/server/views/index.js +++ b/server/views/index.js @@ -48,7 +48,7 @@ export function renderIndex() { `; } -export function renderProjectIndex(username , projectName) { +export function renderProjectIndex(username, projectName) { const assetsManifest = process.env.webpackAssets && JSON.parse(process.env.webpackAssets); return ` @@ -107,6 +107,6 @@ export default function sendHtml(req, res, exists = {success:true}) { res.status(404); get404Sketch((html) => res.send(html)); } else { - res.send(renderProjectIndex(req.params.username, exists.projectName)); + res.send(renderIndex()); } }; From d5824a8e936144c8a3b37ddb2569c5aad5ac8b4f Mon Sep 17 00:00:00 2001 From: raclim Date: Tue, 9 Jul 2024 14:08:39 -0400 Subject: [PATCH 4/6] add separate getProjectForUser to controller --- server/controllers/project.controller.js | 21 ++++++++++++++++++--- server/routes/server.routes.js | 11 ++++++----- server/views/index.js | 4 ++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/server/controllers/project.controller.js b/server/controllers/project.controller.js index 98d044f882..21bb410182 100644 --- a/server/controllers/project.controller.js +++ b/server/controllers/project.controller.js @@ -165,14 +165,29 @@ export async function projectExists(projectId) { */ export async function projectForUserExists(username, projectId) { const user = await User.findByUsername(username); - if (!user) return { success: false }; + if (!user) return false; + const project = await Project.findOne({ + user: user._id, + $or: [{ _id: projectId }, { slug: projectId }] + }); + return project != null; +} + +/** + * @param {string} username + * @param {string} projectId - the database id or the slug or the project + * @return {Promise} + */ +export async function getProjectForUser(username, projectId) { + const user = await User.findByUsername(username); + if (!user) return { exists: false }; const project = await Project.findOne({ user: user._id, $or: [{ _id: projectId }, { slug: projectId }] }); return project != null - ? { success: true, projectName: project.name } - : { success: false }; + ? { exists: true, userProject: project } + : { exists: false }; } /** diff --git a/server/routes/server.routes.js b/server/routes/server.routes.js index 303c69ac26..c73f631c86 100644 --- a/server/routes/server.routes.js +++ b/server/routes/server.routes.js @@ -3,7 +3,8 @@ import sendHtml, { renderIndex, renderProjectIndex } from '../views/index'; import { userExists } from '../controllers/user.controller'; import { projectExists, - projectForUserExists + projectForUserExists, + getProjectForUser } from '../controllers/project.controller'; import { collectionForUserExists } from '../controllers/collection.controller'; @@ -43,15 +44,15 @@ router.get( ); router.get('/:username/sketches/:project_id', async (req, res) => { - const exists = await projectForUserExists( + const userProject = await getProjectForUser( req.params.username, req.params.project_id ); - if (exists.success && exists.projectName) { - res.send(renderProjectIndex(req.params.username, exists.projectName)); + if (userProject.exists) { + res.send(renderProjectIndex(req.params.username, userProject.projectName)); } else { - sendHtml(req, res, exists); + sendHtml(req, res, userProject.exists); } }); diff --git a/server/views/index.js b/server/views/index.js index 69d32ab5e1..d72d74cf82 100644 --- a/server/views/index.js +++ b/server/views/index.js @@ -102,8 +102,8 @@ export function renderProjectIndex(username, projectName) { * @param {import('express').e.Response} res * @param {boolean} [exists] */ -export default function sendHtml(req, res, exists = {success:true}) { - if (!exists.success) { +export default function sendHtml(req, res, exists = true) { + if (!exists) { res.status(404); get404Sketch((html) => res.send(html)); } else { From d7fad4be1fb08e20d898012c1fe3ed4e53cc76f6 Mon Sep 17 00:00:00 2001 From: raclim Date: Tue, 9 Jul 2024 14:17:49 -0400 Subject: [PATCH 5/6] fix typo for project name --- server/routes/server.routes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/routes/server.routes.js b/server/routes/server.routes.js index c73f631c86..45fa161304 100644 --- a/server/routes/server.routes.js +++ b/server/routes/server.routes.js @@ -50,7 +50,7 @@ router.get('/:username/sketches/:project_id', async (req, res) => { ); if (userProject.exists) { - res.send(renderProjectIndex(req.params.username, userProject.projectName)); + res.send(renderProjectIndex(req.params.username, userProject.project.name)); } else { sendHtml(req, res, userProject.exists); } From c30bf4f6f165710c73bb3d7e5fa2f0e068b89caa Mon Sep 17 00:00:00 2001 From: raclim Date: Tue, 9 Jul 2024 14:21:37 -0400 Subject: [PATCH 6/6] rename variables --- server/routes/server.routes.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/routes/server.routes.js b/server/routes/server.routes.js index 45fa161304..a13b2d2848 100644 --- a/server/routes/server.routes.js +++ b/server/routes/server.routes.js @@ -44,15 +44,15 @@ router.get( ); router.get('/:username/sketches/:project_id', async (req, res) => { - const userProject = await getProjectForUser( + const project = await getProjectForUser( req.params.username, req.params.project_id ); - if (userProject.exists) { - res.send(renderProjectIndex(req.params.username, userProject.project.name)); + if (project.exists) { + res.send(renderProjectIndex(req.params.username, project.userProject.name)); } else { - sendHtml(req, res, userProject.exists); + sendHtml(req, res, project.exists); } });