• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alkem-io / client-web / #9644

16 Dec 2024 11:55AM UTC coverage: 5.9%. First build
#9644

Pull #7295

travis-ci

Pull Request #7295: VC Store / Invite VC flow - feature branch

194 of 10821 branches covered (1.79%)

Branch coverage included in aggregate %.

12 of 193 new or added lines in 15 files covered. (6.22%)

1549 of 18723 relevant lines covered (8.27%)

0.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/domain/community/community/VirtualContributorsBlock/VirtualContributorsBlock.tsx
1
import { useCallback, useState } from 'react';
2
import { useTranslation } from 'react-i18next';
3
import PageContentBlock from '@/core/ui/content/PageContentBlock';
4
import PageContentBlockHeader from '@/core/ui/content/PageContentBlockHeader';
5
import SeeMore from '@/core/ui/content/SeeMore';
6
import Loading from '@/core/ui/loading/Loading';
7
import BadgeCardView from '@/core/ui/list/BadgeCardView';
8
import Avatar from '@/core/ui/avatar/Avatar';
9
import { BlockSectionTitle } from '@/core/ui/typography';
10
import RouterLink from '@/core/ui/link/RouterLink';
11
import VirtualContributorsDialog, { VirtualContributorProps } from './VirtualContributorsDialog';
12
import VCIcon from '@/domain/community/virtualContributor/VirtualContributorsIcons';
13
import Gutters from '@/core/ui/grid/Gutters';
14
import { DashboardAddButton } from '@/domain/shared/components/DashboardSections/DashboardAddButton';
15
import InviteContributorsDialog from '@/domain/community/inviteContributors/InviteContributorsDialog';
16
import { RoleSetContributorType } from '@/core/apollo/generated/graphql-schema';
17

18
export const VIRTUAL_CONTRIBUTORS_LIMIT = 3;
×
19

20
type VirtualContributorsBlockProps = {
21
  virtualContributors: VirtualContributorProps[];
22
  loading: boolean;
23
  showInviteOption?: boolean;
24
};
25

NEW
26
const VirtualContributorsBlock = ({
×
27
  virtualContributors,
28
  loading,
29
  showInviteOption = false,
×
30
}: VirtualContributorsBlockProps) => {
31
  const { t } = useTranslation();
×
32

33
  const [dialogOpen, setDialogOpen] = useState(false);
×
34
  const openDialog = () => setDialogOpen(true);
×
35
  const closeDialog = () => setDialogOpen(false);
×
36

NEW
37
  const [inviteDialogOpen, setInviteDialogOpen] = useState(false);
×
NEW
38
  const closeInviteDialog = () => setInviteDialogOpen(false);
×
39

40
  const visibleVCs = virtualContributors.slice(0, VIRTUAL_CONTRIBUTORS_LIMIT);
×
41

NEW
42
  const onInvite = useCallback(() => {
×
NEW
43
    setInviteDialogOpen(true);
×
44
  }, [setInviteDialogOpen]);
45

46
  return (
×
47
    <PageContentBlock>
48
      <PageContentBlockHeader title={t('pages.contributors.virtualContributors.title')} icon={<VCIcon />} />
49
      {loading && <Loading />}
×
50
      <Gutters disablePadding>
51
        {showInviteOption && (
×
52
          <DashboardAddButton
53
            sx={{ padding: 0, textAlign: 'left' }}
54
            translationKey="community.invitations.inviteContributorsDialog.vcs.inviteBtn"
55
            onClick={onInvite}
56
          />
57
        )}
58
        {visibleVCs?.map(vc => (
NEW
59
          <BadgeCardView
×
60
            key={vc.profile.displayName}
61
            variant="rounded"
62
            visual={
63
              <Avatar
64
                src={vc.profile.avatar?.uri}
65
                alt={
66
                  vc.profile.displayName ? t('common.avatar-of', { user: vc.profile.displayName }) : t('common.avatar')
67
                }
68
              />
69
            }
70
            component={RouterLink}
71
            to={vc.profile.url}
72
          >
×
73
            <BlockSectionTitle>{vc.profile.displayName}</BlockSectionTitle>
74
          </BadgeCardView>
75
        ))}
76
      </Gutters>
77
      {virtualContributors.length > VIRTUAL_CONTRIBUTORS_LIMIT && (
78
        <SeeMore label="buttons.see-more" onClick={openDialog} />
79
      )}
80
      <VirtualContributorsDialog open={dialogOpen} onClose={closeDialog} virtualContributors={virtualContributors} />
81
      {inviteDialogOpen && (
82
        <InviteContributorsDialog
83
          open={inviteDialogOpen}
84
          onClose={closeInviteDialog}
85
          type={RoleSetContributorType.Virtual}
86
        />
87
      )}
88
    </PageContentBlock>
89
  );
90
};
91

92
export default VirtualContributorsBlock;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc