mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-30 11:02:38 +00:00
Functional user theme loading though noising console
This commit is contained in:
@@ -42,38 +42,6 @@ const sanitizeBrew = (brew, accessType)=>{
|
||||
return brew;
|
||||
};
|
||||
|
||||
const getUsersBrewThemes = async (username,id)=>{
|
||||
const fields = [
|
||||
'title',
|
||||
'tags',
|
||||
'editId',
|
||||
'thumbnail'
|
||||
];
|
||||
const brews = await HomebrewModel.getByUser(username, true, fields, { tags: { $in: ['theme', 'Theme'] } }) //lean() converts results to JSObjects
|
||||
.catch((error)=>{throw 'Can not find brews';});
|
||||
|
||||
const userThemes = {
|
||||
Brew : {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
brews.forEach((brew)=>{
|
||||
if(id!=brew.editId) {
|
||||
userThemes.Brew[brew.editId] = {
|
||||
name : brew.title,
|
||||
renderer : 'V3',
|
||||
baseTheme : false,
|
||||
baseSnippets : false,
|
||||
path : `#${brew.editId}`,
|
||||
thumbnail : brew.thumbnail
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
return userThemes;
|
||||
};
|
||||
|
||||
app.use('/', serveCompressedStaticAssets(`build`));
|
||||
app.use(require('./middleware/content-negotiation.js'));
|
||||
app.use(require('body-parser').json({ limit: '25mb' }));
|
||||
@@ -318,6 +286,9 @@ app.get('/user/:username', async (req, res, next)=>{
|
||||
//Edit Page
|
||||
app.get('/edit/:id', asyncHandler(getBrew('edit')), async(req, res, next)=>{
|
||||
req.brew = req.brew.toObject ? req.brew.toObject() : req.brew;
|
||||
console.log('edit');
|
||||
console.log(req);
|
||||
console.log('edit');
|
||||
|
||||
req.ogMeta = { ...defaultMetaTags,
|
||||
title : req.brew.title || 'Untitled Brew',
|
||||
@@ -326,7 +297,6 @@ app.get('/edit/:id', asyncHandler(getBrew('edit')), async(req, res, next)=>{
|
||||
type : 'article'
|
||||
};
|
||||
|
||||
req.brew.userThemes = await getUsersBrewThemes(req.account.username, req.brew.editId);
|
||||
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.
|
||||
@@ -344,7 +314,7 @@ app.get('/new/:id', asyncHandler(getBrew('share')), (req, res, next)=>{
|
||||
style : req.brew.style,
|
||||
renderer : req.brew.renderer,
|
||||
theme : req.brew.theme,
|
||||
tags : req.brew.tags
|
||||
tags : req.brew.tags,
|
||||
};
|
||||
req.brew = _.defaults(brew, DEFAULT_BREW);
|
||||
|
||||
@@ -378,13 +348,15 @@ app.get('/share/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, r
|
||||
await HomebrewModel.increaseView({ shareId: brew.shareId });
|
||||
}
|
||||
};
|
||||
req.brew.userThemes = await getUsersBrewThemes(req.account.username, req.brew.editId);
|
||||
sanitizeBrew(req.brew, 'share');
|
||||
splitTextStyleAndMetadata(req.brew);
|
||||
return next();
|
||||
}));
|
||||
|
||||
//Print Page
|
||||
app.get('/print/:id', asyncHandler(getBrew('share')), (req, res, next)=>{
|
||||
app.get('/print/:id', asyncHandler(getBrew('share')), async (req, res, next)=>{
|
||||
req.brew.userThemes = await getUsersBrewThemes(req.account.username, req.brew.editId);
|
||||
sanitizeBrew(req.brew, 'share');
|
||||
splitTextStyleAndMetadata(req.brew);
|
||||
next();
|
||||
@@ -477,7 +449,8 @@ const renderPage = async (req, res)=>{
|
||||
enable_v3 : config.get('enable_v3'),
|
||||
enable_themes : config.get('enable_themes'),
|
||||
config : configuration,
|
||||
ogMeta : req.ogMeta
|
||||
ogMeta : req.ogMeta,
|
||||
userThemes : req.userThemes
|
||||
};
|
||||
const title = req.brew ? req.brew.title : '';
|
||||
const page = await templateFn('homebrew', title, props)
|
||||
|
||||
@@ -46,8 +46,54 @@ const splitTextStyleAndMetadata = (brew)=>{
|
||||
brew.style = brew.text.slice(7, index - 1);
|
||||
brew.text = brew.text.slice(index + 5);
|
||||
}
|
||||
console.log(brew.theme);
|
||||
};
|
||||
|
||||
const getUsersBrewThemes = async (username, id)=>{
|
||||
console.log(username);
|
||||
console.log(id);
|
||||
const fields = [
|
||||
'title',
|
||||
'tags',
|
||||
'editId',
|
||||
'thumbnail',
|
||||
'textBin'
|
||||
];
|
||||
const brews = await HomebrewModel.getByUser(username, true, fields, { tags: { $in: ['theme', 'Theme'] } }) //lean() converts results to JSObjects
|
||||
.catch((error)=>{throw 'Can not find brews';});
|
||||
|
||||
const userThemes = {
|
||||
Brew : {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
console.log(`Length of user brews ${brews.size}`);
|
||||
|
||||
brews.forEach(async (brew)=>{
|
||||
b = await HomebrewModel.get({ editId: brew.editId }, ['textBin']);
|
||||
splitTextStyleAndMetadata(b);
|
||||
console.log(`whee!!!! ${b.theme}`);
|
||||
console.log(id);
|
||||
console.log(brew.editId);
|
||||
if(id!=brew.editId) {
|
||||
|
||||
userThemes.Brew[`#${brew.editId}`] = {
|
||||
name : brew.title,
|
||||
renderer : 'V3',
|
||||
baseTheme : b.theme,
|
||||
baseSnippets : false,
|
||||
path : `#${brew.editId}`,
|
||||
thumbnail : brew.thumbnail.length > 0 ? brew.thumbnail : '/assets/naturalCritLogoWhite.svg'
|
||||
};
|
||||
console.log(`Wheee! ${userThemes.Brew[`#${brew.editId}`].baseTheme}`);
|
||||
}
|
||||
});
|
||||
|
||||
return userThemes;
|
||||
};
|
||||
|
||||
|
||||
const api = {
|
||||
homebrewApi : router,
|
||||
getId : (req)=>{
|
||||
@@ -119,11 +165,14 @@ const api = {
|
||||
throw { name: 'BrewLoad Error', message: 'Brew not found', status: 404, HBErrorCode: '05', accessType: accessType, brewId: id };
|
||||
}
|
||||
|
||||
const userID = accessType === 'edit' ? req.account.username : stub.authors.split(',')[0];
|
||||
|
||||
// Clean up brew: fill in missing fields with defaults / fix old invalid values
|
||||
if(stub) {
|
||||
stub.tags = stub.tags || undefined; // Clear empty strings
|
||||
stub.renderer = stub.renderer || undefined; // Clear empty strings
|
||||
stub = _.defaults(stub, DEFAULT_BREW_LOAD); // Fill in blank fields
|
||||
stub.userThemes = await getUsersBrewThemes(userID, id);
|
||||
}
|
||||
|
||||
req.brew = stub ?? {};
|
||||
@@ -239,8 +288,8 @@ const api = {
|
||||
const brew = req.brew;
|
||||
splitTextStyleAndMetadata(brew);
|
||||
res.set('Content-Type', 'text/css');
|
||||
const staticTheme = `/api/css/${req.brew.renderer}/${req.brew.theme}/styles.css`;
|
||||
const userTheme = `/api/css/${req.brew.theme.slice(1)}`;
|
||||
const staticTheme = `/css/${req.brew.renderer}/${req.brew.theme}`;
|
||||
const userTheme = `/css/${req.brew.theme.slice(1)}`;
|
||||
const parentThemeImport = `@import url(\"${req.brew.theme[0] != '#' ? staticTheme : userTheme}\");\n\n/* From Brew: ${req.brew.title}*/\n\n`;
|
||||
return res.status(200).send(`${req.brew.renderer == 'legacy' ? '' : parentThemeImport}${req.brew.style}`);
|
||||
},
|
||||
@@ -273,6 +322,9 @@ const api = {
|
||||
brew.title = brew.title.trim();
|
||||
brew.description = brew.description.trim() || '';
|
||||
brew.text = api.mergeBrewText(brew);
|
||||
const userID = req?.account?.username ? req.account.username : brew.authors.split(',')[0];
|
||||
brew.userThemes = await getUsersBrewThemes(userID, brew.editId);
|
||||
|
||||
|
||||
if(brew.googleId && removeFromGoogle) {
|
||||
// If the google id exists and we're removing it from google, set afterSave to delete the google brew and mark the brew's google id as undefined
|
||||
|
||||
Reference in New Issue
Block a user