Add: tRPC + register on first time login

This commit is contained in:
Sonny
2023-02-15 00:02:55 +01:00
parent 1636f9152b
commit 7074901dcb
12 changed files with 4443 additions and 1807 deletions

View File

@@ -13,67 +13,64 @@ import { prisma } from "../utils/back";
import { config } from "../config";
interface HomeProps {
categories: Category[];
favorites: Link[];
categories: Category[];
favorites: Link[];
}
function Home({ categories, favorites }: HomeProps) {
const { data } = useSession({ required: true });
const [categoryActive, setCategoryActive] = useState<Category | null>(
categories?.[0]
);
const { data } = useSession({ required: true });
const [categoryActive, setCategoryActive] = useState<Category | null>(
categories?.[0]
);
const handleSelectCategory = (category: Category) =>
setCategoryActive(category);
const handleSelectCategory = (category: Category) =>
setCategoryActive(category);
return (
<>
<Head>
<title>{config.siteName}</title>
</Head>
<div className="App">
<Menu
categories={categories}
favorites={favorites}
handleSelectCategory={handleSelectCategory}
categoryActive={categoryActive}
session={data}
/>
<Links category={categoryActive} />
</div>
</>
);
return (
<>
<Head>
<title>{config.siteName}</title>
</Head>
<div className="App">
<Menu
categories={categories}
favorites={favorites}
handleSelectCategory={handleSelectCategory}
categoryActive={categoryActive}
session={data}
/>
<Links category={categoryActive} />
</div>
</>
);
}
export async function getServerSideProps() {
const categoriesDB = await prisma.category.findMany({
include: { links: true },
});
const categoriesDB = await prisma.category.findMany({
include: { links: true },
});
const favorites = [] as Link[];
const categories = categoriesDB.map((categoryDB) => {
const category = BuildCategory(categoryDB);
category.links.map((link) =>
link.favorite ? favorites.push(link) : null
);
return category;
});
if (categories.length === 0) {
return {
redirect: {
destination:
"/category/create?info=Veuillez créer une catégorie",
},
};
}
const favorites = [] as Link[];
const categories = categoriesDB.map((categoryDB) => {
const category = BuildCategory(categoryDB);
category.links.map((link) => (link.favorite ? favorites.push(link) : null));
return category;
});
if (categories.length === 0) {
return {
props: {
categories: JSON.parse(JSON.stringify(categories)),
favorites: JSON.parse(JSON.stringify(favorites)),
},
redirect: {
destination: "/category/create",
},
};
}
return {
props: {
categories: JSON.parse(JSON.stringify(categories)),
favorites: JSON.parse(JSON.stringify(favorites)),
},
};
}
Home.authRequired = true;