import { Express } from 'express' import * as fs from 'fs' import * as path from 'path' import * as EmailController from '../controllers/email' import { myHbs } from '../middlewares/express' import GeneralUtils from '../utils/general' export default (server: Express) => { server.get('/api/emails/unsubscribe', EmailController.handleUnsubscribe) // server.get('/emails/templates/:name', (req, res) => { // res.render(req.params.name, { layout: 'default' }) // }) server.get('/emails/templates/:name', (req, res) => { const { query, params } = req // let emailData = {} // try { // const jsonTestData = require(`./src/email-templates-fake-data/${req.params.name}.json`) // if (jsonTestData) { // emailData = jsonTestData // } // } catch (error) { // console.error(error) // } if (!params.name) { return res.status(404).send('Need a template') } res.render(params.name, { ...(query && { ...query, paramsEncodedAndStringify: GeneralUtils.serializeObjForQueryString(query), }), layout: query.dark && query.dark === 'true' ? params.name.includes('-fr') ? 'default-fr-dark' : 'default-dark' : params.name.includes('-fr') ? 'default-fr' : 'default', templateName: params.name, }) }) server.get('/emails/templates/:name/html', (req, res) => { myHbs.renderView(`views/${req.params.name}.hbs`, { layout: 'default' }, (err, html) => { if (err) throw err return res.send(html) }) }) server.get('/templates/:name', (req, res) => { if (req.params.name) { res.sendFile(path.join(__dirname, `/templates/${req.params.name}.html`)) } }) server.get('/templates/emails/:fileName', (req, res) => { if (req.params.fileName) { const filePath = path.join(__dirname, `/templates/emails/${req.params.fileName}.html`) const html = fs.readFileSync(filePath, 'utf8') res.send(html) } else { res.send('Need email template') } }) }