- 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
44 lines
1.1 KiB
TypeScript
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;
|