simplify some type checks by fixing graphql schema

This commit is contained in:
2024-05-14 21:36:05 +02:00
parent ba93e7e783
commit fa3ebdb91c
7 changed files with 69 additions and 222 deletions

View File

@ -1,6 +1,6 @@
"use client";
import { useQueryState, parseAsStringLiteral } from "nuqs";
import { useQueryState, parseAsStringLiteral, parseAsString } from "nuqs";
import { EventItem } from "./EventItem";
import { EventFilter } from "./EventFilter";
import {
@ -32,22 +32,12 @@ export const EventContainer = ({
);
const filterableCategories = eventCategories.filter((x) => x.showInFilters);
const filterableCategorySlugs: string[] = filterableCategories
.filter((x) => "slug" in x && typeof x.slug === "string")
.map((x) => x.slug);
const [category, setCategory] = useQueryState(
"category",
parseAsStringLiteral(filterableCategorySlugs).withDefault(null)
);
const [category, setCategory] = useQueryState("category", parseAsString);
const filteredEvents = events.filter(
(x) =>
!category ||
x.categories
?.filter((x) => x !== null)
.map((eventCategory: EventCategory) => eventCategory.slug)
.includes(category)
x.categories.map((eventCategory) => eventCategory.slug).includes(category)
);
return (

View File

@ -1,4 +1,4 @@
import { EventCategoryFragment } from "@/lib/event";
import { EventCategory } from "@/lib/event";
import styles from "./eventFilter.module.scss";
@ -7,9 +7,9 @@ export const EventFilter = ({
setCategory,
activeCategory,
}: {
eventCategories: EventCategoryFragment[];
setCategory: (slug: string) => void;
activeCategory?: string;
eventCategories: EventCategory[];
setCategory: (slug: string | null) => void;
activeCategory: string | null;
}) => {
return (
<div className={styles.eventFilter}>

View File

@ -16,11 +16,7 @@ export const EventHeader = ({ event }: { event: EventFragment }) => {
<div>Medlemspris: {event.priceMember}</div>
<div>
Kategorier:{" "}
{event.categories &&
event.categories
.filter((x) => x != null)
.map((x: EventCategoryFragment) => x.name)
.join(", ")}
{event.categories && event.categories.map((x) => x.name).join(", ")}
</div>
</div>
</div>