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

alkem-io / client-web / #9048

11 Oct 2024 01:42PM UTC coverage: 5.943%. First build
#9048

Pull #7022

travis-ci

Pull Request #7022: [v0.74.0] Roles API + Unauthenticated Explore page

202 of 10241 branches covered (1.97%)

Branch coverage included in aggregate %.

63 of 431 new or added lines in 60 files covered. (14.62%)

1468 of 17861 relevant lines covered (8.22%)

0.19 hits per line

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

0.0
/src/domain/innovationHub/InnovationHubHomePage/InnovationHubHomePage.tsx
1
import { useCallback } from 'react';
2
import PageContent from '@/core/ui/content/PageContent';
3
import PageContentBlock from '@/core/ui/content/PageContentBlock';
4
import { InnovationHubAttrs } from './InnovationHubAttrs';
5
import WrapperMarkdown from '@/core/ui/markdown/WrapperMarkdown';
6
import { BlockTitle } from '@/core/ui/typography';
7
import Logo from '@/main/ui/logo/logoSmall.svg?react';
8
import { gutters } from '@/core/ui/grid/utils';
9
import InnovationHubBanner from './InnovationHubBanner';
10
import PageContentBlockHeader from '@/core/ui/content/PageContentBlockHeader';
11
import { useTranslation } from 'react-i18next';
12
import ScrollableCardsLayoutContainer from '@/core/ui/card/cardsLayout/ScrollableCardsLayoutContainer';
13
import { useDashboardSpacesQuery } from '@/core/apollo/generated/apollo-hooks';
14
import SpaceCard from '@/domain/space/components/cards/SpaceCard';
15
import RouterLink from '@/core/ui/link/RouterLink';
16
import Gutters from '@/core/ui/grid/Gutters';
17
import { ROUTE_HOME } from '@/domain/platform/routes/constants';
18
import { useConfig } from '@/domain/platform/config/useConfig';
19
import TopLevelLayout from '@/main/ui/layout/TopLevelLayout';
20
import TopLevelPageBreadcrumbs from '@/main/topLevelPages/topLevelPageBreadcrumbs/TopLevelPageBreadcrumbs';
21
import { useCurrentUserContext } from '@/domain/community/userCurrent/useCurrentUserContext';
22
import { collectSubspaceAvatars } from '@/domain/space/components/cards/utils/useSubspaceCardData';
23
import useDirectMessageDialog from '@/domain/communication/messaging/DirectMessaging/useDirectMessageDialog';
24
import { LeadType } from '@/domain/space/components/cards/components/SpaceLeads';
25

26
const InnovationHubHomePage = ({ innovationHub }: { innovationHub: InnovationHubAttrs }) => {
27
  const { t } = useTranslation();
NEW
28
  const { isAuthenticated } = useCurrentUserContext();
×
NEW
29

×
30
  const { data: spacesData } = useDashboardSpacesQuery();
31

×
32
  const allSpaces = spacesData?.spaces;
×
33

34
  const { locations } = useConfig();
×
35

36
  const mainHomeUrl = `//${locations?.domain}${ROUTE_HOME}`;
×
37

38
  const { sendMessage, directMessageDialog } = useDirectMessageDialog({
×
39
    dialogTitle: t('send-message-dialog.direct-message-title'),
40
  });
×
41

42
  const handleContactLead = useCallback(
×
43
    (leadType: LeadType, leadId: string, leadDisplayName: string, leadAvatarUri?: string) => {
44
      sendMessage(leadType, {
45
        id: leadId,
46
        displayName: leadDisplayName,
47
        avatarUri: leadAvatarUri,
48
      });
×
49
    },
50
    [sendMessage]
51
  );
52

53
  return (
54
    <TopLevelLayout
55
      header={
×
56
        <InnovationHubBanner
57
          banner={innovationHub.banner}
58
          displayName={innovationHub.displayName}
59
          tagline={innovationHub.tagline ?? ''}
60
        />
61
      }
×
62
      breadcrumbs={<TopLevelPageBreadcrumbs />}
63
    >
64
      <PageContent>
65
        <PageContentBlock>
66
          <WrapperMarkdown>{innovationHub.description ?? ''}</WrapperMarkdown>
67
        </PageContentBlock>
×
68
        <PageContentBlock>
69
          <PageContentBlockHeader title={t('innovationHub.selectedSpaces', { space: innovationHub.displayName })} />
70
          <ScrollableCardsLayoutContainer orientation="horizontal" cards>
71
            {allSpaces?.map(space => (
72
              <SpaceCard
73
                key={space.id}
74
                banner={space.about.profile.cardBanner}
75
                displayName={space.about.profile.displayName!}
76
                tagline={space.about.profile.tagline ?? ''}
77
                tags={space.about.profile.tagset?.tags ?? []}
78
                spaceUri={space.about.profile.url}
79
                spaceVisibility={space.visibility}
80
                spaceId={space.id}
81
                level={space.level}
82
                avatarUris={collectSubspaceAvatars(space)}
83
                leadUsers={space.about.membership?.leadUsers}
84
                leadOrganizations={space.about.membership?.leadOrganizations}
85
                showLeads={isAuthenticated}
86
                isPrivate={!space.about.isContentPublic}
87
                onContactLead={handleContactLead}
88
              />
89
            ))}
90
          </ScrollableCardsLayoutContainer>
91
        </PageContentBlock>
92
        <PageContentBlock disablePadding>
93
          <Gutters
94
            row
95
            flexGrow={1}
96
            minHeight={gutters(4)}
97
            component={RouterLink}
98
            to={mainHomeUrl}
99
            justifyContent="center"
100
            alignItems="center"
101
            flexWrap="wrap"
102
            rowGap={0}
103
          >
104
            <Logo />
105
            <BlockTitle paddingY={gutters()}>{t('innovationHub.goToMainPage')}</BlockTitle>
106
          </Gutters>
107
        </PageContentBlock>
108
      </PageContent>
109
      {directMessageDialog}
110
    </TopLevelLayout>
111
  );
112
};
113

114
export default InnovationHubHomePage;
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