Fix types and temporarily hiding pagination

This commit is contained in:
Alan 2023-09-11 00:10:42 -07:00
parent 198c7174e4
commit 49944c223f
3 changed files with 24 additions and 8 deletions

View File

@ -896,6 +896,9 @@ const Main = ({ filters }: { filters: ReturnType<typeof getTeamsFiltersFromQuery
const { data: teams } = trpc.viewer.teams.list.useQuery(undefined, { const { data: teams } = trpc.viewer.teams.list.useQuery(undefined, {
// Teams don't change that frequently // Teams don't change that frequently
refetchOnWindowFocus: false, refetchOnWindowFocus: false,
trpc: {
context: { skipBatch: true },
},
}); });
// After teams are fetched we then load event types for each team // After teams are fetched we then load event types for each team
@ -952,8 +955,10 @@ const Main = ({ filters }: { filters: ReturnType<typeof getTeamsFiltersFromQuery
if (!teamEventTypes || teamEventTypes.length === 0 || !firstElementTeamEventTypes.team) { if (!teamEventTypes || teamEventTypes.length === 0 || !firstElementTeamEventTypes.team) {
return null; return null;
} }
const teamDataMatchWithEventType = teams && teams.length > 0 && teams[index]; const teamDataMatchWithEventType = teams && teams.length > 0 ? teams[index] : null;
const membershipCount = teamDataMatchWithEventType?.membershipCount || 0; const membershipCount = teamDataMatchWithEventType
? teamDataMatchWithEventType?.membershipCount
: 0;
return ( return (
<> <>
@ -970,7 +975,9 @@ const Main = ({ filters }: { filters: ReturnType<typeof getTeamsFiltersFromQuery
<EventTypeList <EventTypeList
data={teamEventTypes} data={teamEventTypes}
key={index} key={index}
readonly={"MEMBER" === teamDataMatchWithEventType.role} readonly={
teamDataMatchWithEventType ? "MEMBER" === teamDataMatchWithEventType.role : false
}
/> />
) : ( ) : (
<EmptyEventTypeList <EmptyEventTypeList

View File

@ -38,7 +38,7 @@ export const paginateHandler = async ({ ctx, input }: EventTypesPaginateProps) =
teamConditional = { teamId: { in: teamIds } }; teamConditional = { teamId: { in: teamIds } };
} }
const skip = (page - 1) * pageSize; // const skip = (page - 1) * pageSize;
const result = await prisma.eventType.findMany({ const result = await prisma.eventType.findMany({
where: { where: {
@ -83,8 +83,9 @@ export const paginateHandler = async ({ ctx, input }: EventTypesPaginateProps) =
}, },
}, },
}, },
skip, // Temporarily disabled until we can figure out how to do this properly
take: pageSize, // skip,
// take: pageSize,
}); });
return result; return result;

View File

@ -35,6 +35,15 @@ export const listHandler = async ({ ctx }: ListOptions) => {
const isOrgAdmin = !!(await isOrganisationAdmin(ctx.user.id, ctx.user.organization.id)); // Org id exists here as we're inside a conditional TS complaining for some reason const isOrgAdmin = !!(await isOrganisationAdmin(ctx.user.id, ctx.user.organization.id)); // Org id exists here as we're inside a conditional TS complaining for some reason
// This can be optimized by using a custom view between membership and team and teamMemberCount
const membershipCount = await prisma.teamMemberCount.findMany({
where: {
id: {
in: membershipsWithoutParent.map((m) => m.teamId),
},
},
});
return membershipsWithoutParent.map(({ team: { inviteTokens, ..._team }, ...membership }) => ({ return membershipsWithoutParent.map(({ team: { inviteTokens, ..._team }, ...membership }) => ({
role: membership.role, role: membership.role,
accepted: membership.accepted, accepted: membership.accepted,
@ -42,6 +51,7 @@ export const listHandler = async ({ ctx }: ListOptions) => {
..._team, ..._team,
/** To prevent breaking we only return non-email attached token here, if we have one */ /** To prevent breaking we only return non-email attached token here, if we have one */
inviteToken: inviteTokens.find((token) => token.identifier === "invite-link-for-teamId-" + _team.id), inviteToken: inviteTokens.find((token) => token.identifier === "invite-link-for-teamId-" + _team.id),
membershipCount: membershipCount.find((m) => m.id === _team.id)?.count || 0,
})); }));
} }
@ -68,8 +78,6 @@ export const listHandler = async ({ ctx }: ListOptions) => {
}, },
}); });
console.log({ membershipCount });
return memberships return memberships
.filter((mmship) => { .filter((mmship) => {
const metadata = teamMetadataSchema.parse(mmship.team.metadata); const metadata = teamMetadataSchema.parse(mmship.team.metadata);