diff --git a/package.json b/package.json index 67eceaeb..d1acc5bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vocechat-web", - "version": "0.4.17", + "version": "0.4.18", "homepage": "https://voce.chat", "dependencies": { "@electron-toolkit/preload": "^2.0.0", @@ -27,11 +27,11 @@ "emoji-mart": "5.5.2", "eslint": "^8.46.0", "firebase": "^10.1.0", - "framer-motion": "^10.15.0", + "framer-motion": "^10.15.1", "fs-extra": "^11.1.1", "heic2any": "^0.0.4", "html-webpack-plugin": "^5.5.3", - "i18next": "^23.4.1", + "i18next": "^23.4.4", "i18next-browser-languagedetector": "^7.1.0", "i18next-http-backend": "^2.2.1", "linkify-plugin-mention": "^4.1.1", @@ -59,7 +59,7 @@ "react-textarea-autosize": "^8.5.2", "react-use-wizard": "^2.2.3", "react-viewport-list": "^7.1.1", - "react-virtuoso": "^4.4.2", + "react-virtuoso": "^4.5.0", "rooks": "^7.14.1", "slate": "^0.94.1", "slate-history": "^0.93.0", @@ -106,24 +106,24 @@ ] }, "devDependencies": { - "@babel/core": "^7.22.9", + "@babel/core": "^7.22.10", "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@ianvs/prettier-plugin-sort-imports": "^4.1.0", "@types/emoji-mart": "^3.0.9", "@types/masonry-layout": "^4.2.5", - "@types/node": "^20.4.7", - "@types/react": "^18.2.18", + "@types/node": "^20.4.9", + "@types/react": "^18.2.19", "@types/react-dom": "^18.2.7", "@types/react-helmet": "^6.1.6", "@types/react-syntax-highlighter": "^15.5.7", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", + "@typescript-eslint/eslint-plugin": "^6.3.0", + "@typescript-eslint/parser": "^6.3.0", "@welldone-software/why-did-you-render": "^7.0.1", "autoprefixer": "^10.4.14", "babel-loader": "^9.1.3", "babel-plugin-named-asset-import": "^0.3.8", "babel-preset-react-app": "^10.0.1", - "eslint-config-prettier": "^8.10.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.33.1", diff --git a/src/hooks/useLogout.ts b/src/hooks/useLogout.ts index b26f774c..9d9504a4 100644 --- a/src/hooks/useLogout.ts +++ b/src/hooks/useLogout.ts @@ -9,17 +9,19 @@ import { resetFileMessage } from "@/app/slices/message.file"; import { resetReactionMessage } from "@/app/slices/message.reaction"; import { resetUserMsg } from "@/app/slices/message.user"; import { resetUsers } from "@/app/slices/users"; +import { resetAuthData } from "@/app/slices/auth.data"; export default function useLogout() { const dispatch = useDispatch(); const [logout, { isLoading, isSuccess }] = useLazyLogoutQuery(); - const clearLocalData = (footprint?: boolean) => { - let fp = typeof footprint === "undefined" ? true : footprint; + const clearLocalData = (auth?: boolean) => { + let clearAuth = typeof auth === "undefined" ? false : auth; dispatch(resetChannels()); dispatch(resetUsers()); - // 和消息相关的数据 - if (fp) { - dispatch(resetFootprint()); + dispatch(resetFootprint()); + // 同时也清除本地登录数据 + if (clearAuth) { + dispatch(resetAuthData()); } dispatch(resetChannelMsg()); dispatch(resetUserMsg()); diff --git a/src/routes/setting/DataManagement/ClearConfirmModal.tsx b/src/routes/setting/DataManagement/ClearConfirmModal.tsx index baed8d8f..e10ed049 100644 --- a/src/routes/setting/DataManagement/ClearConfirmModal.tsx +++ b/src/routes/setting/DataManagement/ClearConfirmModal.tsx @@ -7,8 +7,6 @@ import Modal from "@/components/Modal"; import Button from "@/components/styled/Button"; import StyledModal from "@/components/styled/Modal"; import { VisibleModalType } from "./index"; -import useLogout from "@/hooks/useLogout"; - interface Props { context: VisibleModalType; title: string; @@ -18,7 +16,6 @@ interface Props { const ClearConfirmModal: FC = ({ context, title, desc, closeModal }) => { // const { t } = useTranslation("auth"); - const { clearLocalData } = useLogout(); const { t: ct } = useTranslation(); const [clearFiles, { isLoading: filesClearing, isSuccess: clearFilesSuccess }] = useLazyClearAllFilesQuery(); diff --git a/src/routes/setting/RemoveAccountConfirmModal.tsx b/src/routes/setting/RemoveAccountConfirmModal.tsx index 4f116468..b50c6bce 100644 --- a/src/routes/setting/RemoveAccountConfirmModal.tsx +++ b/src/routes/setting/RemoveAccountConfirmModal.tsx @@ -1,4 +1,4 @@ -import { FC } from "react"; +import { FC, useEffect } from "react"; import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; @@ -6,6 +6,7 @@ import { useLazyDeleteCurrentAccountQuery } from "@/app/services/auth"; import Modal from "@/components/Modal"; import Button from "@/components/styled/Button"; import StyledModal from "@/components/styled/Modal"; +import useLogout from "@/hooks/useLogout"; interface Props { closeModal: () => void; @@ -13,7 +14,8 @@ interface Props { const RemoveConfirmModal: FC = ({ closeModal }) => { const { t } = useTranslation("member"); - const [removeCurrentAccount, { isLoading }] = useLazyDeleteCurrentAccountQuery(); + const [removeCurrentAccount, { isLoading, isSuccess }] = useLazyDeleteCurrentAccountQuery(); + const { clearLocalData } = useLogout(); const handleRemove = async () => { try { await removeCurrentAccount(); @@ -21,6 +23,12 @@ const RemoveConfirmModal: FC = ({ closeModal }) => { toast.error("Remove Account Failed!"); } }; + useEffect(() => { + if (isSuccess) { + clearLocalData(true); + } + }, [isSuccess]); + return (