From 102db693a6e2864cc3431341231faf5121658d50 Mon Sep 17 00:00:00 2001
From: yezian <jueweijue@gmail.com>
Date: Wed, 12 Mar 2025 18:25:31 +0800
Subject: [PATCH] anln_2.2 (#43)

Co-authored-by: al <al@cdhncy.com>
Reviewed-on: https://git.wishpal.cn/wishpal_ironfan/tiefen_space_h5/pulls/43
---
 app/found/page.js                             | 15 ++--
 app/messageDetail/page.js                     | 73 +++++++++++++++----
 app/my/relationship/page.js                   |  2 +
 app/my/setting/feedback/page.js               |  2 -
 .../components/MessageList/index.jsx          |  4 +-
 app/space/page.js                             | 11 ++-
 components/InfiniteScrollContent/index.jsx    | 34 +++++----
 7 files changed, 100 insertions(+), 41 deletions(-)

diff --git a/app/found/page.js b/app/found/page.js
index 3f23271..7ac5da8 100644
--- a/app/found/page.js
+++ b/app/found/page.js
@@ -39,7 +39,7 @@ export default function Found() {
   const [activeIndex, setActiveIndex] = useState(0);
   const [account, setAccount] = useState(null);
   const [scrollHeight, setScrollHeight] = useState(0);
-
+  const [loading, setLoading] = useState(false);
   // useEffect(() => {
   //   const info = get("account");
   //   console.log("info",info)
@@ -48,11 +48,14 @@ export default function Found() {
   //   }
   // }, []
   // )
-  const childrenFunc = () => {
+  const childrenFunc = async () => {
+    setLoading(true);
     if (!activeIndex) {
-      recommPostRef.current?.doRefresh();
+      await recommPostRef.current?.doRefresh();
+      setLoading(false);
     } else {
-      followPostRef.current?.doRefresh();
+      await followPostRef.current?.doRefresh();
+      setLoading(false);
     }
   };
   useEffect(() => {
@@ -119,7 +122,9 @@ export default function Found() {
           </Swiper.Item>
         </Swiper>
         <div
-          className={`fixed bottom-[50px] right-4 z-[50] w-10 h-10 flex items-center justify-center bg-[#1d1d1d71] rounded-full`}
+          className={`fixed bottom-[50px] right-4 z-[50] w-10 h-10 flex items-center justify-center bg-[#1d1d1d71] rounded-full ${
+            loading ? "animate-spin" : ""
+          }`}
           style={{ zIndex: 999 }}
         >
           <FontAwesomeIcon
diff --git a/app/messageDetail/page.js b/app/messageDetail/page.js
index d489f66..f4f7002 100644
--- a/app/messageDetail/page.js
+++ b/app/messageDetail/page.js
@@ -21,13 +21,17 @@ export default function MessageDetail({}) {
   // const [hasMore, setHasMore] = useState(true);
   const router = useRouter();
   const searchParams = useSearchParams();
-  const [oldMessages, setOldMessages] = useState([]);
+  const [oldMessages, setOldMessages] = useState({
+    list: [],
+    isGetHistory: false,
+  });
   const [messages, setMessages] = useState([]);
   const [handledmessages, setHandledmessages] = useState([]);
   const [sessionId, setSessionId] = useState();
   const [userInfo, setUserInfo] = useState(null);
   const [newMessage, setNewMessage] = useState("");
   const [loading, setLoading] = useState(false);
+  const [sendding, setSendding] = useState(false);
   const [offset, setOffset] = useState(0);
   const [more, setMore] = useState(1);
   const scrollBox = useRef();
@@ -60,9 +64,10 @@ export default function MessageDetail({}) {
   }, []);
   useEffect(() => {
     const intervalId = setInterval(() => {
+      // debugger;
       // console.log("oldMessages[0]", oldMessages[0]);
-      if (oldMessages[0]) {
-        updateMessages(oldMessages[0]?.id, 0, oldMessages);
+      if (oldMessages.list[0]) {
+        updateMessages(oldMessages.list[0]?.id, 0, oldMessages.list);
         // toScrollBottom.current = 1;
       }
     }, 3000); // 间隔时间为3秒
@@ -71,13 +76,14 @@ export default function MessageDetail({}) {
     return () => {
       clearInterval(intervalId);
     };
-  }, [oldMessages]);
+  }, [oldMessages.list]);
   useEffect(() => {
-    if (toScrollBottom.current) {
+    // debugger;
+    if (toScrollBottom.current && !oldMessages.isGetHistory) {
       scrollBox.current?.scrollTo(0, scrollBox.current.scrollHeight + 50);
       toScrollBottom.current = 0;
     }
-  }, [messages]);
+  }, [oldMessages.list, oldMessages.isGetHistory]);
   useEffect(() => {
     if (sessionId && userInfo.mid) {
       loadEarlierHistory().then((res) => {
@@ -190,7 +196,10 @@ export default function MessageDetail({}) {
       }
       setOffset(data.data.offset);
       setMore(data.data.more);
-      let mathNewMessages = handleData([...oldMessages, ...data.data.list]);
+      let mathNewMessages = handleData(
+        [...oldMessages.list, ...data.data.list],
+        oldMessages.list.length > 0
+      );
       // setMessages((prev) => [...prev, ...temMessages]);
       setLoading(false);
       return mathNewMessages;
@@ -212,6 +221,7 @@ export default function MessageDetail({}) {
       //查询历史记录的时候后移一位,防止记录重复
       setOffset((prev) => prev + 1);
       //请求接口发送私信
+      setSendding(true);
       try {
         const data = await requireAPI(
           "POST",
@@ -224,6 +234,7 @@ export default function MessageDetail({}) {
             },
           }
         );
+        setSendding(false);
         if (data.ret === -1) {
           Toast.show({
             icon: "error",
@@ -240,6 +251,7 @@ export default function MessageDetail({}) {
         });
       } catch (error) {
         // console.error(error);
+        setSendding(false);
       }
       // //每次发送都缓存信息到本地
       // addArr(`${selfData.mid}_to_${params.mid}_messages`, messages);
@@ -265,7 +277,7 @@ export default function MessageDetail({}) {
     }
   }
 
-  const handleData = (list) => {
+  const handleData = (list, isGetHistory) => {
     // console.log("list", list);
     const account = get("account");
     const temMessages = list.map((item) => {
@@ -293,7 +305,9 @@ export default function MessageDetail({}) {
           user: {
             _id: 0,
             name: "客服",
-            avatar: process.env.NEXT_PUBLIC_WEB_ASSETS_URL + "/images/icon.png",
+            avatar:
+              process.env.NEXT_PUBLIC_WEB_ASSETS_URL +
+              "/images/icon_border.png",
           },
         };
       }
@@ -301,7 +315,16 @@ export default function MessageDetail({}) {
     // console.log("handledmessages......", handledmessages);
     // console.log("[...messages, ...temMessages]", temMessages);
     setHandledmessages(temMessages);
-    setOldMessages(list);
+    setOldMessages((old) => {
+      // debugger;
+      if (old.list.length === list.length) {
+        return old;
+      } else {
+        // debugger;
+        return { list, isGetHistory: !!isGetHistory };
+      }
+    });
+
     let newMessages = temMessages.reverse();
     let mathNewMessages = newMessages.reduce(
       (accumulator, currentValue, index, sourceArray) => {
@@ -415,11 +438,16 @@ export default function MessageDetail({}) {
             <div className="my-2">
               <p>触发按钮:</p>
               <ul className="grid grid-cols-2 gap-2 mt-2">
-                {btns.map((item) => {
+                {btns.map((item, index) => {
                   return (
                     <li
+                      key={index}
                       onClick={() => {
-                        onSend(item, oldMessages[0]?.id || -1, oldMessages);
+                        onSend(
+                          item,
+                          oldMessages[0]?.id || -1,
+                          oldMessages.list
+                        );
                       }}
                       className="bg-[#3333331A] rounded text-center  px-4 py-1"
                     >
@@ -436,7 +464,7 @@ export default function MessageDetail({}) {
       }
       // data.m_type===1?it?.text.split("|")it?.text
     },
-    [sessionId]
+    [sessionId, oldMessages.list]
   );
   return (
     <div className="bg-[#13121F] h-screen overflow-y-auto" ref={scrollBox}>
@@ -549,9 +577,22 @@ export default function MessageDetail({}) {
             <Button
               size="middle"
               block
-              onClick={() =>
-                onSend(newMessage, oldMessages[0]?.id || -1, oldMessages)
-              }
+              disabled={sendding}
+              onClick={() => {
+                if (newMessage.includes("|")) {
+                  Toast.show({
+                    icon: "fail",
+                    content: "消息不能包含|",
+                    position: "top",
+                  });
+                  return;
+                }
+                onSend(
+                  newMessage,
+                  oldMessages.list[0]?.id || -1,
+                  oldMessages.list
+                );
+              }}
               style={{
                 "--background-color": "#FF669E",
                 "--border-radius": "10px",
diff --git a/app/my/relationship/page.js b/app/my/relationship/page.js
index c059c76..e639eb2 100644
--- a/app/my/relationship/page.js
+++ b/app/my/relationship/page.js
@@ -181,6 +181,7 @@ export default function Relationship() {
                   hasMore={hasMore}
                   isEmpty={data.length == 0}
                   showNoMore={data.length === 0}
+                  type="friendship"
                 />
               </InfiniteScroll>
             </List>
@@ -238,6 +239,7 @@ export default function Relationship() {
                   hasMore={hasMore}
                   isEmpty={data.length == 0}
                   showNoMore={data.length === 0}
+                  type="friendship"
                 />
               </InfiniteScroll>
             </List>
diff --git a/app/my/setting/feedback/page.js b/app/my/setting/feedback/page.js
index 43e9a06..876c04d 100644
--- a/app/my/setting/feedback/page.js
+++ b/app/my/setting/feedback/page.js
@@ -43,8 +43,6 @@ export default function Feedback() {
 
     // console.log("media",media)
     const account = await get("account");
-    debugger;
-
     try {
       const data = await requireAPI(
         "POST",
diff --git a/app/noticeDetail/components/MessageList/index.jsx b/app/noticeDetail/components/MessageList/index.jsx
index 4f2af66..6fe1885 100644
--- a/app/noticeDetail/components/MessageList/index.jsx
+++ b/app/noticeDetail/components/MessageList/index.jsx
@@ -250,7 +250,9 @@ const MessageList = ({ mid, changeNoticeCount, refInstance, noticeCount }) => {
                 </div>
               </div>
               <p className="text-xs text-[#FFFFFFB2]">
-                {data?.recent_contact_cs_msg || "暂无新消息"}
+                {(data?.recent_contact_cs_msg?.includes("|")
+                  ? data?.recent_contact_cs_msg?.split("|")[0]
+                  : data?.recent_contact_cs_msg) || "暂无新消息"}
               </p>
             </div>
             <div>
diff --git a/app/space/page.js b/app/space/page.js
index 96ddee3..264c67e 100644
--- a/app/space/page.js
+++ b/app/space/page.js
@@ -321,6 +321,8 @@ const SpacesList = forwardRef(({ scrollHeight }, ref) => {
           hasMore={hasMore}
           isEmpty={spacesList.length == 0}
           showNoMore={spacesList.length === 0}
+          zoneEmpty={true}
+          type="nospace"
         />
       </InfiniteScroll>
     </div>
@@ -434,7 +436,12 @@ const SpacePostList = forwardRef(({ scrollHeight }, ref) => {
         )}
         {spacePostList?.map((item, index) => (
           <List.Item key={item.id + "_" + index} className="!p-0">
-            <PostItem type="post" data={item} date={new Date(item.ct * 1000)} />
+            <PostItem
+              type="post"
+              showFollow={false}
+              data={item}
+              date={new Date(item.ct * 1000)}
+            />
           </List.Item>
         ))}
         {!spacePostList?.length && (
@@ -442,7 +449,7 @@ const SpacePostList = forwardRef(({ scrollHeight }, ref) => {
             className={`flex flex-col items-center justify-center h-screen`}
             style={{ height: `calc(100vh - 133px)` }}
           >
-            <Empty type="nodata" />
+            <Empty type="nospace" />
           </div>
         )}
       </List>
diff --git a/components/InfiniteScrollContent/index.jsx b/components/InfiniteScrollContent/index.jsx
index 179ea64..a5dfcbe 100644
--- a/components/InfiniteScrollContent/index.jsx
+++ b/components/InfiniteScrollContent/index.jsx
@@ -8,6 +8,8 @@ export default function InfiniteScrollContent({
   hasMore = 0,
   isEmpty,
   showNoMore = true,
+  zoneEmpty = false,
+  type = "nodata",
 }) {
   const router = useRouter();
   return (
@@ -24,21 +26,23 @@ export default function InfiniteScrollContent({
           className={`flex flex-col items-center mt-28`}
           // style={{ height: `${scrollHeight}px` }}
         >
-          <Empty type="nodata" />
-          <div className="text-white">
-            <p
-              onClick={() => router.push("/search")}
-              className="text-base font-medium flex items-center justify-center bg-[#FFFFFF1A] mt-2 rounded-full w-[190px] h-[46px]"
-            >
-              搜索空间
-            </p>
-            <p
-              onClick={() => router.push("/found")}
-              className="text-base font-medium flex items-center justify-center bg-[#FFFFFF1A] mt-2 rounded-full w-[190px] h-[46px]"
-            >
-              查看推荐
-            </p>
-          </div>
+          <Empty type={type} />
+          {zoneEmpty && (
+            <div className="text-white">
+              <p
+                onClick={() => router.push("/search")}
+                className="text-base font-medium flex items-center justify-center bg-[#FFFFFF1A] mt-2 rounded-full w-[190px] h-[46px]"
+              >
+                搜索空间
+              </p>
+              <p
+                onClick={() => router.push("/found")}
+                className="text-base font-medium flex items-center justify-center bg-[#FFFFFF1A] mt-2 rounded-full w-[190px] h-[46px]"
+              >
+                查看推荐
+              </p>
+            </div>
+          )}
         </div>
       )}
     </>