diff --git a/app/soapbox/features/groups/components/discover/group-grid-item.tsx b/app/soapbox/features/groups/components/discover/group-grid-item.tsx index 4faaa20c3..7cc41de74 100644 --- a/app/soapbox/features/groups/components/discover/group-grid-item.tsx +++ b/app/soapbox/features/groups/components/discover/group-grid-item.tsx @@ -5,6 +5,7 @@ import { Link } from 'react-router-dom'; import { Avatar, Button, HStack, Stack, Text } from 'soapbox/components/ui'; import GroupMemberCount from 'soapbox/features/group/components/group-member-count'; import GroupPrivacy from 'soapbox/features/group/components/group-privacy'; +import { useJoinGroup } from 'soapbox/queries/groups'; import { Group as GroupEntity } from 'soapbox/types/entities'; interface IGroup { @@ -15,6 +16,10 @@ interface IGroup { const GroupGridItem = forwardRef((props: IGroup, ref: React.ForwardedRef) => { const { group, width = 'auto' } = props; + const joinGroup = useJoinGroup(); + + const onJoinGroup = () => joinGroup.mutate(group); + return (
{group.locked ? diff --git a/app/soapbox/features/groups/components/discover/group-list-item.tsx b/app/soapbox/features/groups/components/discover/group-list-item.tsx index fbd67b99a..cd69ad86e 100644 --- a/app/soapbox/features/groups/components/discover/group-list-item.tsx +++ b/app/soapbox/features/groups/components/discover/group-list-item.tsx @@ -1,7 +1,9 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; +import { Link } from 'react-router-dom'; import { Avatar, Button, HStack, Icon, Stack, Text } from 'soapbox/components/ui'; +import { useJoinGroup } from 'soapbox/queries/groups'; import { Group as GroupEntity } from 'soapbox/types/entities'; import { shortNumberFormat } from 'soapbox/utils/numbers'; @@ -13,61 +15,66 @@ interface IGroup { const GroupListItem = (props: IGroup) => { const { group, withJoinAction = true } = props; + const joinGroup = useJoinGroup(); + + const onJoinGroup = () => joinGroup.mutate(group); + return ( - - - - - + + - - + - - {group.locked ? ( - - ) : ( - - )} - + + - {typeof group.members_count !== 'undefined' && ( - <> - - - {shortNumberFormat(group.members_count)} - {' '} - - - - )} - - - + + {group.locked ? ( + + ) : ( + + )} + + + {typeof group.members_count !== 'undefined' && ( + <> + + + {shortNumberFormat(group.members_count)} + {' '} + + + + )} + + + + {withJoinAction && ( -