Files
frontend-app-ora-grading/src/components/FilePreview/FileRenderer.jsx
2025-08-14 10:48:34 -04:00

45 lines
915 B
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import { useIntl } from '@edx/frontend-platform/i18n';
import FileCard from './FileCard';
import { ErrorBanner, LoadingBanner } from './Banners';
import { renderHooks } from './hooks';
/**
* <FileRenderer />
*/
export const FileRenderer = ({
file,
}) => {
const intl = useIntl();
const {
Renderer,
isLoading,
errorStatus,
error,
rendererProps,
} = renderHooks({ file, intl });
return (
<FileCard key={file.downloadUrl} file={file}>
{isLoading && <LoadingBanner />}
{errorStatus ? (
<ErrorBanner {...error} />
) : (
<Renderer {...rendererProps} />
)}
</FileCard>
);
};
FileRenderer.defaultProps = {};
FileRenderer.propTypes = {
file: PropTypes.shape({
name: PropTypes.string,
downloadUrl: PropTypes.string,
}).isRequired,
};
export default FileRenderer;