import { FC } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import useSWR from "swr"; // components import { MembersSettingsLoader } from "@/components/ui"; import { WorkspaceInvitationsListItem, WorkspaceMembersListItem } from "@/components/workspace"; // hooks import { useMember } from "@/hooks/store"; export const WorkspaceMembersList: FC<{ searchQuery: string }> = observer((props) => { const { searchQuery } = props; // router const { workspaceSlug } = useParams(); // store hooks const { workspace: { fetchWorkspaceMemberInvitations, workspaceMemberIds, getSearchedWorkspaceMemberIds, workspaceMemberInvitationIds, getSearchedWorkspaceInvitationIds, }, } = useMember(); // fetching workspace invitations useSWR( workspaceSlug ? `WORKSPACE_INVITATIONS_${workspaceSlug.toString()}` : null, workspaceSlug ? () => fetchWorkspaceMemberInvitations(workspaceSlug.toString()) : null ); if (!workspaceMemberIds && !workspaceMemberInvitationIds) return ; // derived values const searchedMemberIds = getSearchedWorkspaceMemberIds(searchQuery); const searchedInvitationsIds = getSearchedWorkspaceInvitationIds(searchQuery); return (
{searchedInvitationsIds && searchedInvitationsIds.length > 0 ? searchedInvitationsIds?.map((invitationId) => ( )) : null} {searchedMemberIds && searchedMemberIds.length > 0 ? searchedMemberIds?.map((memberId) => ) : null} {searchedInvitationsIds?.length === 0 && searchedMemberIds?.length === 0 && (

No matching members

)}
); });