Skip to content

Commit a05b48d

Browse files
authored
spin out documentTypes into enum (#1181)
* spin out documentTypes into enum This changes a bunch of hard-coded strings to be an enum to remove chance of misspellings, and allow for auto tab completion with LSP or similar. * fix duplicate imports and capitalization of variable
1 parent c1fdd44 commit a05b48d

3 files changed

Lines changed: 29 additions & 21 deletions

File tree

src/routes/(app)/documents/+page.server.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,27 @@ import { z } from "zod";
1515
import type { Actions, PageServerLoad } from "./$types";
1616
import * as m from "$paraglide/messages";
1717
import { getYearOrThrowSvelteError } from "$lib/utils/url.server";
18+
import { DocumentTypes as dt } from "./types";
1819

1920
const validDocumentTypes = [
20-
"board-meeting",
21-
"guild-meeting",
22-
"SRD-meeting",
23-
"other",
21+
dt.boardMeeting,
22+
dt.guildMeeting,
23+
dt.SRDMeeting,
24+
dt.other,
2425
] as const;
2526
export type DocumentType = (typeof validDocumentTypes)[number];
2627

27-
const prefixByType: Record<DocumentType, string> = {
28-
"board-meeting": "S",
29-
"guild-meeting": "",
30-
"SRD-meeting": "Möte ",
31-
other: "",
28+
const prefixByType: Record<dt, string> = {
29+
[dt.boardMeeting]: "S",
30+
[dt.guildMeeting]: "",
31+
[dt.SRDMeeting]: "Möte ",
32+
[dt.other]: "",
3233
};
3334
export const load: PageServerLoad = async ({ locals, url }) => {
3435
const { user } = locals;
3536
const year = getYearOrThrowSvelteError(url);
3637

37-
const type = url.searchParams.get("type") || "board-meeting";
38+
const type = url.searchParams.get("type") || dt.boardMeeting;
3839
if (!isValidDocumentType(type)) {
3940
throw error(400, m.documents_errors_invalidType());
4041
}
@@ -60,7 +61,7 @@ export const load: PageServerLoad = async ({ locals, url }) => {
6061
let filteredFiles = files;
6162
const oldFormatSRDFiles: FileData[] = [];
6263
switch (type) {
63-
case "guild-meeting":
64+
case dt.guildMeeting:
6465
filteredFiles = files.filter((file) => {
6566
const fileParts = file.id.split("/");
6667
const meeting =
@@ -69,7 +70,7 @@ export const load: PageServerLoad = async ({ locals, url }) => {
6970
});
7071
break;
7172

72-
case "SRD-meeting":
73+
case dt.SRDMeeting:
7374
SRDfiles.forEach((file) => {
7475
const fileParts = file.id.split("/");
7576
const meetingName =
@@ -84,7 +85,7 @@ export const load: PageServerLoad = async ({ locals, url }) => {
8485
});
8586
break;
8687

87-
case "other":
88+
case dt.other:
8889
filteredFiles = files.filter((file) => {
8990
const fileParts = file.id.split("/");
9091
const meeting =

src/routes/(app)/documents/+page.svelte

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,40 @@
1111
import type { PageData } from "./$types";
1212
import SetPageTitle from "$lib/components/nav/SetPageTitle.svelte";
1313
export let data: PageData;
14+
import { DocumentTypes as dt } from "./types";
1415
1516
let isEditing = false;
1617
1718
const currentYear = new Date().getFullYear();
18-
let type: DocumentType = "board-meeting";
19+
let type: dt = dt.boardMeeting;
1920
const typeOptions: Array<{ name: string; value: DocumentType }> = [
2021
{
2122
name: m.documents_guildMeetings(),
22-
value: "guild-meeting",
23+
value: dt.guildMeeting,
2324
},
2425
{
2526
name: m.documents_boardMeetings(),
26-
value: "board-meeting",
27+
value: dt.boardMeeting,
2728
},
2829
{
2930
name: m.documents_srdMeetings(),
30-
value: "SRD-meeting",
31+
value: dt.SRDMeeting,
3132
},
3233
{
3334
name: m.documents_other(),
34-
value: "other",
35+
value: dt.other,
3536
},
3637
];
3738
$: meetings = Object.keys(data.meetings).sort((a, b) => {
38-
if (type === "board-meeting") {
39+
if (type === dt.boardMeeting) {
3940
return b.localeCompare(a, "sv");
40-
} else if (type === "SRD-meeting" && a.startsWith("SRD")) {
41+
} else if (type === dt.SRDMeeting && a.startsWith("SRD")) {
4142
return (
4243
// Current format
4344
Number.parseInt(b.split("SRD")[1] ?? "0") -
4445
Number.parseInt(a.split("SRD")[1] ?? "0")
4546
);
46-
} else if (type === "SRD-meeting") {
47+
} else if (type === dt.SRDMeeting) {
4748
return ("T" + a).localeCompare(b, "sv"); // Sort other SRD meetings below current format
4849
} else {
4950
return a.localeCompare(b, "sv");
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export enum DocumentTypes {
2+
boardMeeting = "board-meeting",
3+
guildMeeting = "guild-meeting",
4+
SRDMeeting = "SRD-meeting",
5+
other = "other",
6+
}

0 commit comments

Comments
 (0)