Skip to content

Commit 029bc80

Browse files
committed
Add explicit loader functions for resource routes (was not needed in Remix, but is needed in R7)
See https://reactrouter.com/how-to/resource-routes#handling-different-request-methods
1 parent 2d675e8 commit 029bc80

16 files changed

+70
-14
lines changed

app/routes/cert.import.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Route } from "./+types/cert.import";
22
import { randomUUID } from "node:crypto";
3+
import { redirect } from "react-router";
34

45
import { requireAdmin } from "~/lib/auth.server";
56
import {
@@ -80,3 +81,8 @@ export async function action({ request }: Route.ActionArgs) {
8081

8182
return { certificate };
8283
}
84+
85+
export async function loader() {
86+
// @todo redirect to the correct program/batch overview?
87+
return redirect(`/org/program`);
88+
}

app/routes/org.program.$programId.batch.$batchId.certificates.$certId.refresh.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { redirect } from "react-router";
12
import type { Route } from "./+types/org.program.$programId.batch.$batchId.certificates.$certId.refresh";
23

34
import { requireAdminWithProgram } from "~/lib/auth.server";
@@ -47,3 +48,7 @@ export async function action({ request, params }: Route.ActionArgs) {
4748

4849
return { certificate: certificateUpdate };
4950
}
51+
52+
export async function loader({ params }: Route.LoaderArgs) {
53+
return redirect(`/org/program/${params.programId}/batch/${params.batchId}/certificates`);
54+
}

app/routes/org.program.$programId.batch.$batchId.import.tsx

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,20 +81,6 @@ export async function loader({ request, params }: Route.LoaderArgs) {
8181
return { batch, templates };
8282
}
8383

84-
/* type LoaderReturnType = {
85-
batch: Batch;
86-
templates: Template[];
87-
};
88-
89-
type Match = {
90-
id: string;
91-
pathname: string;
92-
data: LoaderReturnType;
93-
params: Record<string, string>;
94-
};
95-
96-
*/
97-
9884
function StatusIndicator({ status, error }: { status: string; error: string }) {
9985
switch (status) {
10086
case "todo":

app/routes/org.program.$programId.social.delete.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@ export async function action({ request, params }: Route.ActionArgs) {
3838

3939
return redirect(`/org/program/${params.programId}/social`);
4040
}
41+
42+
export async function loader({ params }: Route.LoaderArgs) {
43+
return redirect(`/org/program/${params.programId}/social`);
44+
}

app/routes/org.program.$programId.social.update.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Route } from "./+types/org.program.$programId.social.update";
2+
import { redirect } from "react-router";
23

34
import { requireAdminWithProgram } from "~/lib/auth.server";
45
import { prisma, throwErrorResponse } from "~/lib/prisma.server";
@@ -70,3 +71,7 @@ export async function action({ request, params }: Route.ActionArgs) {
7071

7172
return { social };
7273
}
74+
75+
export async function loader({ params }: Route.LoaderArgs) {
76+
return redirect(`/org/program/${params.programId}/social`);
77+
}

app/routes/org.program.$programId.social.upload.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Route } from "./+types/org.program.$programId.social.upload";
22
import type { SocialPreview } from "@prisma/client";
3+
import { redirect } from "react-router";
34
import { type FileUpload, parseFormData } from "@mjackson/form-data-parser";
45
import { requireAdminWithProgram } from "~/lib/auth.server";
56
import { prisma, throwErrorResponse } from "~/lib/prisma.server";
@@ -100,3 +101,8 @@ export async function action({ request, params }: Route.ActionArgs) {
100101

101102
return { social };
102103
}
104+
105+
export async function loader({ params }: Route.LoaderArgs) {
106+
return redirect(`/org/program/${params.programId}/social`);
107+
}
108+

app/routes/org.program.$programId.templates.$templateId.delete.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,9 @@ export async function action({ request, params }: Route.ActionArgs) {
1111
return redirect(`/org/program/${params.programId}/templates`);
1212
}
1313

14+
export async function loader({ params }: Route.LoaderArgs) {
15+
return redirect(`/org/program/${params.programId}/templates/${params.templateId}/edit-meta`);
16+
}
17+
18+
1419
// @todo improve user-facing error handling with an ErrorBoundary and a Dialog

app/routes/org.program.$programId.user.$userId.remove.tsx renamed to app/routes/org.program.$programId.user.$userId.remove.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,8 @@ export async function action({ request, params }: Route.ActionArgs) {
5454

5555
return redirect(`/org/program/${params.programId}/user/`);
5656
}
57+
58+
59+
export async function loader({ params }: Route.LoaderArgs) {
60+
return redirect(`/org/program/${params.programId}/user`);
61+
}

app/routes/org.program.$programId.user.invite.$inviteId.delete.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ export async function action({ request, params }: Route.ActionArgs) {
3737
return redirect(`/org/program/${params.programId}/user/`);
3838
}
3939

40+
export async function loader({ params }: Route.LoaderArgs) {
41+
return redirect(`/org/program/${params.programId}/user`);
42+
}
43+
44+
4045
export function ErrorBoundary() {
4146
const error = useRouteError();
4247
const navigate = useNavigate();

app/routes/org.typeface.$typefaceId.delete.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ export async function action({ request, params }: Route.ActionArgs) {
2222
return redirect("/org/typeface");
2323
}
2424

25+
export async function loader() {
26+
return redirect(`/org/typeface`);
27+
}
28+
2529
export function ErrorBoundary() {
2630
const error = useRouteError();
2731
const navigate = useNavigate();

0 commit comments

Comments
 (0)