fix useResources

This commit is contained in:
PhilReact 2025-06-07 15:48:28 +03:00
parent dbd1e6adba
commit b9432fa5e0
3 changed files with 28 additions and 2 deletions

View File

@ -1,5 +1,5 @@
import React, { useCallback, useEffect, useMemo, useRef } from "react"; import React, { useCallback, useEffect, useMemo, useRef } from "react";
import { usePublishStore } from "../state/publishes"; import { ResourceStatus, usePublishStore } from "../state/publishes";
import { QortalGetMetadata } from "../types/interfaces/resources"; import { QortalGetMetadata } from "../types/interfaces/resources";
interface PropsUseResourceStatus { interface PropsUseResourceStatus {
@ -15,9 +15,23 @@ export const useResourceStatus = ({
const intervalRef = useRef<null | number>(null) const intervalRef = useRef<null | number>(null)
const timeoutRef = useRef<null | number>(null) const timeoutRef = useRef<null | number>(null)
const setResourceStatus = usePublishStore((state) => state.setResourceStatus); const setResourceStatus = usePublishStore((state) => state.setResourceStatus);
const statusRef = useRef<ResourceStatus | null>(null)
useEffect(()=> {
statusRef.current = status
}, [status])
const downloadResource = useCallback( const downloadResource = useCallback(
({ service, name, identifier }: QortalGetMetadata, build?: boolean) => { ({ service, name, identifier }: QortalGetMetadata, build?: boolean) => {
try { try {
if(statusRef.current && statusRef.current?.status === 'READY'){
if (intervalRef.current) {
clearInterval(intervalRef.current);
}
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
return
}
setResourceStatus( setResourceStatus(
{ service, name, identifier }, { service, name, identifier },
{ {

View File

@ -3,9 +3,10 @@
export { useResourceStatus } from './hooks/useResourceStatus'; export { useResourceStatus } from './hooks/useResourceStatus';
export { Spacer } from './common/Spacer'; export { Spacer } from './common/Spacer';
export { useModal } from './hooks/useModal'; export { useModal } from './hooks/useModal';
export { AudioPlayerControls , OnTrackChangeMeta, AudioPlayerProps} from './components/AudioPlayer/AudioPlayerControls'; export { AudioPlayerControls , OnTrackChangeMeta, AudioPlayerProps, AudioPlayerHandle} from './components/AudioPlayer/AudioPlayerControls';
export { useAudioPlayerHotkeys } from './components/AudioPlayer/useAudioPlayerHotkeys'; export { useAudioPlayerHotkeys } from './components/AudioPlayer/useAudioPlayerHotkeys';
import './index.css' import './index.css'
export { executeEvent, subscribeToEvent, unsubscribeFromEvent } from './utils/events';
export { formatBytes, formatDuration } from './utils/numbers'; export { formatBytes, formatDuration } from './utils/numbers';
export { createQortalLink } from './utils/qortal'; export { createQortalLink } from './utils/qortal';
export { IndexCategory } from './state/indexes'; export { IndexCategory } from './state/indexes';

11
src/utils/events.ts Normal file
View File

@ -0,0 +1,11 @@
export const executeEvent = (eventName: string, data: any)=> {
const event = new CustomEvent(eventName, {detail: data})
document.dispatchEvent(event)
}
export const subscribeToEvent = (eventName: string, listener: any)=> {
document.addEventListener(eventName, listener)
}
export const unsubscribeFromEvent = (eventName: string, listener: any)=> {
document.removeEventListener(eventName, listener)
}