From 672d582caf65e48ec687a36ef5e1efd6439894ca Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sat, 5 Nov 2022 23:32:30 -0500 Subject: [PATCH] move metaTag objects to app.js --- client/template.js | 68 ++++++++++++++++++++-------------------- server/app.js | 78 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 110 insertions(+), 36 deletions(-) diff --git a/client/template.js b/client/template.js index f11952126..55034aa08 100644 --- a/client/template.js +++ b/client/template.js @@ -1,42 +1,42 @@ const template = async function(name, title='', props = {}){ - const HOMEBREWERY_PUBLIC_URL=props.config.publicUrl; + // const HOMEBREWERY_PUBLIC_URL=props.config.publicUrl; - const ogMeta = { - siteName : 'The Homebrewery - Make your Homebrew content look legit!', - title : 'The Homebrewery', - description : 'Homepage', - thumbnail : `${HOMEBREWERY_PUBLIC_URL}/thumbnail.png`, - type : 'website' - }; + // const ogMeta = { + // siteName : 'The Homebrewery - Make your Homebrew content look legit!', + // title : 'The Homebrewery', + // description : 'Homepage', + // thumbnail : `${HOMEBREWERY_PUBLIC_URL}/thumbnail.png`, + // type : 'website' + // }; - if(props.url.match(/\/share\/|\/edit\//)){ - Object.assign(ogMeta, { - siteName : null, - title : props.brew.title || 'Homebrewery - Untitled Brew', - description : props.brew.description || 'No description.', - image : props.brew.thumbnail || null, - type : 'article' - }); - } else if(props.url.match(/\/print\/|\/source\//)){ - Object.assign(ogMeta, { - siteName : null, - title : props.brew.title ? `${props.brew.title} - ${props.url.match(/\/print\/|\/source\//)}` : 'Homebrewery - Untitled Brew', - description : props.brew.description || 'No description.', - image : props.brew.thumbnail || null, - type : 'article' - }); - } else if(props.url.match(/\/user\//)){ - Object.assign(ogMeta, { - siteName : null, - title : `${props.username} - The Homebrewery`, - description : `${props.username}'s user page.`, - image : null, - type : 'profile' - }); - } + // if(props.url.match(/\/share\/|\/edit\//)){ + // Object.assign(ogMeta, { + // siteName : null, + // title : props.brew.title || 'Homebrewery - Untitled Brew', + // description : props.brew.description || 'No description.', + // image : props.brew.thumbnail || null, + // type : 'article' + // }); + // } else if(props.url.match(/\/print\/|\/source\//)){ + // Object.assign(ogMeta, { + // siteName : null, + // title : props.brew.title ? `${props.brew.title} - ${props.url.match(/\/print\/|\/source\//)}` : 'Homebrewery - Untitled Brew', + // description : props.brew.description || 'No description.', + // image : props.brew.thumbnail || null, + // type : 'article' + // }); + // } else if(props.url.match(/\/user\//)){ + // Object.assign(ogMeta, { + // siteName : null, + // title : `${props.username} - The Homebrewery`, + // description : `${props.username}'s user page.`, + // image : null, + // type : 'profile' + // }); + // } const ogTags = []; - Object.entries(ogMeta).forEach(([key, value])=>{ + Object.entries(props.ogMeta).forEach(([key, value])=>{ if(!value) return; const tag = ``; ogTags.push(tag); diff --git a/server/app.js b/server/app.js index 76cd3f8e3..7457d5dc0 100644 --- a/server/app.js +++ b/server/app.js @@ -87,16 +87,32 @@ app.get('/', (req, res, next)=>{ req.brew = { text : welcomeText, renderer : 'V3' + }, + + req.ogMeta = { + siteName : 'The Homebrewery - Make your Homebrew content look legit!', + title : 'The Homebrewery - Homepage', + description : 'Homepage', + thumbnail : `${config.get('publicUrl')}/thumbnail.png`, + type : 'website' }; splitTextStyleAndMetadata(req.brew); return next(); }); -//Home page v3 +//Home page Legacy app.get('/legacy', (req, res, next)=>{ req.brew = { text : welcomeTextLegacy, renderer : 'legacy' + }, + + req.ogMeta = { + siteName : 'The Homebrewery - Make your Homebrew content look legit!', + title : 'The Homebrewery - Homepage (Legacy)', + description : 'Homepage', + thumbnail : `${config.get('publicUrl')}/thumbnail.png`, + type : 'website' }; splitTextStyleAndMetadata(req.brew); return next(); @@ -107,6 +123,14 @@ app.get('/migrate', (req, res, next)=>{ req.brew = { text : migrateText, renderer : 'V3' + }, + + req.ogMeta = { + siteName : 'The Homebrewery - Make your Homebrew content look legit!', + title : 'The Homebrewery - v3 Migration Guide', + description : 'A brief guide to converting Legacy documents to the v3 renderer.', + thumbnail : `${config.get('publicUrl')}/thumbnail.png`, + type : 'website' }; splitTextStyleAndMetadata(req.brew); return next(); @@ -118,6 +142,14 @@ app.get('/changelog', async (req, res, next)=>{ title : 'Changelog', text : changelogText, renderer : 'V3' + }, + + req.ogMeta = { + siteName : 'The Homebrewery - Make your Homebrew content look legit!', + title : 'The Homebrewery - Changelog', + description : 'Development changelog.', + thumbnail : `${config.get('publicUrl')}/thumbnail.png`, + type : 'website' }; splitTextStyleAndMetadata(req.brew); return next(); @@ -129,7 +161,16 @@ app.get('/faq', async (req, res, next)=>{ title : 'FAQ', text : faqText, renderer : 'V3' + }, + + req.ogMeta = { + siteName : 'The Homebrewery - Make your Homebrew content look legit!', + title : 'The Homebrewery - FAQ', + description : 'Frequently Asked Questions', + thumbnail : `${config.get('publicUrl')}/thumbnail.png`, + type : 'website' }; + splitTextStyleAndMetadata(req.brew); return next(); }); @@ -138,6 +179,14 @@ app.get('/faq', async (req, res, next)=>{ app.get('/source/:id', asyncHandler(getBrew('share')), (req, res)=>{ const { brew } = req; + req.ogMeta = { + siteName : null, + title : req.brew.title ? `${req.brew.title} - /source/` : 'Homebrewery - Untitled Brew', + description : req.brew.description || 'No description.', + image : req.brew.thumbnail || null, + type : 'article' + }; + const replaceStrings = { '&': '&', '<': '<', '>': '>' }; let text = brew.text; for (const replaceStr in replaceStrings) { @@ -153,6 +202,14 @@ app.get('/download/:id', asyncHandler(getBrew('share')), (req, res)=>{ sanitizeBrew(brew, 'share'); const prefix = 'HB - '; + req.ogMeta = { + siteName : null, + title : req.brew.title ? `${req.brew.title} - /download/` : 'Homebrewery - Untitled Brew', + description : req.brew.description || 'No description.', + image : req.brew.thumbnail || null, + type : 'article' + }; + let fileName = sanitizeFilename(`${prefix}${brew.title}`).replaceAll(' ', ''); if(!fileName || !fileName.length) { fileName = `${prefix}-Untitled-Brew`; }; res.set({ @@ -224,6 +281,14 @@ app.get('/user/:username', async (req, res, next)=>{ //Edit Page app.get('/edit/:id', asyncHandler(getBrew('edit')), (req, res, next)=>{ req.brew = req.brew.toObject ? req.brew.toObject() : req.brew; + + req.ogMeta = { + siteName : null, + title : req.brew.title || 'Homebrewery - Untitled Brew', + description : req.brew.description || 'No description.', + image : req.brew.thumbnail || null, + type : 'article' + }; sanitizeBrew(req.brew, 'edit'); splitTextStyleAndMetadata(req.brew); res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save. @@ -242,6 +307,14 @@ app.get('/new/:id', asyncHandler(getBrew('share')), (req, res, next)=>{ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, res, next)=>{ const { brew } = req; + req.ogMeta = { + siteName : null, + title : req.brew.title || 'Homebrewery - Untitled Brew', + description : req.brew.description || 'No description.', + image : req.brew.thumbnail || null, + type : 'article' + }; + if(req.params.id.length > 12 && !brew._id) { const googleId = req.params.id.slice(0, -12); const shareId = req.params.id.slice(-12); @@ -342,7 +415,8 @@ app.use(asyncHandler(async (req, res, next)=>{ account : req.account, enable_v3 : config.get('enable_v3'), enable_themes : config.get('enable_themes'), - config : configuration + config : configuration, + ogMeta : req.ogMeta }; const title = req.brew ? req.brew.title : ''; const page = await templateFn('homebrew', title, props)