diff --git a/components/FileListing.tsx b/components/FileListing.tsx index db61f05..2e08b33 100644 --- a/components/FileListing.tsx +++ b/components/FileListing.tsx @@ -32,6 +32,7 @@ import AudioPreview from './previews/AudioPreview' import VideoPreview from './previews/VideoPreview' import DownloadButtonGroup from './DownloadBtnGtoup' import PDFPreview from './previews/PDFPreview' +import URLPreview from './previews/URLPreview' import { DownloadBtnContainer, PreviewContainer } from './previews/Containers' // Disabling SSR for some previews (image gallery view, and PDF view) @@ -595,6 +596,9 @@ const FileListing: FC<{ query?: ParsedUrlQuery }> = ({ query }) => { case preview.epub: return + case preview.url: + return + default: return {fileName} } diff --git a/components/previews/URLPreview.tsx b/components/previews/URLPreview.tsx new file mode 100644 index 0000000..461528c --- /dev/null +++ b/components/previews/URLPreview.tsx @@ -0,0 +1,60 @@ +import FourOhFour from '../FourOhFour' +import Loading from '../Loading' +import { DownloadButton } from '../DownloadBtnGtoup' +import useFileContent from '../../utils/fetchOnMount' +import { DownloadBtnContainer, PreviewContainer } from './Containers' + +const parseDotUrl = (content: string): string | undefined => { + return content + .split('\n') + .find(line => line.startsWith('URL=')) + ?.split('=')[1] +} + +const TextPreview = ({ file }) => { + const { content, error, validating } = useFileContent(file['@microsoft.graph.downloadUrl']) + if (error) { + return ( + + + + ) + } + + if (validating) { + return ( + + + + ) + } + + if (!content) { + return ( + + + + ) + } + + return ( +
+ +
{content}
+
+ +
+ window.open(parseDotUrl(content) || '')} + btnColor="blue" + btnText="Open URL" + btnIcon="external-link-alt" + btnTitle={`Open URL ${parseDotUrl(content) || ''}`} + /> +
+
+
+ ) +} + +export default TextPreview diff --git a/utils/getPreviewType.ts b/utils/getPreviewType.ts index d7b8bdb..ca320f8 100644 --- a/utils/getPreviewType.ts +++ b/utils/getPreviewType.ts @@ -8,6 +8,7 @@ const preview = { audio: 'audio', office: 'ms-office', epub: 'epub', + url: 'url', } const extensions = { @@ -64,6 +65,8 @@ const extensions = { flac: preview.audio, epub: preview.epub, + + url: preview.url, } export { extensions, preview }