diff --git a/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/DiscoverPanel/DiscoverServerCard.tsx b/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/DiscoverPanel/DiscoverServerCard.tsx index eb043966..73a1c6e5 100644 --- a/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/DiscoverPanel/DiscoverServerCard.tsx +++ b/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/DiscoverPanel/DiscoverServerCard.tsx @@ -1,10 +1,13 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import styled from 'styled-components'; import { postRequest, useAsync, useAsyncRequest, getTextColorHex, + getGlobalState, + useNavigate, + useEvent, } from '@capital/common'; import { Avatar, Skeleton, Button } from '@capital/component'; import { Translate } from '../translate'; @@ -85,6 +88,7 @@ interface DiscoverServerCardProps { export const DiscoverServerCard: React.FC = React.memo( (props) => { + const navigate = useNavigate(); const { value: groupBasicInfo } = useAsync(async () => { const { data } = await postRequest('/group/getGroupBasicInfo', { groupId: props.groupId, @@ -99,6 +103,21 @@ export const DiscoverServerCard: React.FC = React.memo( }); }, [props.groupId]); + const handleJumpTo = useEvent(() => { + navigate(`/main/group/${props.groupId}`); + }); + + const isJoined = useMemo(() => { + try { + return Object.keys(getGlobalState().group.groups).includes( + props.groupId + ); + } catch (err) { + console.error(err); + return false; + } + }, [props.groupId]); + if (!groupBasicInfo) { return ( @@ -142,14 +161,26 @@ export const DiscoverServerCard: React.FC = React.memo( groupBasicInfo.memberCount )} - + + {isJoined ? ( + + ) : ( + + )} ); diff --git a/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/translate.ts b/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/translate.ts index f9c941e0..062c1d89 100644 --- a/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/translate.ts +++ b/server/plugins/com.msgbyte.discover/web/plugins/com.msgbyte.discover/src/translate.ts @@ -17,4 +17,8 @@ export const Translate = { 'zh-CN': '加入', 'en-US': 'Join', }), + joined: localTrans({ + 'zh-CN': '已加入', + 'en-US': 'Joined', + }), };