From d5a45007c494e41978cc9409437b84e15f7da43f Mon Sep 17 00:00:00 2001 From: PhilReact Date: Sat, 21 Dec 2024 21:29:54 +0200 Subject: [PATCH] fix reading publishes --- src/common/useFetchResources.tsx | 26 +++++++++++++--------- src/components/Chat/GroupAnnouncements.tsx | 3 ++- src/components/Embeds/VideoPlayer.tsx | 2 +- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/common/useFetchResources.tsx b/src/common/useFetchResources.tsx index 9099989..1a4cbd8 100644 --- a/src/common/useFetchResources.tsx +++ b/src/common/useFetchResources.tsx @@ -5,7 +5,6 @@ import { getBaseApiReact } from '../App'; export const useFetchResources = () => { const [resources, setResources] = useRecoilState(resourceDownloadControllerAtom); - const intervalId = useRef(null) const downloadResource = useCallback(({ service, name, identifier }, build) => { setResources((prev) => ({ @@ -24,7 +23,8 @@ export const useFetchResources = () => { let timer = 24; let tries = 0; let calledFirstTime = false - + let intervalId + let timeoutId const callFunction = async ()=> { if (isCalling) return; isCalling = true; @@ -43,8 +43,11 @@ export const useFetchResources = () => { }); res = await resCall.json() if(tries > 18 ){ - if(intervalId?.current){ - clearInterval(intervalId?.current) + if(intervalId){ + clearInterval(intervalId) + } + if(timeoutId){ + clearTimeout(timeoutId) } setResources((prev) => ({ ...prev, @@ -64,7 +67,7 @@ export const useFetchResources = () => { if(build || (calledFirstTime === false && res?.status !== 'READY')){ - const url = `${getBaseApiReact()}/arbitrary/resource/status/${service}/${name}/${identifier}?build=true`; + const url = `${getBaseApiReact()}/arbitrary/resource/properties/${service}/${name}/${identifier}?build=true`; const resCall = await fetch(url, { method: "GET", headers: { @@ -101,10 +104,11 @@ export const useFetchResources = () => { }, })); - setTimeout(() => { + timeoutId = setTimeout(() => { isCalling = false; downloadResource({ name, service, identifier }, true); }, 25000); + return; } @@ -123,11 +127,13 @@ export const useFetchResources = () => { // Check if progress is 100% and clear interval if true if (res?.status === 'READY') { - if(intervalId.current){ - clearInterval(intervalId.current); + if(intervalId){ + clearInterval(intervalId); } - + if(timeoutId){ + clearTimeout(timeoutId) + } // Update Recoil state for completion setResources((prev) => ({ ...prev, @@ -149,7 +155,7 @@ export const useFetchResources = () => { } } callFunction() - intervalId.current = setInterval(async () => { + intervalId = setInterval(async () => { callFunction() }, 5000); diff --git a/src/components/Chat/GroupAnnouncements.tsx b/src/components/Chat/GroupAnnouncements.tsx index 8ffd41d..43670fe 100644 --- a/src/components/Chat/GroupAnnouncements.tsx +++ b/src/components/Chat/GroupAnnouncements.tsx @@ -110,7 +110,8 @@ export const handleUnencryptedPublishes = (publishes) => { let publishesData = [] publishes.forEach((pub)=> { try { - const decodedData = JSON.parse(atob(pub)) + const decryptToUnit8Array = base64ToUint8Array(pub); + const decodedData = uint8ArrayToObject(decryptToUnit8Array); if(decodedData){ publishesData.push({decryptedData: decodedData}) } diff --git a/src/components/Embeds/VideoPlayer.tsx b/src/components/Embeds/VideoPlayer.tsx index cd0a7b0..9f9c84d 100644 --- a/src/components/Embeds/VideoPlayer.tsx +++ b/src/components/Embeds/VideoPlayer.tsx @@ -493,7 +493,7 @@ export const VideoPlayer: React.FC = ({ <>Download Completed: building tutorial video... ) : resourceStatus?.status !== 'READY' ? ( <> - {getDownloadProgress(resourceStatus?.localChunkCount, resourceStatus?.totalChunkCount)} + {getDownloadProgress(resourceStatus?.localChunkCount || 0, resourceStatus?.totalChunkCount || 100)} ) : (