From 0ea4dd4e3a51adae81b6d7fd46b3fea29e5bd58a Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 5 Nov 2025 21:01:24 +0800 Subject: [PATCH] fix: init message api err --- .../src/components/MessageInitializer.tsx | 21 ------------------- src/renderer/src/components/TopView/index.tsx | 9 +++++--- src/renderer/src/context/AntdProvider.tsx | 13 ++---------- 3 files changed, 8 insertions(+), 35 deletions(-) delete mode 100644 src/renderer/src/components/MessageInitializer.tsx diff --git a/src/renderer/src/components/MessageInitializer.tsx b/src/renderer/src/components/MessageInitializer.tsx deleted file mode 100644 index 664c4413b9..0000000000 --- a/src/renderer/src/components/MessageInitializer.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { App } from 'antd' -import { useEffect } from 'react' - -import { initMessageApi } from './TopView/toast' - -/** - * MessageInitializer component - * This component initializes the message API from App.useApp() hook - * It should be rendered inside the AntdProvider (which wraps App component) - * so that the message API can inherit the correct theme (dark/light mode) - */ -export const MessageInitializer = () => { - const { message } = App.useApp() - - useEffect(() => { - // Initialize the message API for use in toast.ts - initMessageApi(message) - }, [message]) - - return null -} diff --git a/src/renderer/src/components/TopView/index.tsx b/src/renderer/src/components/TopView/index.tsx index cd1dff1436..a55794a261 100644 --- a/src/renderer/src/components/TopView/index.tsx +++ b/src/renderer/src/components/TopView/index.tsx @@ -2,12 +2,12 @@ import TopViewMinappContainer from '@renderer/components/MinApp/TopViewMinappContainer' import { useAppInit } from '@renderer/hooks/useAppInit' import { useShortcuts } from '@renderer/hooks/useShortcuts' -import { Modal } from 'antd' +import { message, Modal } from 'antd' import type { PropsWithChildren } from 'react' import React, { useCallback, useEffect, useRef, useState } from 'react' import { Box } from '../Layout' -import { getToastUtilities } from './toast' +import { getToastUtilities, initMessageApi } from './toast' let onPop = () => {} let onShow = ({ element, id }: { element: React.FC | React.ReactNode; id: string }) => { @@ -36,6 +36,7 @@ const TopViewContainer: React.FC = ({ children }) => { elementsRef.current = elements const [modal, modalContextHolder] = Modal.useModal() + const [messageApi, messageContextHolder] = message.useMessage() const { shortcuts } = useShortcuts() const enableQuitFullScreen = shortcuts.find((item) => item.key === 'exit_fullscreen')?.enabled @@ -43,8 +44,9 @@ const TopViewContainer: React.FC = ({ children }) => { useEffect(() => { window.modal = modal + initMessageApi(messageApi) window.toast = getToastUtilities() - }, [modal]) + }, [messageApi, modal]) onPop = () => { const views = [...elementsRef.current] @@ -97,6 +99,7 @@ const TopViewContainer: React.FC = ({ children }) => { return ( <> {children} + {messageContextHolder} {modalContextHolder} {elements.map(({ element: Element, id }) => ( diff --git a/src/renderer/src/context/AntdProvider.tsx b/src/renderer/src/context/AntdProvider.tsx index 7981505987..685b3b0fbd 100644 --- a/src/renderer/src/context/AntdProvider.tsx +++ b/src/renderer/src/context/AntdProvider.tsx @@ -1,7 +1,6 @@ -import { MessageInitializer } from '@renderer/components/MessageInitializer' import { useSettings } from '@renderer/hooks/useSettings' import type { LanguageVarious } from '@renderer/types' -import { App, ConfigProvider, theme } from 'antd' +import { ConfigProvider, theme } from 'antd' import deDE from 'antd/locale/de_DE' import elGR from 'antd/locale/el_GR' import enUS from 'antd/locale/en_US' @@ -115,15 +114,7 @@ const AntdProvider: FC = ({ children }) => { motionDurationMid: '100ms' } }}> - - - {children} - + {children} ) }