diff --git a/app/login/page.js b/app/login/page.js
index 5b9b189..c3eb975 100644
--- a/app/login/page.js
+++ b/app/login/page.js
@@ -9,7 +9,6 @@ import {
Divider,
Checkbox,
Toast,
- Image,
Dialog,
Popup,
} from "antd-mobile";
@@ -21,10 +20,8 @@ import { saveUserInfo, get, save } from "@/utils/storeInfo";
import { connect } from "react-redux";
import { cryptoPassword } from "@/utils/crypto";
import requireAPI from "@/utils/requireAPI";
-import { signOut, signIn, checkAuth } from "@/utils/auth";
+import { signIn, checkAuth } from "@/utils/auth";
import OwnInput from "@/components/OwnInput";
-import Link from "next/link";
-import OwnImage from "@/components/OwnImage";
import OwnIcon from "@/components/OwnIcon";
/*
params格式:
diff --git a/app/my/setting/page.js b/app/my/setting/page.js
index 3fb85d2..95852ac 100644
--- a/app/my/setting/page.js
+++ b/app/my/setting/page.js
@@ -6,7 +6,9 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faAngleLeft, faAngleRight } from "@fortawesome/free-solid-svg-icons";
import { useRouter } from "next/navigation";
import { handleLogout } from "@/api/public";
-export default function Setting() {
+import { connect } from "react-redux";
+import { handleLogin } from "@/store/actions";
+function Setting({ handleLogin }) {
const router = useRouter();
return (
@@ -36,7 +38,9 @@ export default function Setting() {
/>
}
onClick={() => {
- handleLogout();
+ handleLogout().then(() => {
+ handleLogin({ isSignin: false, userToken: null });
+ });
router.push("/login");
}}
>
@@ -125,3 +129,8 @@ export default function Setting() {
);
}
+
+const mapDispatchToProps = {
+ handleLogin,
+};
+export default connect(null, mapDispatchToProps)(Setting);
diff --git a/app/noticeDetail/components/MessageList/index.jsx b/app/noticeDetail/components/MessageList/index.jsx
index f3969da..8bb2963 100644
--- a/app/noticeDetail/components/MessageList/index.jsx
+++ b/app/noticeDetail/components/MessageList/index.jsx
@@ -106,6 +106,7 @@ const MessageList = ({ mid, changeNoticeCount, refInstance, noticeCount }) => {
});
return;
}
+ changeNoticeCount(_data.data.total);
const noticeObj = _data.data.result;
setData(noticeObj);
setInfoItems((old) => {
diff --git a/app/noticeDetail/components/NoticeItem/index.jsx b/app/noticeDetail/components/NoticeItem/index.jsx
index 4ca43e0..386534d 100644
--- a/app/noticeDetail/components/NoticeItem/index.jsx
+++ b/app/noticeDetail/components/NoticeItem/index.jsx
@@ -43,7 +43,7 @@ export default function NoticeItem({ leftIcon, hasLink, data }) {
{
- if (data.is_valid) {
+ if (!data.is_valid) {
Toast.show({
icon: "fail",
content: "此链接已失效",
diff --git a/app/noticeDetail/systemNotice/[type]/page.js b/app/noticeDetail/systemNotice/[type]/page.js
index 835ccf4..be51da1 100644
--- a/app/noticeDetail/systemNotice/[type]/page.js
+++ b/app/noticeDetail/systemNotice/[type]/page.js
@@ -41,7 +41,7 @@ function SystemNotice({ mid, changeNoticeCount, total, ...props }) {
});
return;
}
- changeNoticeCount();
+ changeNoticeCount(0);
received.current = true;
}
diff --git a/components/BottomNav/index.js b/components/BottomNav/index.js
index 9fb7d2e..f57d1a1 100644
--- a/components/BottomNav/index.js
+++ b/components/BottomNav/index.js
@@ -43,7 +43,7 @@ function BottomNav({ changeNoticeCount, changeInviter, noticeCount }) {
};
getDtata();
return () => {};
- }, [noticeCount]);
+ }, [noticeCount, pathname]);
const setRouteActive = (value) => {
router.replace(value);
};
diff --git a/components/Websocket/index.jsx b/components/Websocket/index.jsx
index 2ecf1eb..0204ad1 100644
--- a/components/Websocket/index.jsx
+++ b/components/Websocket/index.jsx
@@ -1,37 +1,45 @@
-import React, { useEffect, useState, useTransition } from "react";
+import React, { useEffect, useState, useRef } from "react";
import baseRequest from "@/utils/baseRequest";
-const WebSocketComponent = ({ getData }) => {
+import { connect } from "react-redux";
+import { get } from "@/utils/storeInfo";
+const WebSocketComponent = ({ getData, authInfo }) => {
const [messages, setMessages] = useState([]);
- const [pending, startTransition] = useTransition();
+ // const [pending, startTransition] = useTransition();
+ const socketRef = useRef(null);
useEffect(() => {
- let socket = null;
let interval = null;
-
+ const account = get("account");
function connect_socket() {
const base = baseRequest();
- if (socket && socket.readyState === 1) return;
+
+ if (socketRef.current && socketRef.current.readyState === 1) return;
// 创建WebSocket连接
- if (!socket)
- socket = new WebSocket(
+ if (!socketRef.current && account)
+ socketRef.current = new WebSocket(
`${process.env.NEXT_PUBLIC_WEBSOCKET_URL}/ws?b_mid=${base.b_mid}&b_dt=1&b_token=${base.b_token}&b-ch=h5`
);
// 响应服务器的 ping
- // socket.on("ping", () => {
- // socket.send("pong");
+ // socketRef.current.on("ping", () => {
+ // socketRef.current.send("pong");
// });
}
+ if (!account && socketRef.current) {
+ socketRef.current.close();
+ socketRef.current = null;
+ return;
+ }
connect_socket();
- if (socket) {
+ if (socketRef.current) {
// 注意使用wss协议(如果服务器支持)
// 连接打开时触发
- socket.onopen = () => {
- // console.log("WebSocket connected.", socket.readyState);
+ socketRef.current.onopen = () => {
+ // console.log("WebSocket connected.", socketRef.current.readyState);
// 可以在这里发送消息到服务器,例如:socket.send('Hello Server!');
- socket.send(JSON.stringify({ t: 1 }));
+ socketRef.current.send(JSON.stringify({ t: 1 }));
};
// 处理收到的消息
- socket.onmessage = (event) => {
+ socketRef.current.onmessage = (event) => {
if (Object.prototype.toString.call(event.data) === "[object Blob]") {
var reader = new FileReader();
reader.readAsText(event.data, "utf-8");
@@ -39,13 +47,13 @@ const WebSocketComponent = ({ getData }) => {
try {
const data = JSON.parse(reader.result);
if (data.t === 2 && data.msg.ping_interval) {
- socket.send("ping");
+ socketRef.current.send("ping");
interval = setInterval(() => {
// 发送 ping 给服务器
- socket.send("ping");
+ socketRef.current.send("ping");
// 响应服务器的 ping
- // socket.on("ping", () => {
- // socket.send("pong");
+ // socketRef.current.on("ping", () => {
+ // socketRef.current.send("pong");
// });
}, data.msg.ping_interval * 1000);
}
@@ -59,23 +67,25 @@ const WebSocketComponent = ({ getData }) => {
};
// 连接关闭时触发
- socket.onclose = () => {
+ socketRef.current.onclose = () => {
clearInterval(interval);
connect_socket();
// console.log("WebSocket disconnected.");
};
// 连接错误时触发
- socket.onerror = (error) => {
+ socketRef.current.onerror = (error) => {
// console.error("WebSocket error:", error);
};
}
// 组件卸载时关闭WebSocket连接
return () => {
- // console.log("state", socket.readyState);
- socket?.readyState === WebSocket.OPEN && socket?.close();
+ // console.log("state", socketRef.current.readyState);
+ if (socketRef.current)
+ socketRef.current?.readyState === WebSocket.OPEN &&
+ socketRef.current?.close();
clearInterval(interval);
};
- }, []); // 空依赖数组表示这个effect只在组件挂载时运行一次
+ }, [authInfo]); // 空依赖数组表示这个effect只在组件挂载时运行一次
// return
;
return (
@@ -89,4 +99,9 @@ const WebSocketComponent = ({ getData }) => {
);
};
-export default WebSocketComponent;
+const mapStateToProps = ({ reducer }) => {
+ return {
+ authInfo: reducer.authInfo,
+ };
+};
+export default connect(mapStateToProps, null)(WebSocketComponent);
diff --git a/utils/requireAPI.js b/utils/requireAPI.js
index 0f83342..792c860 100644
--- a/utils/requireAPI.js
+++ b/utils/requireAPI.js
@@ -56,9 +56,11 @@ export default function customFetch(
// // 检查响应状态码
if (!response.ok) {
- throw new Error(
- "Network response was not ok " + response.statusText
- );
+ try {
+ throw new Error(
+ "Network response was not ok " + response.statusText
+ );
+ } catch (error) {}
}
// console.log("response-----", response);
// const contentLength = response.headers.get("Content-Length");
@@ -79,13 +81,13 @@ export default function customFetch(
.read()
.then(({ done, value }) => {
if (done) {
- controller.close();
+ controller?.close();
return;
}
// loaded += value.byteLength;
// const progress = (loaded / total) * 100;
// console.log(`Progress: ${progress.toFixed(2)}%`);
- controller.enqueue(value);
+ controller?.enqueue(value);
push();
})
.catch((error) => {