diff --git a/web/src/components/WeChatModal.tsx b/web/src/components/WeChatModal.tsx new file mode 100644 index 0000000..b49a75f --- /dev/null +++ b/web/src/components/WeChatModal.tsx @@ -0,0 +1,26 @@ +import { Modal, theme } from 'antd'; +import { useI18n } from '../i18n'; + +export interface WeChatModalProps { + open: boolean; + onClose: () => void; +} + +export default function WeChatModal({ open, onClose }: WeChatModalProps) { + const { token } = theme.useToken(); + const { t } = useI18n(); + + return ( + + + + + {t('Scan to join WeChat group')} + + + {t('If QR expires, add drizzle2001 to join')} + + + + ); +} diff --git a/web/src/layout/SideNav.tsx b/web/src/layout/SideNav.tsx index 5789083..8750f39 100644 --- a/web/src/layout/SideNav.tsx +++ b/web/src/layout/SideNav.tsx @@ -18,6 +18,7 @@ import ReactMarkdown from 'react-markdown'; import { useTheme } from '../contexts/ThemeContext'; import { useI18n } from '../i18n'; import { useAppWindows } from '../contexts/AppWindowsContext'; +import WeChatModal from '../components/WeChatModal'; const { Sider } = Layout; export interface SideNavProps { @@ -260,23 +261,7 @@ const SideNav = memo(function SideNav({ collapsed, activeKey, onChange, onToggle - setIsModalOpen(false)} - title={t('Join Community')} - footer={null} - width={320} - > - - - - {t('Scan to join WeChat group')} - - - {t('If QR expires, add drizzle2001 to join')} - - - + setIsModalOpen(false)} /> setIsVersionModalOpen(false)} diff --git a/web/src/pages/LoginPage.tsx b/web/src/pages/LoginPage.tsx index 8eee02a..ba7f19b 100644 --- a/web/src/pages/LoginPage.tsx +++ b/web/src/pages/LoginPage.tsx @@ -6,6 +6,7 @@ import { useSystemStatus } from '../contexts/SystemContext'; import { useNavigate } from 'react-router'; import { useI18n } from '../i18n'; import LanguageSwitcher from '../components/LanguageSwitcher'; +import WeChatModal from '../components/WeChatModal'; const { Title, Text } = Typography; @@ -16,6 +17,7 @@ export default function LoginPage() { const [password, setPassword] = useState(''); const [err, setErr] = useState(''); const [loading, setLoading] = useState(false); + const [wechatModalOpen, setWechatModalOpen] = useState(false); const navigate = useNavigate(); const { t } = useI18n(); @@ -167,11 +169,12 @@ export default function LoginPage() { {t('Join our community:')} } href="https://github.com/DrizzleTime/Foxel" target="_blank">GitHub } href="https://t.me/+thDsBfyqJxZkNTU1" target="_blank">Telegram - }>微信 + } onClick={() => setWechatModalOpen(true)}>微信 + setWechatModalOpen(false)} /> ); }