dev #4

Merged
codey merged 5 commits from dev into master 2026-02-07 21:23:12 -05:00
2 changed files with 27 additions and 26 deletions
Showing only changes of commit 8abb12d369 - Show all commits

View File

@@ -296,7 +296,7 @@ export default function ReqForm() {
/> />
{selectedItem && selectedTypeLabel && ( {selectedItem && selectedTypeLabel && (
<div className="text-xs font-medium uppercase text-neutral-500 dark:text-neutral-400 tracking-wide"> <div className="text-xs font-medium uppercase text-neutral-500 dark:text-neutral-400 tracking-wide">
Selected type: <span className="font-bold text-neutral-700 dark:text-neutral-200">{selectedTypeLabel}</span> Type: <span className="font-bold text-neutral-700 dark:text-neutral-200">{selectedTypeLabel}</span>
</div> </div>
)} )}
</div> </div>
@@ -334,18 +334,19 @@ export default function ReqForm() {
<div className="space-y-2"> <div className="space-y-2">
<label htmlFor="year" className="block text-sm font-medium text-neutral-700 dark:text-neutral-300"> <label htmlFor="year" className="block text-sm font-medium text-neutral-700 dark:text-neutral-300">
Year <span className="text-neutral-400">(optional)</span> Year
</label> </label>
<InputText <InputText
id="year" id="year"
value={year} value={year}
onChange={(e) => setYear(e.target.value)} placeholder=""
placeholder="e.g. 2023" readOnly
className="w-full border border-neutral-200 dark:border-neutral-700 rounded-xl px-4 py-3 bg-white dark:bg-neutral-900/50 focus:border-blue-500 dark:focus:border-blue-400 focus:ring-2 focus:ring-blue-500/20 transition-all outline-none" disabled
className="w-full border border-neutral-200 dark:border-neutral-700 rounded-xl px-4 py-3 bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 cursor-not-allowed transition-all outline-none"
/> />
</div> </div>
<div className="space-y-2"> {/* <div className="space-y-2">
<label htmlFor="requester" className="block text-sm font-medium text-neutral-700 dark:text-neutral-300"> <label htmlFor="requester" className="block text-sm font-medium text-neutral-700 dark:text-neutral-300">
Your Name <span className="text-neutral-400">(optional)</span> Your Name <span className="text-neutral-400">(optional)</span>
</label> </label>
@@ -356,7 +357,7 @@ export default function ReqForm() {
placeholder="Who is requesting this?" placeholder="Who is requesting this?"
className="w-full border border-neutral-200 dark:border-neutral-700 rounded-xl px-4 py-3 bg-white dark:bg-neutral-900/50 focus:border-blue-500 dark:focus:border-blue-400 focus:ring-2 focus:ring-blue-500/20 transition-all outline-none" className="w-full border border-neutral-200 dark:border-neutral-700 rounded-xl px-4 py-3 bg-white dark:bg-neutral-900/50 focus:border-blue-500 dark:focus:border-blue-400 focus:ring-2 focus:ring-blue-500/20 transition-all outline-none"
/> />
</div> </div> */}
<div className="pt-4"> <div className="pt-4">
<Button <Button

View File

@@ -15,7 +15,7 @@ interface SubmitRequestBody {
title?: string; title?: string;
year?: string; year?: string;
type?: string; type?: string;
requester?: string; // requester?: string;
[key: string]: unknown; [key: string]: unknown;
} }
@@ -127,7 +127,7 @@ export async function POST({ request }: APIContext): Promise<Response> {
try { try {
// Use pre-parsed body data // Use pre-parsed body data
const extendedRequest = request as ExtendedRequest; const extendedRequest = request as ExtendedRequest;
const { title, year, type, requester } = extendedRequest.bodyData || {}; const { title, year, type } = extendedRequest.bodyData || {};
// Input validation // Input validation
if (!title || typeof title !== 'string' || !title.trim()) { if (!title || typeof title !== 'string' || !title.trim()) {
@@ -174,16 +174,16 @@ export async function POST({ request }: APIContext): Promise<Response> {
return response; return response;
} }
if (requester && (typeof requester !== 'string' || requester.length > 500)) { // if (requester && (typeof requester !== 'string' || requester.length > 500)) {
const response = new Response(JSON.stringify({ error: 'Requester name must be 500 characters or less if provided' }), { // const response = new Response(JSON.stringify({ error: 'Requester name must be 500 characters or less if provided' }), {
status: 400, // status: 400,
headers: { 'Content-Type': 'application/json' }, // headers: { 'Content-Type': 'application/json' },
}); // });
if (!hadCookie) { // if (!hadCookie) {
response.headers.set('Set-Cookie', createNonceCookie(cookieId)); // response.headers.set('Set-Cookie', createNonceCookie(cookieId));
} // }
return response; // return response;
} // }
// Fetch synopsis and IMDb ID from TMDB // Fetch synopsis and IMDb ID from TMDB
let synopsis = ''; let synopsis = '';
@@ -258,13 +258,13 @@ export async function POST({ request }: APIContext): Promise<Response> {
}); });
} }
if (requester && requester.trim()) { // if (requester && requester.trim()) {
fields.push({ // fields.push({
name: "Requested by", // name: "Requested by",
value: requester.trim(), // value: requester.trim(),
inline: false // inline: false
}); // });
} // }
interface DiscordEmbed { interface DiscordEmbed {
title: string; title: string;