diff --git a/client/homebrew/navbar/print.navitem.jsx b/client/homebrew/navbar/print.navitem.jsx index b500c24d6..ff2d75d67 100644 --- a/client/homebrew/navbar/print.navitem.jsx +++ b/client/homebrew/navbar/print.navitem.jsx @@ -2,12 +2,7 @@ import React, { useState, useEffect } from 'react'; import Nav from './nav.jsx'; import { printCurrentBrew } from '@shared/helpers.js'; -const processShareId = (brew)=>{ - - return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; -}; - -export default ({ currentBrew })=>{ +export default function(){ const [printing, setPrinting] = useState(false); // listen for print cycle events to display "loading" message since it can take some time. @@ -24,27 +19,7 @@ export default ({ currentBrew })=>{ const handlePrintPrepFinished = ()=>{ setPrinting(false); }; - if(currentBrew?.shareId) return - - export - - - {printing ? 'loading' : 'get PDF'} - - - Markdown - - - Markdown (TOML) - - - Markdown (JSON) - - - Markdown (Homebrewery) - - ; - else return + return {printing ? 'loading' : 'get PDF'} ; }; diff --git a/client/homebrew/pages/basePages/editPage/editorPage.jsx b/client/homebrew/pages/basePages/editPage/editorPage.jsx index 718aab442..b9fb34597 100644 --- a/client/homebrew/pages/basePages/editPage/editorPage.jsx +++ b/client/homebrew/pages/basePages/editPage/editorPage.jsx @@ -372,7 +372,7 @@ const EditorPage = (props)=>{ {(pageName == 'editPage') && renderAutoSaveButton()} } - + {(pageName == 'editPage') && } diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 42a9c4241..002844c2c 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -117,7 +117,7 @@ const SharePage = (props)=>{ view {renderEditLink()} - + download diff --git a/package.json b/package.json index 0f76d8fe7..6f1269f97 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "test:api-unit:css": "jest \"server/.*.spec.js\" -t \"Get CSS\" --verbose", "test:api-unit:notifications": "jest \"server/.*.spec.js\" -t \"Notifications\" --verbose", "test:content-negotiation": "jest \"server/middleware/.*.spec.js\" --verbose", - "test:static-content": "jest \"tests/routes/static-content.test.js\" --verbose", "test:coverage": "jest --coverage --silent --runInBand", "test:dev": "jest --verbose --watch", "test:basic": "jest tests/markdown/basic.test.js --verbose", diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 8702ec42b..aa1f1f84a 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -10,7 +10,7 @@ import asyncHandler from 'express-async-handler'; import { nanoid } from 'nanoid'; import { makePatches, applyPatches, stringifyPatches, parsePatch } from '@sanity/diff-match-patch'; import { md5 } from 'hash-wasm'; -import { splitTextStyleAndMetadata, transformFrontmatter, +import { splitTextStyleAndMetadata, brewSnippetsToJSON, debugTextMismatch } from '../shared/helpers.js'; import checkClientVersion from './middleware/check-client-version.js'; import dbCheck from './middleware/dbCheck.js'; @@ -209,7 +209,29 @@ const api = { return res.status(200).send(brew.style); }, mergeBrewText : (brew)=>{ - return transformFrontmatter(brew); + let text = brew.text; + if(brew.style !== undefined) { + text = `\`\`\`css\n` + + `${brew.style || ''}\n` + + `\`\`\`\n\n` + + `${text}`; + } + const metadata = _.pick(brew, ['title', 'description', 'tags', 'renderer', 'theme']); + const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; + metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; + metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; + metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; + metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; + metadata.columns = brew?.columns; + metadata.columnGutter = brew?.columnGutter; + metadata.license = brew?.license; + metadata.legalAuthors = brew?.legalAuthors; + + text = `\`\`\`metadata\n` + + `${yaml.dump(metadata)}\n` + + `\`\`\`\n\n` + + `${text}`; + return text; }, getGoodBrewTitle : (text)=>{ const tokens = hbfm.marked.lexer(text); diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index b4337e6fc..8bda5407b 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -499,6 +499,8 @@ description: this is a description tags: - something - fun +renderer: v3 +theme: phb bleedSize: top: .125in bottom: .125in @@ -516,8 +518,6 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' -renderer: v3 -theme: phb \`\`\` @@ -554,7 +554,7 @@ brew`); width : '8.5in', height : '11in', }, - }, 'hb'); + }); expect(result).toEqual(`\`\`\`metadata title: some title @@ -562,6 +562,8 @@ description: this is a description tags: - something - fun +renderer: v3 +theme: phb bleedSize: top: .125in bottom: .125in @@ -579,8 +581,6 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' -renderer: v3 -theme: phb \`\`\` diff --git a/server/page-routes.js b/server/page-routes.js index 49879391e..85436d2bc 100644 --- a/server/page-routes.js +++ b/server/page-routes.js @@ -15,7 +15,7 @@ import fs from 'fs'; import dbCheck from './middleware/dbCheck.js'; import sanitizeFilename from 'sanitize-filename'; import { DEFAULT_BREW } from './brewDefaults.js'; -import { splitTextStyleAndMetadata, transformFrontmatter } from '../shared/helpers.js'; +import { splitTextStyleAndMetadata } from '../shared/helpers.js'; import GoogleActions from './googleActions.js'; import api from './homebrew.api.js'; @@ -135,19 +135,9 @@ export default function pageRoutes({ }); //Download brew source page - app.get('/download/:format/:id', asyncHandler(getBrew('share')), async (req, res)=>{ - const markdownFormats = { - hb : 'homebrewery', - cm : 'commonmark', - toml : 'toml', - json : 'json' - }; - + app.get('/download/:id', asyncHandler(getBrew('share')), (req, res)=>{ const { brew } = req; - - const lastBrew = brew.text; sanitizeBrew(brew, 'share'); - brew.text = await transformFrontmatter(brew, req.params.format); const prefix = 'HB - '; const encodeRFC3986ValueChars = (str)=>{ @@ -162,7 +152,7 @@ export default function pageRoutes({ res.set({ 'Cache-Control' : 'no-cache', 'Content-Type' : 'text/plain', - 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.${markdownFormats[req.params.format]}.md` + 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.txt` }); res.status(200).send(brew.text); }); diff --git a/shared/helpers.js b/shared/helpers.js index 6d8180ae1..d20687843 100644 --- a/shared/helpers.js +++ b/shared/helpers.js @@ -114,44 +114,6 @@ const splitTextStyleAndMetadata = (brew)=>{ if(typeof brew.tags === 'string') brew.tags = brew.tags ? [brew.tags] : []; }; -const transformFrontmatter = (brew, format = 'hb')=>{ - const markdownFormats = { - hb : '```metadata', - cm : '---', - toml : '+++', - json : ';;;' - }; - - let text = brew.text; - if((brew.style !== undefined) && (format == 'hb')) { - text = `\`\`\`css\n` + - `${brew.style || ''}\n` + - `\`\`\`\n\n` + - `${text}`; - } - const metadata = _.pick(brew, ['title', 'description', 'tags']); - if(format == 'hb') { - const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; - metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; - metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; - metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; - metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; - metadata.columns = brew?.columns; - metadata.columnGutter = brew?.columnGutter; - metadata.license = brew?.license; - metadata.legalAuthors = brew?.legalAuthors; - metadata.renderer = brew.renderer; - metadata.theme = brew.theme; - } - - text = `${markdownFormats[format]}\n` + - `${format != 'json' ? yaml.dump(metadata) : JSON.stringify(metadata)}\n` + - `${markdownFormats[format].slice(0, 3)}\n\n` + - `${text}`; - - return text; -}; - const printCurrentBrew = async ()=>{ if(window.typeof !== 'undefined') { // fire a custom event for the print cycle @@ -268,6 +230,5 @@ export { fetchThemeBundle, brewSnippetsToJSON, debugTextMismatch, - yamlSnippetsToText, - transformFrontmatter + yamlSnippetsToText };