From b2c4f17eae022bc4a4c6d670d6514727cf204c68 Mon Sep 17 00:00:00 2001 From: zerosoul Date: Fri, 10 Jun 2022 20:25:41 +0800 Subject: [PATCH] refactor: image message --- src/common/component/ChannelModal/index.js | 2 +- src/common/component/ContactsModal.js | 4 ++-- .../FileMessage/{Image.js => ImageMessage.js} | 19 ++++++++++++++++--- src/common/component/FileMessage/index.js | 5 +++-- 4 files changed, 22 insertions(+), 8 deletions(-) rename src/common/component/FileMessage/{Image.js => ImageMessage.js} (81%) diff --git a/src/common/component/ChannelModal/index.js b/src/common/component/ChannelModal/index.js index c385cb19..620ec681 100644 --- a/src/common/component/ChannelModal/index.js +++ b/src/common/component/ChannelModal/index.js @@ -94,7 +94,7 @@ export default function ChannelModal({ personal = false, closeModal }) { {contacts && ( diff --git a/src/common/component/ContactsModal.js b/src/common/component/ContactsModal.js index a84f1904..9cb553b4 100644 --- a/src/common/component/ContactsModal.js +++ b/src/common/component/ContactsModal.js @@ -16,7 +16,7 @@ const StyledWrapper = styled.div` box-shadow: 0px 25px 50px rgba(31, 41, 55, 0.25); border-radius: 8px; transition: all 0.5s ease; - overflow-y: scroll; + /* overflow-y: scroll; */ .search { box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.1); padding: 8px; @@ -67,7 +67,7 @@ export default function ContactsModal({ closeModal }) { {contacts && ( diff --git a/src/common/component/FileMessage/Image.js b/src/common/component/FileMessage/ImageMessage.js similarity index 81% rename from src/common/component/FileMessage/Image.js rename to src/common/component/FileMessage/ImageMessage.js index dd89ee66..411c7d97 100644 --- a/src/common/component/FileMessage/Image.js +++ b/src/common/component/FileMessage/ImageMessage.js @@ -1,4 +1,4 @@ -// import React from 'react' +import { useState, useEffect } from "react"; import styled from "styled-components"; import { CircularProgressbar, buildStyles } from "react-circular-progressbar"; import "react-circular-progressbar/dist/styles.css"; @@ -29,7 +29,7 @@ const Styled = styled.div` } `; import { getDefaultSize } from "../../utils"; -export default function Image({ +export default function ImageMessage({ uploading, progress, thumbnail, @@ -37,8 +37,21 @@ export default function Image({ content, properties = {}, }) { + const [url, setUrl] = useState(thumbnail); const { width = 0, height = 0 } = getDefaultSize(properties); console.log("image props", properties, width, height); + useEffect(() => { + const newUrl = thumbnail; + const img = new Image(); + img.onload = () => { + setUrl(newUrl); + }; + img.onerror = () => { + setUrl(""); + }; + img.src = newUrl; + }, [thumbnail]); + return ( {uploading && ( @@ -64,7 +77,7 @@ export default function Image({ data-meta={JSON.stringify(properties)} data-origin={content} data-download={download} - src={thumbnail || download || content} + src={url} /> ); diff --git a/src/common/component/FileMessage/index.js b/src/common/component/FileMessage/index.js index bde5b793..f31b2c98 100644 --- a/src/common/component/FileMessage/index.js +++ b/src/common/component/FileMessage/index.js @@ -3,7 +3,7 @@ import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; import { useSelector } from "react-redux"; import Styled from "./styled"; -import Image from "./Image"; +import ImageMessage from "./ImageMessage"; import useRemoveLocalMessage from "../../hook/useRemoveLocalMessage"; import useUploadFile from "../../hook/useUploadFile"; import useSendMessage from "../../hook/useSendMessage"; @@ -113,7 +113,8 @@ export default function FileMessage({ if (isImage(content_type, size)) return ( -