Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Omar López <zomars@me.com> Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import type { GetServerSidePropsContext } from "next";
|
|
|
|
import { getAppRegistry, getAppRegistryWithCredentials } from "@calcom/app-store/_appRegistry";
|
|
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
|
import type { UserAdminTeams } from "@calcom/lib/server/repository/user";
|
|
import { UserRepository } from "@calcom/lib/server/repository/user";
|
|
import type { AppCategories } from "@calcom/prisma/enums";
|
|
|
|
import { ssrInit } from "@server/lib/ssr";
|
|
|
|
export const getServerSideProps = async (context: GetServerSidePropsContext) => {
|
|
const { req } = context;
|
|
|
|
const ssr = await ssrInit(context);
|
|
|
|
const session = await getServerSession({ req });
|
|
|
|
let appStore, userAdminTeams: UserAdminTeams;
|
|
if (session?.user?.id) {
|
|
userAdminTeams = await UserRepository.getUserAdminTeams(session.user.id);
|
|
appStore = await getAppRegistryWithCredentials(session.user.id, userAdminTeams);
|
|
} else {
|
|
appStore = await getAppRegistry();
|
|
userAdminTeams = [];
|
|
}
|
|
|
|
const categoryQuery = appStore.map(({ categories }) => ({
|
|
categories: categories || [],
|
|
}));
|
|
const categories = categoryQuery.reduce((c, app) => {
|
|
for (const category of app.categories) {
|
|
c[category] = c[category] ? c[category] + 1 : 1;
|
|
}
|
|
return c;
|
|
}, {} as Record<string, number>);
|
|
|
|
return {
|
|
props: {
|
|
categories: Object.entries(categories)
|
|
.map(([name, count]): { name: AppCategories; count: number } => ({
|
|
name: name as AppCategories,
|
|
count,
|
|
}))
|
|
.sort(function (a, b) {
|
|
return b.count - a.count;
|
|
}),
|
|
appStore,
|
|
userAdminTeams,
|
|
trpcState: ssr.dehydrate(),
|
|
},
|
|
};
|
|
};
|