dev #4
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user