From 7b8e6c28ac66c92f3ccf6fc742a7b5e770b32155 Mon Sep 17 00:00:00 2001 From: Tristan Yang Date: Wed, 26 Mar 2025 11:20:47 +0800 Subject: [PATCH] fix: expired local msg --- package.json | 2 +- src/components/FileMessage/ExpiredMessage.tsx | 33 +++++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 6ccdb9a4..d0fd7f37 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vocechat-web", - "version": "0.9.2", + "version": "0.9.3", "homepage": "https://voce.chat", "dependencies": { "@metamask/onboarding": "^1.0.1", diff --git a/src/components/FileMessage/ExpiredMessage.tsx b/src/components/FileMessage/ExpiredMessage.tsx index 5fdb9dd4..f1407242 100644 --- a/src/components/FileMessage/ExpiredMessage.tsx +++ b/src/components/FileMessage/ExpiredMessage.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import { useEffect, useRef } from "react"; import clsx from "clsx"; import useExpiredResMap from "@/hooks/useExpiredResMap"; @@ -7,6 +7,9 @@ import IconImage from "@/assets/icons/file.image.svg"; import IconUnknown from "@/assets/icons/file.unknown.svg"; import IconVideo from "@/assets/icons/file.video.svg"; import IconInfo from "@/assets/icons/info.svg"; +import { useLocation } from "react-router-dom"; +import useRemoveLocalMessage from "../../hooks/useRemoveLocalMessage"; +import { ChatContext } from "../../types/common"; type Props = { type?: "file" | "audio" | "image" | "video"; @@ -16,25 +19,33 @@ const InfoMap = { file: { title: "File not Found", desc: "File expired or deleted", - icon: + icon: , }, audio: { title: "Audio not Found", desc: "Audio expired or deleted", - icon: + icon: , }, image: { title: "Image not Found", desc: "Image expired or deleted", - icon: + icon: , }, video: { title: "Video not Found", desc: "Video expired or deleted", - icon: - } + icon: , + }, }; const ExpiredMessage = ({ type = "file", url = "" }: Props) => { + const { pathname } = useLocation(); + console.log("pppp", pathname); + const [context = "channel", id = 0] = pathname.split("/").slice(-2); + const removeLocalMessage = useRemoveLocalMessage({ + context: context as ChatContext, + id: +id, + }); + const msgRef = useRef(null); const { setExpired } = useExpiredResMap(); const { title, desc, icon } = InfoMap[type]; useEffect(() => { @@ -42,9 +53,19 @@ const ExpiredMessage = ({ type = "file", url = "" }: Props) => { setExpired(url); } }, [url]); + useEffect(() => { + const msgEle = msgRef.current; + if (!msgEle) return; + const mid = msgEle.closest("[data-msg-mid]")?.getAttribute("data-msg-mid") ?? ""; + if (mid.length == 13) { + // 本地消息 + removeLocalMessage(+mid); + } + }, [removeLocalMessage]); return (