Files
redux-scraper/app/javascript/bundles/Main/components/DisplayedFile.tsx
Dylan Knutson ad0675a9aa Add Bluesky post helper with facet rendering and external link support
- Add BlueskyPostHelper for rendering Bluesky post facets (mentions, links, hashtags)
- Implement facet parsing and rendering with proper styling
- Add external link partial for non-Bluesky URLs
- Update DisplayedFile and PostFiles components to handle Bluesky posts
- Add comprehensive test coverage for helper methods
- Update scan user job to handle Bluesky-specific data
2025-08-12 20:43:08 +00:00

44 lines
1.1 KiB
TypeScript

import * as React from 'react';
import { FileData } from './PostFiles';
import { FileDetails } from './FileDetails';
interface DisplayedFileProps {
file: FileData;
}
export const DisplayedFile: React.FC<DisplayedFileProps> = ({ file }) => {
return (
<>
{/* File content display */}
<div className="file-content-display mb-4">
{file.contentHtml ? (
<div dangerouslySetInnerHTML={{ __html: file.contentHtml }} />
) : (
<section className="flex grow justify-center text-slate-500">
<div>
<i className="fa-solid fa-file-arrow-down mr-2"></i>
{fileStateContent(file.fileState)}
</div>
</section>
)}
</div>
{/* File details */}
{file.fileDetails && <FileDetails {...file.fileDetails} />}
</>
);
};
function fileStateContent(fileState: FileData['fileState']) {
switch (fileState) {
case 'pending':
return 'File pending download';
case 'terminal_error':
return 'File download failed';
}
return 'No file content available';
}
export default DisplayedFile;