From b8e9f03b86ff63a5cdc77bae18caf7d7efd077b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauri=20V=C3=B5sandi?= Date: Sun, 6 Mar 2022 08:18:01 +0200 Subject: [PATCH] Update screenshot handling --- backend/server.js | 30 +++++++++++++++++++------- frontend/src/components/app/App.js | 14 +++++++++++- frontend/src/components/event/Event.js | 4 ++-- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/backend/server.js b/backend/server.js index ed9d777..291e655 100644 --- a/backend/server.js +++ b/backend/server.js @@ -11,7 +11,7 @@ const mongoUri = process.env.MONGO_URI || 'mongodb://127.0.0.1:27017/default?rep const minioURI = new URL(process.env.MINIO_URI || 'http://kspace-mugshot:2mSI6HdbJ8@127.0.0.1:9000/kspace-mugshot'); const minioBucket = minioURI.pathname.substring(1); console.info("Using bucket:", minioBucket); -const historyNumber = parseInt(process.env.HISTORY_AMOUNT) || 1000; +const historyNumber = parseInt(process.env.HISTORY_AMOUNT) || 10; // Stream set-up variables let changeStream; @@ -46,18 +46,32 @@ async function run() { }); async function wrapEvent(doc) { - let screenShotArray = []; + let arr = []; let blob; if (doc && doc.screenshot_count) { for (let i = 1; i <= doc.screenshot_count ; i++) { - let presignedUrl = await minioClient.presignedUrl('GET', minioBucket, `${doc.camera}/${doc._id}/${i}.jpg`, 60 * 60); - screenShotArray.push({ url: presignedUrl }); + arr.push({ + url: await minioClient.presignedUrl('GET', minioBucket, + `${doc.camera}/${doc._id}/${i}.jpg`, 60 * 60) + }); + } + } else if (doc && doc.screenshots) { + for (let j = 0; j < doc.screenshots.length; j++) { + let path = doc.screenshots[j]; + arr.push({ + url: await minioClient.presignedUrl('GET', minioBucket, + `thumb/${path}`, 60 * 60), + orig: await minioClient.presignedUrl('GET', minioBucket, + `${path}`, 60 * 60) + }); } - blob = JSON.stringify({...doc, screenshots: [...screenShotArray]}); - } else { - blob = JSON.stringify({...doc}) }; - + + if (arr.length > 0) { + blob = JSON.stringify({...doc, screenshots: [...arr]}); + } else { + blob = JSON.stringify({...doc}); + } return `event: log-entry\ndata: ${blob}\n\n` } diff --git a/frontend/src/components/app/App.js b/frontend/src/components/app/App.js index 243d57b..49355e4 100644 --- a/frontend/src/components/app/App.js +++ b/frontend/src/components/app/App.js @@ -14,7 +14,19 @@ const Component = () => { useEffect(() =>{ console.info(event); if (event) { - setEvents([event, ...events]); + for (var j = 0; j < events.length; j++) { + if (events[j].timestamp <= event.timestamp) { + if (events[j]._id == event._id) { + setEvents([...events.slice(0, j), event, ...events.slice(j+1)]); + return; + } else { + setEvents([...events.slice(0, j), event, ...events.slice(j)]); + return; + } + } + } + + setEvents([event, ...events]); } }, [event]) return diff --git a/frontend/src/components/event/Event.js b/frontend/src/components/event/Event.js index c9d086c..cccfecd 100644 --- a/frontend/src/components/event/Event.js +++ b/frontend/src/components/event/Event.js @@ -7,13 +7,13 @@ function Event(props) { if (props.data.hasOwnProperty('screenshots')) { props.data.screenshots.forEach(element => { - imgArray = [(), ...imgArray] + imgArray = [...imgArray, ()] }); } return (
- {JSON.stringify(props.data)} + {JSON.stringify(props.data.source)}

{[...imgArray]}