()
| 44 | }; |
| 45 | |
| 46 | const GroupPage: FC = () => { |
| 47 | const { organization = "default", groupName } = useParams() as { |
| 48 | organization?: string; |
| 49 | groupName: string; |
| 50 | }; |
| 51 | const location = useLocation(); |
| 52 | const queryClient = useQueryClient(); |
| 53 | const navigate = useNavigate(); |
| 54 | const [searchParams, setSearchParams] = useSearchParams(); |
| 55 | const groupQuery = useQuery( |
| 56 | group(organization, groupName, { exclude_members: true }), |
| 57 | ); |
| 58 | const membersQuery = usePaginatedQuery( |
| 59 | groupMembers(organization, groupName, searchParams), |
| 60 | ); |
| 61 | const useFilterResult = useFilter({ |
| 62 | searchParams, |
| 63 | onSearchParamsChange: setSearchParams, |
| 64 | onUpdate: membersQuery.goToFirstPage, |
| 65 | }); |
| 66 | |
| 67 | const groupData = groupQuery.data; |
| 68 | const { data: permissions } = useQuery({ |
| 69 | ...groupPermissions(groupData?.id ?? ""), |
| 70 | enabled: Boolean(groupData), |
| 71 | }); |
| 72 | const deleteGroupMutation = useMutation( |
| 73 | deleteGroup(queryClient, organization), |
| 74 | ); |
| 75 | const [isDeletingGroup, setIsDeletingGroup] = useState(false); |
| 76 | const isLoading = |
| 77 | groupQuery.isLoading || |
| 78 | !groupData || |
| 79 | !permissions || |
| 80 | membersQuery.isLoading || |
| 81 | !membersQuery.data; |
| 82 | const canUpdateGroup = permissions ? permissions.canUpdateGroup : false; |
| 83 | |
| 84 | const title = ( |
| 85 | <title> |
| 86 | {pageTitle((groupData?.display_name || groupData?.name) ?? "Loading...")} |
| 87 | </title> |
| 88 | ); |
| 89 | |
| 90 | const error = groupQuery.error || membersQuery.error; |
| 91 | if (error) { |
| 92 | return <ErrorAlert error={error} />; |
| 93 | } |
| 94 | |
| 95 | if (isLoading) { |
| 96 | return ( |
| 97 | <> |
| 98 | {title} |
| 99 | <Loader /> |
| 100 | </> |
| 101 | ); |
| 102 | } |
| 103 |
nothing calls this directly
no test coverage detected