sendou.ink/app/features/calendar/actions/calendar.tsx
2025-12-29 19:21:11 +02:00

36 lines
1012 B
TypeScript

import { type ActionFunctionArgs, redirect } from "react-router";
import { requireUserId } from "~/features/auth/core/user.server";
import { calendarFiltersSearchParamsSchema } from "~/features/calendar/calendar-schemas";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import {
parseRequestPayload,
parseSafeSearchParams,
} from "~/utils/remix.server";
import { calendarPage } from "~/utils/urls";
import { dayMonthYear } from "~/utils/zod";
export const action = async ({ request }: ActionFunctionArgs) => {
const user = await requireUserId(request);
const data = await parseRequestPayload({
request,
schema: calendarFiltersSearchParamsSchema,
});
await UserRepository.updatePreferences(user.id, {
defaultCalendarFilters: data,
});
const parsedSearchParams = parseSafeSearchParams({
request,
schema: dayMonthYear,
});
return redirect(
calendarPage({
dayMonthYear: parsedSearchParams.success
? parsedSearchParams.data
: undefined,
}),
);
};