feat: add jump to button for joined groups in discover

replace with error toast
pull/105/head
moonrailgun 2 years ago
parent 480a1e3442
commit 2128c019c4

@ -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<DiscoverServerCardProps> = 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<DiscoverServerCardProps> = 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 (
<Root>
@ -142,6 +161,17 @@ export const DiscoverServerCard: React.FC<DiscoverServerCardProps> = React.memo(
groupBasicInfo.memberCount
)}
</div>
{isJoined ? (
<Button
size="small"
type="primary"
loading={joinLoading}
onClick={handleJumpTo}
>
{Translate.joined}
</Button>
) : (
<Button
size="small"
type="primary"
@ -150,6 +180,7 @@ export const DiscoverServerCard: React.FC<DiscoverServerCardProps> = React.memo(
>
{Translate.join}
</Button>
)}
</div>
</Root>
);

@ -17,4 +17,8 @@ export const Translate = {
'zh-CN': '加入',
'en-US': 'Join',
}),
joined: localTrans({
'zh-CN': '已加入',
'en-US': 'Joined',
}),
};

Loading…
Cancel
Save