diff --git a/src/components/common/messaging/attachments/Attachment.module.scss b/src/components/common/messaging/attachments/Attachment.module.scss index 4f23a898a2e9ebaeef9df8f41c2e9b160decb941..92c3545b4dfb1397ac76634d471b68a249e500f5 100644 --- a/src/components/common/messaging/attachments/Attachment.module.scss +++ b/src/components/common/messaging/attachments/Attachment.module.scss @@ -2,6 +2,14 @@ border-radius: 6px; margin: .125rem 0 .125rem; + width: auto; + height: auto; + + max-height: 640px; + max-width: min(480px, 100%); + + object-fit: contain; + &[data-spoiler="true"] { filter: blur(30px); pointer-events: none; diff --git a/src/components/common/messaging/attachments/Attachment.tsx b/src/components/common/messaging/attachments/Attachment.tsx index eb144ebee6813d21426d49a28a7065899cfe002f..342a5984641d70b66e3fea7f04e2f4d168574c34 100644 --- a/src/components/common/messaging/attachments/Attachment.tsx +++ b/src/components/common/messaging/attachments/Attachment.tsx @@ -15,55 +15,26 @@ interface Props { } const MAX_ATTACHMENT_WIDTH = 480; -const MAX_ATTACHMENT_HEIGHT = 640; export default function Attachment({ attachment, hasContent }: Props) { const client = useContext(AppContext); const { openScreen } = useIntermediate(); const { filename, metadata } = attachment; const [ spoiler, setSpoiler ] = useState(filename.startsWith("SPOILER_")); - const maxWidth = Math.min(useContext(MessageAreaWidthContext), MAX_ATTACHMENT_WIDTH); const url = client.generateFileURL(attachment, { width: MAX_ATTACHMENT_WIDTH * 1.5 }, true); - let width = 0, - height = 0; - - if (metadata.type === 'Image' || metadata.type === 'Video') { - let limitingWidth = Math.min( - maxWidth, - metadata.width - ); - let limitingHeight = Math.min( - MAX_ATTACHMENT_HEIGHT, - metadata.height - ); - - // Calculate smallest possible WxH. - width = Math.min( - limitingWidth, - limitingHeight * (metadata.width / metadata.height) - ); - - height = Math.min( - limitingHeight, - limitingWidth * (metadata.height / metadata.width) - ); - } switch (metadata.type) { case "Image": { return ( <div - style={{ width }} className={styles.container} onClick={() => spoiler && setSpoiler(false)} > {spoiler && ( <div className={styles.overflow}> - <div style={{ width, height }}> - <span><Text id="app.main.channel.misc.spoiler_attachment" /></span> - </div> + <span><Text id="app.main.channel.misc.spoiler_attachment" /></span> </div> )} <img @@ -79,7 +50,6 @@ export default function Attachment({ attachment, hasContent }: Props) { ev.button === 1 && window.open(url, "_blank") } - style={{ width, height }} /> </div> ); @@ -102,13 +72,10 @@ export default function Attachment({ attachment, hasContent }: Props) { onClick={() => spoiler && setSpoiler(false)}> {spoiler && ( <div className={styles.overflow}> - <div style={{ width, height }}> - <span><Text id="app.main.channel.misc.spoiler_attachment" /></span> - </div> + <span><Text id="app.main.channel.misc.spoiler_attachment" /></span> </div> )} <div - style={{ width }} data-spoiler={spoiler} data-has-content={hasContent} className={classNames(styles.attachment, styles.video)} @@ -117,7 +84,6 @@ export default function Attachment({ attachment, hasContent }: Props) { <video src={url} controls - style={{ width, height }} onMouseDown={ev => ev.button === 1 && window.open(url, "_blank")