diff --git a/client/src/components/ChatBox/index.tsx b/client/src/components/ChatBox/index.tsx index 02a49897b..f8c53eb55 100644 --- a/client/src/components/ChatBox/index.tsx +++ b/client/src/components/ChatBox/index.tsx @@ -11,7 +11,13 @@ import React, { import { throttle } from 'lodash'; import { ChatItemType, ChatSiteItemType, ExportChatType } from '@/types/chat'; import { useToast } from '@/hooks/useToast'; -import { useCopyData, voiceBroadcast, hasVoiceApi, getErrText } from '@/utils/tools'; +import { + useCopyData, + voiceBroadcast, + cancelBroadcast, + hasVoiceApi, + getErrText +} from '@/utils/tools'; import { Box, Card, Flex, Input, Textarea, Button, useTheme } from '@chakra-ui/react'; import { useUserStore } from '@/store/user'; import { feConfigs } from '@/store/static'; @@ -387,7 +393,6 @@ const ChatBox = ( zIndex: 1, w: '100%' }; - console.log(ChatBoxRef.current?.clientWidth); const messageCardMaxW = ['calc(100% - 48px)', 'calc(100% - 65px)']; @@ -404,9 +409,22 @@ const ChatBox = ( useEffect(() => { return () => { controller.current?.abort(); + // close voice + cancelBroadcast(); }; }, [router.query]); + useEffect(() => { + const listen = () => { + cancelBroadcast(); + }; + window.addEventListener('beforeunload', listen); + + return () => { + window.removeEventListener('beforeunload', listen); + }; + }, []); + return ( (); const { initIsPc } = useGlobalStore(); - if (isPc !== undefined) { - initIsPc(isPc); - } + // if (isPc !== undefined) { + // initIsPc(isPc); + // } useEffect(() => { (async () => { diff --git a/client/src/pages/app/detail/index.tsx b/client/src/pages/app/detail/index.tsx index fa7ad3a65..80bd69e13 100644 --- a/client/src/pages/app/detail/index.tsx +++ b/client/src/pages/app/detail/index.tsx @@ -64,16 +64,17 @@ const AppDetail = ({ currentTab }: { currentTab: `${TabEnum}` }) => { ); useEffect(() => { - window.onbeforeunload = + const listen = process.env.NODE_ENV === 'production' - ? (e) => { + ? (e: any) => { e.preventDefault(); e.returnValue = '内容已修改,确认离开页面吗?'; } - : null; + : () => {}; + window.addEventListener('beforeunload', listen); return () => { - window.onbeforeunload = null; + window.removeEventListener('beforeunload', listen); clearAppModules(); }; }, []); diff --git a/client/src/pages/login/components/ForgetPasswordForm.tsx b/client/src/pages/login/components/ForgetPasswordForm.tsx index fd3557672..f371b1ff2 100644 --- a/client/src/pages/login/components/ForgetPasswordForm.tsx +++ b/client/src/pages/login/components/ForgetPasswordForm.tsx @@ -6,6 +6,7 @@ import { postFindPassword } from '@/api/user'; import { useSendCode } from '@/hooks/useSendCode'; import type { ResLogin } from '@/api/response/user'; import { useToast } from '@/hooks/useToast'; +import { feConfigs } from '@/store/static'; interface Props { setPageType: Dispatch<`${PageTypeEnum}`>; diff --git a/client/src/pages/login/components/RegisterForm.tsx b/client/src/pages/login/components/RegisterForm.tsx index 92bc7503e..6e2bea73e 100644 --- a/client/src/pages/login/components/RegisterForm.tsx +++ b/client/src/pages/login/components/RegisterForm.tsx @@ -9,6 +9,7 @@ import { useToast } from '@/hooks/useToast'; import { useRouter } from 'next/router'; import { postCreateApp } from '@/api/app'; import { appTemplates } from '@/constants/flow/ModuleTemplate'; +import { feConfigs } from '@/store/static'; interface Props { loginSuccess: (e: ResLogin) => void; diff --git a/client/src/utils/tools.ts b/client/src/utils/tools.ts index 3b1765fdc..c135dbb2d 100644 --- a/client/src/utils/tools.ts +++ b/client/src/utils/tools.ts @@ -114,6 +114,9 @@ export const voiceBroadcast = ({ text }: { text: string }) => { cancel: () => window.speechSynthesis?.cancel() }; }; +export const cancelBroadcast = () => { + window.speechSynthesis?.cancel(); +}; export const getErrText = (err: any, def = '') => { const msg: string = typeof err === 'string' ? err : err?.message || def || '';