mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-09-24 05:12:57 +00:00
Merge pull request #5040 from 5e-Cleric/update-sharepage-from-edit
Live update sharepage from edit
This commit is contained in:
@@ -312,7 +312,7 @@ const BrewRenderer = (props)=>{
|
|||||||
};
|
};
|
||||||
|
|
||||||
const renderedStyle = useMemo(()=>renderStyle(), [props.style, props.themeBundle]);
|
const renderedStyle = useMemo(()=>renderStyle(), [props.style, props.themeBundle]);
|
||||||
renderedPages = useMemo(()=>renderPages(), [props.text, displayOptions]);
|
renderedPages = useMemo(()=>renderPages(), [props.text, centerPage, displayOptions]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ const { both: RecentNavItem } = RecentNavItems;
|
|||||||
import Account from '@navbar/account.navitem.jsx';
|
import Account from '@navbar/account.navitem.jsx';
|
||||||
import BrewRenderer from '../../brewRenderer/brewRenderer.jsx';
|
import BrewRenderer from '../../brewRenderer/brewRenderer.jsx';
|
||||||
|
|
||||||
|
import request from '../../utils/request-middleware.js';
|
||||||
|
|
||||||
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
|
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
|
||||||
import { printCurrentBrew, fetchThemeBundle } from '@shared/helpers.js';
|
import { printCurrentBrew, fetchThemeBundle } from '@shared/helpers.js';
|
||||||
|
|
||||||
@@ -36,19 +38,30 @@ const SharePage = (props)=>{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fetchUpdatedBrew = async ()=>{
|
||||||
|
const response = await request
|
||||||
|
.get(`/api/fetch/${currentBrew.shareId}`)
|
||||||
|
.catch((error)=>{
|
||||||
|
console.log('error at fetching updated brew: ', error);
|
||||||
|
});
|
||||||
|
if(response.ok && !!response.body.brew) {
|
||||||
|
setCurrentBrew(response.body.brew);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
document.addEventListener('keydown', handleControlKeys);
|
document.addEventListener('keydown', handleControlKeys);
|
||||||
fetchThemeBundle(undefined, setThemeBundle, currentBrew.renderer, currentBrew.theme);
|
fetchThemeBundle(undefined, setThemeBundle, currentBrew.renderer, currentBrew.theme);
|
||||||
|
|
||||||
// listen for changes in the brew version
|
// listen for changes in the brew version
|
||||||
const eventSource = new EventSource('/stream');
|
const eventSource = new EventSource('/stream');
|
||||||
eventSource.addEventListener('message', (evt)=>{
|
eventSource.addEventListener('message', (evt)=>{
|
||||||
const messageData = JSON.parse(evt.data);
|
const messageData = JSON.parse(evt.data);
|
||||||
|
|
||||||
if(messageData.eventType == 'brewUpdated'){
|
if(messageData.eventType == 'brewUpdated'){
|
||||||
if(messageData.shareId == currentBrew.shareId && messageData.version != currentBrew.version) {
|
if(messageData.shareId == currentBrew.shareId && messageData.version != currentBrew.version) {
|
||||||
console.log(`brew has been updated, viewing ${currentBrew.version}, new version is ${messageData.version}`);
|
|
||||||
console.log('should fetch brew');
|
console.log('should fetch brew');
|
||||||
|
fetchUpdatedBrew();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import express from 'express';
|
|||||||
import config from './config.js';
|
import config from './config.js';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
|
import { splitTextStyleAndMetadata } from '../shared/helpers.js';
|
||||||
|
|
||||||
import api from './homebrew.api.js';
|
import api from './homebrew.api.js';
|
||||||
const { homebrewApi, getBrew, getCSS } = api;
|
const { homebrewApi, getBrew, getCSS } = api;
|
||||||
@@ -135,6 +136,15 @@ export default async function createApp(vite) {
|
|||||||
app.get('/robots.txt', (req, res)=>{
|
app.get('/robots.txt', (req, res)=>{
|
||||||
return res.sendFile(`robots.txt`, { root: process.cwd() });
|
return res.sendFile(`robots.txt`, { root: process.cwd() });
|
||||||
});
|
});
|
||||||
|
//serve brew for sharepage rerender
|
||||||
|
app.get('/api/fetch/:id', asyncHandler(getBrew('share')), asyncHandler(async (req, res) => {
|
||||||
|
const { brew } = req;
|
||||||
|
brew.authors.includes(req.account?.username)
|
||||||
|
? sanitizeBrew(brew, 'shareAuthor')
|
||||||
|
: sanitizeBrew(brew, 'share');
|
||||||
|
splitTextStyleAndMetadata(brew);
|
||||||
|
res.json({ brew });
|
||||||
|
}));
|
||||||
|
|
||||||
//Serve brew metadata
|
//Serve brew metadata
|
||||||
app.get('/metadata/:id', asyncHandler(getBrew('share')), (req, res)=>{
|
app.get('/metadata/:id', asyncHandler(getBrew('share')), (req, res)=>{
|
||||||
|
|||||||
@@ -577,9 +577,9 @@ const api = {
|
|||||||
router.use(dbCheck);
|
router.use(dbCheck);
|
||||||
|
|
||||||
router.post('/api', checkClientVersion, asyncHandler(api.newBrew));
|
router.post('/api', checkClientVersion, asyncHandler(api.newBrew));
|
||||||
router.put('/api/:id', checkClientVersion, asyncHandler(api.getBrew('edit', false)), asyncHandler(api.updateBrew));
|
router.put('/api/:id', checkClientVersion, asyncHandler(api.getBrew('edit', false)), asyncHandler(api.updateBrew)); //alt endpoint, unused
|
||||||
router.put('/api/update/:id', checkClientVersion, asyncHandler(api.getBrew('edit', false)), asyncHandler(api.updateBrew));
|
router.put('/api/update/:id', checkClientVersion, asyncHandler(api.getBrew('edit', false)), asyncHandler(api.updateBrew));
|
||||||
router.delete('/api/:id', checkClientVersion, asyncHandler(api.deleteBrew));
|
router.delete('/api/:id', checkClientVersion, asyncHandler(api.deleteBrew)); //alt endpoint, unused
|
||||||
router.get('/api/remove/:id', checkClientVersion, asyncHandler(api.deleteBrew));
|
router.get('/api/remove/:id', checkClientVersion, asyncHandler(api.deleteBrew));
|
||||||
router.get('/api/theme/:renderer/:id', asyncHandler(api.getThemeBundle));
|
router.get('/api/theme/:renderer/:id', asyncHandler(api.getThemeBundle));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user