From fcd4fd532c6efe161a00b3f49f8060566035a476 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Mon, 30 Oct 2023 00:26:19 +0800 Subject: [PATCH] Add login and logout notification --- package-lock.json | 9 ++++ package.json | 1 + src/assets/css/constants.scss | 11 ++--- .../common/sidebar/SidebarFooter.tsx | 22 +++++++++- src/constants/common.constants.ts | 19 ++++++++- src/constants/urls.constants.ts | 1 + src/global.d.ts | 41 +++++++++++++++++-- src/pages/Login.tsx | 25 ++++++++++- src/services/index.tsx | 2 +- src/utils/auth.ts | 28 +++++++------ 10 files changed, 134 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index c67c05d..159998f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "localforage": "^1.10.0", "lodash": "^4.17.21", "match-sorter": "^6.3.1", + "moment": "^2.29.4", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.15.0", @@ -4885,6 +4886,14 @@ "ufo": "^1.3.0" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", diff --git a/package.json b/package.json index 288a28a..932e59b 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "localforage": "^1.10.0", "lodash": "^4.17.21", "match-sorter": "^6.3.1", + "moment": "^2.29.4", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.15.0", diff --git a/src/assets/css/constants.scss b/src/assets/css/constants.scss index 3e6e1b5..50786e0 100644 --- a/src/assets/css/constants.scss +++ b/src/assets/css/constants.scss @@ -1,10 +1,11 @@ $origin-color: white; -$main-color: #4E47BB; +$production-color: #4E47BB; +$main-color: $production-color; $secondary-color: #BAB8E5; -$error-color: #ff4d4f; -$error-secondary-color: #ff7875; -$blue-color: #1677ff; -$active-color: #EBECFFD; +$error-color: #FF4D4F; +$error-secondary-color: #FF7875; +$blue-color: #1677FF; +$active-color: #EBECFD; $background-color: #F5F5F5; $font-main-color: #4D4D4D; $font-secondary-color: #9E9E9E; diff --git a/src/components/common/sidebar/SidebarFooter.tsx b/src/components/common/sidebar/SidebarFooter.tsx index 55e1d24..c3b7666 100644 --- a/src/components/common/sidebar/SidebarFooter.tsx +++ b/src/components/common/sidebar/SidebarFooter.tsx @@ -1,7 +1,9 @@ import React from 'react' import Icon from '@ant-design/icons' -import { getLoginStatus, logout } from '@/utils/auth' +import { getLoginStatus, getUsername, logout } from '@/utils/auth' import { getRedirectUrl } from '@/utils/common' +import { notification } from 'antd' +import { COLOR_ERROR } from '@/constants/common.constants.ts' const SidebarFooter: React.FC = () => { const matches = useMatches() @@ -9,6 +11,8 @@ const SidebarFooter: React.FC = () => { const location = useLocation() const navigate = useNavigate() const [exiting, setExiting] = useState(false) + const [username, setUsername] = useState('') + const handleClickAvatar = () => { if (getLoginStatus()) { navigate('/user') @@ -24,12 +28,26 @@ const SidebarFooter: React.FC = () => { setExiting(true) void logout().finally(() => { + notification.info({ + message: '已退出登录', + icon: + }) setTimeout(() => { window.location.reload() }, 1500) }) } + const loginStatus = getLoginStatus() + + useEffect(() => { + if (getLoginStatus()) { + void getUsername().then((username) => { + setUsername(username) + }) + } + }, [loginStatus]) + return (
@@ -42,7 +60,7 @@ const SidebarFooter: React.FC = () => {