import React, { createContext, useState, useContext } from 'react'; interface MediaContextType { mediaFile: { name: string; url: string; type: string } | null; setMediaFile: (file: { name: string; url: string; type: string }) => void; response: { file_uuid: string; sr: number; audio_class: string, spectrogram: string, spec_sr: number }; setResponse: (response: { file_uuid: string; sr: number; audio_class: string, spectrogram: string, spec_sr: number }) => void; extractedFiles: { name: string; url: string, spectrogram: string, spec_sr: number }[]; setExtractedFiles: (files: {name: string; url: string, spectrogram: string, spec_sr: number}[]) => void; downloadedFileURL: string; setDownloadedFileURL: ( file: string) => void; downloadedFileSpectrogram: { spectrogram: string, spec_sr: number}; setDownloadedFileSpectrogram: (spectrogram: {spectrogram: string, spec_sr: number}) => void; logs: string[]; setLogs: React.Dispatch>; } const MediaContext = createContext(undefined); export const MediaProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [mediaFile, setMediaFile] = useState(null); const [response, setResponse] = useState({ audio_class: "", file_uuid: "", sr: 0, spectrogram: "", spec_sr: 0 }); const [extractedFiles, setExtractedFiles] = useState([]); const [downloadedFileURL, setDownloadedFileURL] = useState(""); const [downloadedFileSpectrogram, setDownloadedFileSpectrogram] = useState({ spectrogram: "", spec_sr: 0 }); const [logs, setLogs] = useState([""]); return ( {children} ); }; export const useMediaContext = () => { const context = useContext(MediaContext); if (!context) { throw new Error("useMediaContext must be used within a MediaProvider"); } return context; };