From 97ebdf7ae679e86b6881e36027a7aa031cb843d1 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 11 Feb 2025 09:59:14 +1300 Subject: [PATCH] Add brew update detection to Share Page --- client/homebrew/pages/sharePage/sharePage.jsx | 12 ++++++++++++ server/homebrew.api.js | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index e9c5540a2..a3fdcdf34 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -46,6 +46,18 @@ const SharePage = (props)=>{ brew.theme ); + const eventSource = new EventSource('/stream'); + + eventSource.addEventListener('message', (evt)=>{ + const messageData = JSON.parse(evt.data); + + if(messageData.eventType == 'brewUpdated'){ + if(messageData.shareId == brew.shareId && messageData.version != brew.version) { + console.log(`brew has been updated, viewing ${brew.version}, new version is ${messageData.version}`); + } + } + }); + return ()=>{ document.removeEventListener('keydown', handleControlKeys); }; diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 9a479732e..57815e384 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -16,6 +16,8 @@ const router = express.Router(); import { DEFAULT_BREW, DEFAULT_BREW_LOAD } from './brewDefaults.js'; import Themes from '../themes/themes.json' with { type: 'json' }; +import Stream from './eventStreamSource.js'; + const isStaticTheme = (renderer, themeName)=>{ return Themes[renderer]?.[themeName] !== undefined; }; @@ -398,6 +400,8 @@ const api = { const after = await afterSave(); if(!after) return; + Stream.emit('sendUpdate', 'brewUpdated', { time: new Date, shareId: brew.shareId, version: brew.version }); + res.status(200).send(saved); }, deleteGoogleBrew : async (account, id, editId, res)=>{