修复红点问题

This commit is contained in:
张成
2025-11-21 13:25:32 +08:00
parent 623692d9f3
commit 27264011a1
4 changed files with 104 additions and 62 deletions

View File

@@ -3,9 +3,9 @@ import { View, Text, Image, ScrollView } from "@tarojs/components";
import GuideBar from "@/components/GuideBar";
import { withAuth, EmptyState, GeneralNavbar } from "@/components";
import noticeService from "@/services/noticeService";
import messageService from "@/services/messageService";
import { formatRelativeTime } from "@/utils/timeUtils";
import Taro, { useDidShow } from "@tarojs/taro";
import { useReddotInfo, useFetchReddotInfo } from "@/store/messageStore";
import "./index.scss";
// 消息类型定义
@@ -31,8 +31,10 @@ const Message = () => {
const [loading, setLoading] = useState(false);
const [reachedBottom, setReachedBottom] = useState(false);
const [refreshing, setRefreshing] = useState(false);
const [commentUnreadCount, setCommentUnreadCount] = useState(0);
const [followUnreadCount, setFollowUnreadCount] = useState(0);
// 从 store 获取红点信息
const reddotInfo = useReddotInfo();
const fetchReddotInfo = useFetchReddotInfo();
// 获取消息列表
const getNoticeList = async () => {
@@ -54,27 +56,14 @@ const Message = () => {
}
};
// 获取红点信息
const getReddotInfo = async () => {
try {
const res = await messageService.getReddotInfo();
if (res.code === 0) {
setCommentUnreadCount(res.data.comment_unread_count || 0);
setFollowUnreadCount(res.data.follow_unread_count || 0);
}
} catch (e) {
console.error("获取红点信息失败:", e);
}
};
useEffect(() => {
getNoticeList();
getReddotInfo();
fetchReddotInfo();
}, []);
// 每次页面显示时刷新红点信息
useDidShow(() => {
getReddotInfo();
fetchReddotInfo();
});
// 过滤系统消息
@@ -168,9 +157,9 @@ const Message = () => {
src={require('@/static/message/comment-icon.svg')}
mode="aspectFit"
/>
{commentUnreadCount > 0 && (
{(reddotInfo?.comment_unread_count || 0) > 0 && (
<View className="badge">
{commentUnreadCount > 99 ? '+99' : `+${commentUnreadCount}`}
{(reddotInfo?.comment_unread_count || 0) > 99 ? '+99' : `+${reddotInfo?.comment_unread_count || 0}`}
</View>
)}
</View>
@@ -186,9 +175,9 @@ const Message = () => {
src={require('@/static/message/follow-icon.svg')}
mode="aspectFit"
/>
{followUnreadCount > 0 && (
{(reddotInfo?.follow_unread_count || 0) > 0 && (
<View className="badge">
{followUnreadCount > 99 ? '+99' : `+${followUnreadCount}`}
{(reddotInfo?.follow_unread_count || 0) > 99 ? '+99' : `+${reddotInfo?.follow_unread_count || 0}`}
</View>
)}
</View>