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 }