get rid of circular references in viewer.eventTypes (#1198)

This commit is contained in:
Alex Johansson 2021-11-24 11:42:55 +01:00 committed by GitHub
parent 58f55f84e2
commit deb97fdab0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 21 deletions

View file

@ -331,14 +331,17 @@ const EventTypesPage = () => {
CTA={ CTA={
query.data && query.data &&
query.data.eventTypeGroups.length !== 0 && ( query.data.eventTypeGroups.length !== 0 && (
<CreateNewEventButton canAddEvents={query.data.canAddEvents} profiles={query.data.profiles} /> <CreateNewEventButton
canAddEvents={query.data.viewer.canAddEvents}
profiles={query.data.profiles}
/>
) )
}> }>
<QueryCell <QueryCell
query={query} query={query}
success={({ data }) => ( success={({ data }) => (
<> <>
{data.user.plan === "FREE" && !data.canAddEvents && ( {data.viewer.plan === "FREE" && !data.viewer.canAddEvents && (
<Alert <Alert
severity="warning" severity="warning"
title={<>{t("plan_upgrade")}</>} title={<>{t("plan_upgrade")}</>}
@ -353,26 +356,25 @@ const EventTypesPage = () => {
className="mb-4" className="mb-4"
/> />
)} )}
{data.eventTypeGroups && {data.eventTypeGroups.map((group) => (
data.eventTypeGroups.map((input) => ( <Fragment key={group.profile.slug}>
<Fragment key={input.profile.slug}> {/* hide list heading when there is only one (current user) */}
{/* hide list heading when there is only one (current user) */} {(data.eventTypeGroups.length !== 1 || group.teamId) && (
{(data.eventTypeGroups.length !== 1 || input.teamId) && ( <EventTypeListHeading
<EventTypeListHeading profile={group.profile}
profile={input.profile} membershipCount={group.metadata.membershipCount}
membershipCount={input.metadata.membershipCount}
/>
)}
<EventTypeList
types={input.eventTypes}
profile={input.profile}
readOnly={input.metadata.readOnly}
/> />
</Fragment> )}
))} <EventTypeList
types={group.eventTypes}
profile={group.profile}
readOnly={group.metadata.readOnly}
/>
</Fragment>
))}
{data.eventTypeGroups.length === 0 && ( {data.eventTypeGroups.length === 0 && (
<CreateFirstEventTypeView profiles={data.profiles} canAddEvents={data.canAddEvents} /> <CreateFirstEventTypeView profiles={data.profiles} canAddEvents={data.viewer.canAddEvents} />
)} )}
</> </>
)} )}

View file

@ -239,8 +239,10 @@ const loggedInViewerRouter = createProtectedRouter()
const canAddEvents = user.plan !== "FREE" || eventTypeGroups[0].eventTypes.length < 1; const canAddEvents = user.plan !== "FREE" || eventTypeGroups[0].eventTypes.length < 1;
return { return {
canAddEvents, viewer: {
user, canAddEvents,
plan: user.plan,
},
// don't display event teams without event types, // don't display event teams without event types,
eventTypeGroups: eventTypeGroups.filter((groupBy) => !!groupBy.eventTypes?.length), eventTypeGroups: eventTypeGroups.filter((groupBy) => !!groupBy.eventTypes?.length),
// so we can show a dropdown when the user has teams // so we can show a dropdown when the user has teams