From ff130add8a56d3acd00e3995f1a21cea093d6f4a Mon Sep 17 00:00:00 2001 From: "Kalle (Sendou)" <38327916+Sendouc@users.noreply.github.com> Date: Sun, 3 Jan 2021 15:50:03 +0200 Subject: [PATCH] fa page renders something --- components/common/Markdown.tsx | 22 +++++++++++- hooks/freeagents.ts | 14 ++++++++ pages/api/freeagents/index.ts | 9 +++++ pages/freeagents.tsx | 53 +++++++++++++++++++++++++--- prisma/scripts/seed/freeAgentPost.ts | 21 +++++++++++ prisma/scripts/seed/index.ts | 10 ++++++ prisma/scripts/seed/user.ts | 6 ++-- 7 files changed, 126 insertions(+), 9 deletions(-) create mode 100644 hooks/freeagents.ts create mode 100644 prisma/scripts/seed/freeAgentPost.ts diff --git a/components/common/Markdown.tsx b/components/common/Markdown.tsx index 508529648..8df51c3a3 100644 --- a/components/common/Markdown.tsx +++ b/components/common/Markdown.tsx @@ -26,9 +26,14 @@ import MyLink from "./MyLink"; interface MarkdownProps { value: string; allowAll?: boolean; + smallHeaders?: boolean; } -const Markdown: React.FC = ({ value, allowAll = false }) => { +const Markdown: React.FC = ({ + value, + allowAll = false, + smallHeaders = false, +}) => { const { themeColorHex: themeColor } = useMyTheme(); //https://github.com/mustaphaturhan/chakra-ui-markdown-renderer/blob/master/src/index.js @@ -141,6 +146,21 @@ const Markdown: React.FC = ({ value, allowAll = false }) => { heading: (props: any) => { const { children } = props; + if (smallHeaders) { + return ( + + {children} + + ); + } + if (props.level === 1) { return ( ("/api/freeagents"); + + return { + data: data ?? [], + isLoading: !data, + usersPost: data?.find((post) => post.user.discordId === user?.discordId), + }; +} diff --git a/pages/api/freeagents/index.ts b/pages/api/freeagents/index.ts index 171ebc463..45debde8f 100644 --- a/pages/api/freeagents/index.ts +++ b/pages/api/freeagents/index.ts @@ -2,9 +2,13 @@ import { getMySession } from "lib/getMySession"; import { freeAgentPostSchema } from "lib/validators/fapost"; import { NextApiRequest, NextApiResponse } from "next"; import prisma from "prisma/client"; +import { getAllFreeAgentPosts } from "prisma/queries/getAllFreeAgentPosts"; const freeAgentsHandler = async (req: NextApiRequest, res: NextApiResponse) => { switch (req.method) { + case "GET": + await getHandler(req, res); + break; case "PUT": await putHandler(req, res); break; @@ -45,4 +49,9 @@ async function deleteHandler(req: NextApiRequest, res: NextApiResponse) { res.status(200).end(); } +async function getHandler(_: NextApiRequest, res: NextApiResponse) { + const freeAgents = await getAllFreeAgentPosts(); + res.status(200).json(freeAgents); +} + export default freeAgentsHandler; diff --git a/pages/freeagents.tsx b/pages/freeagents.tsx index 4a38bc4a2..826aa94c7 100644 --- a/pages/freeagents.tsx +++ b/pages/freeagents.tsx @@ -1,20 +1,63 @@ -import { Button } from "@chakra-ui/react"; +import { Box, Button, Divider } from "@chakra-ui/react"; import { t, Trans } from "@lingui/macro"; import Breadcrumbs from "components/common/Breadcrumbs"; +import Markdown from "components/common/Markdown"; +import MyContainer from "components/common/MyContainer"; +import SubText from "components/common/SubText"; +import UserAvatar from "components/common/UserAvatar"; import FAModal from "components/freeagents/FAModal"; +import { useFreeAgents } from "hooks/freeagents"; +import { Unpacked } from "lib/types"; +import { GetAllFreeAgentPostsData } from "prisma/queries/getAllFreeAgentPosts"; import { useState } from "react"; -interface Props {} - -const FreeAgentsPage: React.FC = ({}) => { +const FreeAgentsPage = () => { + const { data, usersPost } = useFreeAgents(); const [modalIsOpen, setModalIsOpen] = useState(false); + return ( - <> + {modalIsOpen && setModalIsOpen(false)} />} + {[...data, ...data, ...data].map((post) => ( + + ))} + + ); +}; + +const FreeAgentCard = ({ + post, +}: { + post: Unpacked; +}) => { + const [showBio, setShowBio] = useState(true); + return ( + <> + + + + Free agent post + + + {post.user.profile?.bio && ( + + )} + {showBio && post.user.profile?.bio && ( + <> + + Bio + + + + )} + + ); }; diff --git a/prisma/scripts/seed/freeAgentPost.ts b/prisma/scripts/seed/freeAgentPost.ts new file mode 100644 index 000000000..941c8d2f2 --- /dev/null +++ b/prisma/scripts/seed/freeAgentPost.ts @@ -0,0 +1,21 @@ +import { Prisma } from "@prisma/client"; + +const getFreeAgentPosts = ( + testUserId: number +): Prisma.FreeAgentPostCreateArgs["data"][] => { + return [ + { + canVC: "YES", + content: + "# Availability \n Really good!\n\n*lorem ipsum* **lorem ipsum**", + user: { + connect: { + id: testUserId, + }, + }, + playstyles: ["FRONTLINE", "MIDLINE"], + }, + ]; +}; + +export default getFreeAgentPosts; diff --git a/prisma/scripts/seed/index.ts b/prisma/scripts/seed/index.ts index 700736240..885586b1e 100644 --- a/prisma/scripts/seed/index.ts +++ b/prisma/scripts/seed/index.ts @@ -2,6 +2,7 @@ import fs from "fs"; import path from "path"; import prisma from "../../client"; import getBuilds from "./build"; +import getFreeAgentPosts from "./freeAgentPost"; import getUsers from "./user"; const main = async () => { @@ -33,6 +34,14 @@ const main = async () => { ); console.log("Builds created"); + + await Promise.all( + getFreeAgentPosts(testUser.id).map((data) => + prisma.freeAgentPost.create({ data }) + ) + ); + + console.log("FA posts created"); }; function throwIfNotLocalhost() { @@ -59,6 +68,7 @@ function throwIfNotLocalhost() { } async function deleteExistingRecords() { + await prisma.freeAgentPost.deleteMany({}); await prisma.salmonRunRecord.deleteMany({}); await prisma.salmonRunRotation.deleteMany({}); await prisma.build.deleteMany({}); diff --git a/prisma/scripts/seed/user.ts b/prisma/scripts/seed/user.ts index 45b8141c6..0735ea980 100644 --- a/prisma/scripts/seed/user.ts +++ b/prisma/scripts/seed/user.ts @@ -3,9 +3,9 @@ import { Prisma } from "@prisma/client"; const getUsers = (): Prisma.UserCreateArgs["data"][] => { const result = [ { - username: "N-ZAP", - discriminator: "6227", - discordId: "455039198672453645", + username: "Sendou", + discriminator: "4059", + discordId: "79237403620945920", discordAvatar: "f809176af93132c3db5f0a5019e96339", profile: { create: {