mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-09-25 09:22:58 +00:00
add brew fetching
This commit is contained in:
@@ -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,43 @@ 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) {
|
||||||
|
const updatedBrew = response.body.brew;
|
||||||
|
|
||||||
|
setCurrentBrew((prev)=>{
|
||||||
|
const changed = Object.keys(updatedBrew).filter((key)=>{
|
||||||
|
if(key === 'text' || key === 'textBin') {
|
||||||
|
return prev[key] !== updatedBrew[key];
|
||||||
|
}
|
||||||
|
return JSON.stringify(prev[key]) !== JSON.stringify(updatedBrew[key]);
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
...prev,
|
||||||
|
...updatedBrew
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user