0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-31 13:02:38 +00:00

Add proper error popup when theme fails to load

This commit is contained in:
Trevor Buckner
2024-07-28 16:45:01 -04:00
parent edec9369ec
commit 8aa88a2e45
7 changed files with 56 additions and 23 deletions

View File

@@ -9,7 +9,7 @@ const yaml = require('js-yaml');
const app = express();
const config = require('./config.js');
const { homebrewApi, getBrew, getThemeBundle, getUsersBrewThemes } = require('./homebrew.api.js');
const { homebrewApi, getBrew, getUsersBrewThemes } = require('./homebrew.api.js');
const GoogleActions = require('./googleActions.js');
const serveCompressedStaticAssets = require('./static-assets.mv.js');
const sanitizeFilename = require('sanitize-filename');
@@ -77,9 +77,6 @@ app.get('/robots.txt', (req, res)=>{
return res.sendFile(`robots.txt`, { root: process.cwd() });
});
// Theme
app.get('/theme/:renderer/:id', asyncHandler(getThemeBundle));
//Home page
app.get('/', (req, res, next)=>{
req.brew = {

View File

@@ -271,15 +271,10 @@ const api = {
if(!isStaticTheme(req.params.renderer, req.params.id)) {
await api.getBrew('share')(req, res, ()=>{})
.catch((err)=>{
console.error(err);
if(err.HBErrorCode == '05')
res.status(err.status).send(`Theme Not Found - Renderer: ${req.params.renderer}, Name: ${req.params.id}`);
else
res.status(err.status || err.response.status).send(err.message || err);
req.brew = undefined;
err = {...err, name: 'ThemeLoad Error', message: 'Theme Not Found', HBErrorCode: '09'};
throw err;
});
if (!req.brew)
return;
currentTheme = req.brew;
splitTextStyleAndMetadata(currentTheme);
@@ -496,5 +491,6 @@ router.put('/api/:id', asyncHandler(api.getBrew('edit', true)), asyncHandler(api
router.put('/api/update/:id', asyncHandler(api.getBrew('edit', true)), asyncHandler(api.updateBrew));
router.delete('/api/:id', asyncHandler(api.deleteBrew));
router.get('/api/remove/:id', asyncHandler(api.deleteBrew));
router.get('/api/theme/:renderer/:id', asyncHandler(api.getThemeBundle));
module.exports = api;

View File

@@ -682,14 +682,20 @@ brew`);
model.get = jest.fn((getParams) => toBrewPromise(brews[getParams.shareId]));
const req = { params: { renderer: "V3", id: "userThemeAID" }, get: () => { return 'localhost'; }, protocol: 'https' };
await api.getThemeBundle(req, res);
let err
await api.getThemeBundle(req, res)
.catch(e => err = e);
expect(res.status).toHaveBeenCalledWith(404);
expect(res.send).toHaveBeenCalledWith('Theme Not Found - Renderer: V3, Name: missingTheme');
expect(err).toEqual({
HBErrorCode : "09",
accessType : "share",
brewId : "missingTheme",
message : "Theme Not Found",
name : "ThemeLoad Error",
status : 404});
});
});
//////////////////////////////
describe('getBrewThemeWithStaticParent', ()=>{
it('should collect parent theme and brew style - returning as css with static parent imported.', async ()=>{
const toBrewPromise = (brew)=>new Promise((res)=>res({ toObject: ()=>brew }));
@@ -748,7 +754,6 @@ brew`);
expect(res.status).toHaveBeenCalledWith(404);
});
});
////////////////////////////////
describe('deleteBrew', ()=>{
it('should handle case where fetching the brew returns an error', async ()=>{