import { getSession } from "~/sessions"; import { getMe } from "~/utils"; import { Link, useLoaderData } from "@remix-run/react"; import { prisma } from "~/db.server"; import { Form } from "@remix-run/react"; import { json } from "@remix-run/node"; const countys = [ "Ahvenanmaa", "Etelä-Karjala", "Etelä-Pohjanmaa", "Kainuu", "Kanta-Häme", "Keski-Pohjanmaa", "Keski-Suomi", "Kymenlaakso", "Lappi", "Pirkanmaa", "Pohjanmaa", "Pohjois-Karjala", "Pohjois-Pohjanmaa", "Pohjois-Savo", "Päijat-Häme", "Satakunta", "Uusimaa", "Varsinais-Suomi", ]; export async function action({ request }) { const formData = await request.formData(); const county = formData.get("county"); if (!county || typeof county !== "string" || !countys.includes(county)) throw new Error("bad county"); const session = await getSession(request.headers.get("Cookie")); if (!session.has("userId")) throw new Error("OAuth token not found in cookie"); const me = await getMe(session.get("userId")); const countySubmit = prisma.county.upsert({ where: { name: county, }, update: { players: { create: { playerName: me.username, rank: parseInt(me.statistics.global_rank), }, }, }, create: { name: county, players: { create: { playerName: me.username, rank: parseInt(me.statistics.global_rank), }, }, }, }); return countySubmit ? json(countySubmit) : new Error("Something went wrong with creating the user"); } export async function loader({ request }) { const countyData = await prisma.county.findMany({ include: { players: { orderBy: { rank: "asc", }, }, }, }); const session = await getSession(request.headers.get("Cookie")); if (!session.has("userId")) return json({ countyData }); const me = await getMe(session.get("userId")); const selfData = await prisma.player.findUnique({ where: { playerName: me.username, }, }); return json({ me, countyData, selfData }); } export default function Index() { const data = useLoaderData(); return (

Maakunta ranking

{data.me ? (

{data.me.username}

Logout
) : ( Authenticate with OSU account )}
{data?.me?.username ? ( data.selfData ? (

Kiitos, että osallistuit maakunta rankingiin!

) : (
) ) : ( "" )} {data.countyData.length > 0 ? ( ) : (

No data yet

)}
); }