From 7b9766cb0bc2517edf4eef3dae11d6f822017017 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 6 Jul 2021 14:58:54 +0100 Subject: [PATCH] Fix: Use minHeight. Temporary change: Prevent TextFile from loading large content. Fixes #1: File preview failing with JSON files. Add a way to open text files in new tab. --- external/lang | 2 +- .../messaging/attachments/Attachment.module.scss | 12 ++++++++---- .../messaging/attachments/AttachmentActions.tsx | 8 ++++++++ .../common/messaging/attachments/TextFile.tsx | 8 +++++++- src/lib/TextAreaAutoSize.tsx | 2 +- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/external/lang b/external/lang index 8191f830..ce5e32d4 160000 --- a/external/lang +++ b/external/lang @@ -1 +1 @@ -Subproject commit 8191f8301732d2863bb100a8839862c7d92294c3 +Subproject commit ce5e32d444a35a691ac6b0abfbc722945e7cdf46 diff --git a/src/components/common/messaging/attachments/Attachment.module.scss b/src/components/common/messaging/attachments/Attachment.module.scss index b52e1ca7..b3253ae3 100644 --- a/src/components/common/messaging/attachments/Attachment.module.scss +++ b/src/components/common/messaging/attachments/Attachment.module.scss @@ -111,16 +111,16 @@ .actions.imageAction { grid-template: - "name icon download" auto - "size icon download" auto + "name icon external download" auto + "size icon external download" auto / minmax(20px, 1fr) min-content min-content; } .actions { display: grid; grid-template: - "icon name download" auto - "icon size download" auto + "icon name external download" auto + "icon size external download" auto / min-content minmax(20px, 1fr) min-content; align-items: center; @@ -150,6 +150,10 @@ grid-area: download; } + .externalType { + grid-area: external; + } + .iconType { grid-area: icon; } diff --git a/src/components/common/messaging/attachments/AttachmentActions.tsx b/src/components/common/messaging/attachments/AttachmentActions.tsx index c551d2bd..8ca55cfe 100644 --- a/src/components/common/messaging/attachments/AttachmentActions.tsx +++ b/src/components/common/messaging/attachments/AttachmentActions.tsx @@ -100,6 +100,14 @@ export default function AttachmentActions({ attachment }: Props) { {filename} {filesize} + { metadata.type === 'Text' && + + + + } { if (typeof content !== "undefined") return; if (loading) return; + + if (attachment.size > 20_000) { + setContent('This file is > 20 KB, for your sake I did not load it.\nSee tracking issue here for previews: https://gitlab.insrt.uk/revolt/revite/-/issues/2'); + return; + } + setLoading(true); let cached = fileCache[attachment._id]; @@ -37,7 +43,7 @@ export default function TextFile({ attachment }: Props) { setLoading(false); } else { axios - .get(url) + .get(url, { transformResponse: [] }) .then((res) => { setContent(res.data); fileCache[attachment._id] = res.data; diff --git a/src/lib/TextAreaAutoSize.tsx b/src/lib/TextAreaAutoSize.tsx index 5660dedf..b9063318 100644 --- a/src/lib/TextAreaAutoSize.tsx +++ b/src/lib/TextAreaAutoSize.tsx @@ -131,7 +131,7 @@ export default function TextAreaAutoSize(props: TextAreaAutoSizeProps) { ref={ref} value={value} padding={padding} - style={{ height: minHeight }} + style={{ minHeight }} hideBorder={hideBorder} lineHeight={lineHeight} onChange={(ev) => {