From e4af76cfd4248a55cef8bafbc2bf22bd7222000b Mon Sep 17 00:00:00 2001 From: itzaname Date: Thu, 25 Dec 2025 20:22:24 -0500 Subject: [PATCH] Fix api endpoint --- web/src/app/admin-submit/page.tsx | 2 +- web/src/app/hooks/useReviewData.ts | 8 ++++---- web/src/app/hooks/useThumbnails.ts | 4 ++-- web/src/app/hooks/useUser.ts | 2 +- web/src/app/mapfixes/[mapfixId]/page.tsx | 4 ++-- web/src/app/mapfixes/page.tsx | 2 +- web/src/app/maps/[mapId]/fix/page.tsx | 4 ++-- web/src/app/maps/[mapId]/page.tsx | 8 ++++---- web/src/app/maps/page.tsx | 2 +- web/src/app/operations/[operationId]/page.tsx | 2 +- web/src/app/page.tsx | 6 +++--- web/src/app/submissions/[submissionId]/page.tsx | 4 ++-- web/src/app/submissions/page.tsx | 2 +- web/src/app/submit/page.tsx | 2 +- web/vite.config.ts | 4 ++-- 15 files changed, 28 insertions(+), 28 deletions(-) diff --git a/web/src/app/admin-submit/page.tsx b/web/src/app/admin-submit/page.tsx index c13dec9..67d36ab 100644 --- a/web/src/app/admin-submit/page.tsx +++ b/web/src/app/admin-submit/page.tsx @@ -41,7 +41,7 @@ export default function SubmissionInfoPage() { try { // Send the POST request - const response = await fetch("/api/submissions-admin", { + const response = await fetch("/v1/submissions-admin", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), diff --git a/web/src/app/hooks/useReviewData.ts b/web/src/app/hooks/useReviewData.ts index 1e1895b..41ad71e 100644 --- a/web/src/app/hooks/useReviewData.ts +++ b/web/src/app/hooks/useReviewData.ts @@ -40,11 +40,11 @@ export function useReviewData({itemType, itemId}: UseReviewDataProps): UseReview try { const [reviewData, auditData] = await Promise.all([ - fetch(`/api/${itemType}/${itemId}`).then(res => { + fetch(`/v1/${itemType}/${itemId}`).then(res => { if (!res.ok) throw new Error(`Failed to fetch ${itemType.slice(0, -1)}: ${res.status}`); return res.json(); }), - fetch(`/api/${itemType}/${itemId}/audit-events?Page=1&Limit=100`).then(res => { + fetch(`/v1/${itemType}/${itemId}/audit-events?Page=1&Limit=100`).then(res => { if (!res.ok) throw new Error(`Failed to fetch audit events: ${res.status}`); return res.json(); }) @@ -58,7 +58,7 @@ export function useReviewData({itemType, itemId}: UseReviewDataProps): UseReview } try { - const rolesResponse = await fetch("/api/session/roles"); + const rolesResponse = await fetch("/v1/session/roles"); if (rolesResponse.ok) { const rolesData = await rolesResponse.json(); setRoles(rolesData.Roles); @@ -72,7 +72,7 @@ export function useReviewData({itemType, itemId}: UseReviewDataProps): UseReview } try { - const userResponse = await fetch("/api/session/user"); + const userResponse = await fetch("/v1/session/user"); if (userResponse.ok) { const userData = await userResponse.json(); setUser(userData.UserID); diff --git a/web/src/app/hooks/useThumbnails.ts b/web/src/app/hooks/useThumbnails.ts index a3f3314..a367d69 100644 --- a/web/src/app/hooks/useThumbnails.ts +++ b/web/src/app/hooks/useThumbnails.ts @@ -16,7 +16,7 @@ class ThumbnailBatcher { async fetchAssetBatch(ids: number[], size: ThumbnailSize): Promise> { try { - const response = await fetch('/api/thumbnails/assets', { + const response = await fetch('/v1/thumbnails/assets', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ assetIds: ids, size }), @@ -43,7 +43,7 @@ class ThumbnailBatcher { async fetchUserBatch(ids: number[], size: ThumbnailSize): Promise> { try { - const response = await fetch('/api/thumbnails/users', { + const response = await fetch('/v1/thumbnails/users', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ userIds: ids, size }), diff --git a/web/src/app/hooks/useUser.ts b/web/src/app/hooks/useUser.ts index 405e0ea..5733d18 100644 --- a/web/src/app/hooks/useUser.ts +++ b/web/src/app/hooks/useUser.ts @@ -3,7 +3,7 @@ import { UserInfo } from '@/app/ts/User'; async function fetchUser(): Promise { try { - const response = await fetch('/api/session/user'); + const response = await fetch('/v1/session/user'); if (!response.ok) { return null; diff --git a/web/src/app/mapfixes/[mapfixId]/page.tsx b/web/src/app/mapfixes/[mapfixId]/page.tsx index 945fb19..b295be8 100644 --- a/web/src/app/mapfixes/[mapfixId]/page.tsx +++ b/web/src/app/mapfixes/[mapfixId]/page.tsx @@ -88,7 +88,7 @@ export default function MapfixDetailsPage() { // Handle review button actions async function handleReviewAction(action: string, mapfixId: number) { try { - const response = await fetch(`/api/mapfixes/${mapfixId}/status/${action}`, { + const response = await fetch(`/v1/mapfixes/${mapfixId}/status/${action}`, { method: "POST", headers: { "Content-type": "application/json", @@ -127,7 +127,7 @@ export default function MapfixDetailsPage() { } try { - const response = await fetch(`/api/mapfixes/${mapfixId}/comment`, { + const response = await fetch(`/v1/mapfixes/${mapfixId}/comment`, { method: 'POST', headers: { 'Content-Type': 'text/plain', diff --git a/web/src/app/mapfixes/page.tsx b/web/src/app/mapfixes/page.tsx index 3d1db45..9a51281 100644 --- a/web/src/app/mapfixes/page.tsx +++ b/web/src/app/mapfixes/page.tsx @@ -30,7 +30,7 @@ export default function MapfixInfoPage() { setIsLoading(true); try { const res = await fetch( - `/api/mapfixes?Page=${currentPage}&Limit=${cardsPerPage}&Sort=${ListSortConstants.ListSortDateDescending}`, + `/v1/mapfixes?Page=${currentPage}&Limit=${cardsPerPage}&Sort=${ListSortConstants.ListSortDateDescending}`, { signal: controller.signal } ); diff --git a/web/src/app/maps/[mapId]/fix/page.tsx b/web/src/app/maps/[mapId]/fix/page.tsx index d423303..3d85f6a 100644 --- a/web/src/app/maps/[mapId]/fix/page.tsx +++ b/web/src/app/maps/[mapId]/fix/page.tsx @@ -46,7 +46,7 @@ export default function MapfixInfoPage() { const fetchMapDetails = async () => { try { setIsLoading(true); - const response = await fetch(`/api/maps/${mapId}`); + const response = await fetch(`/v1/maps/${mapId}`); if (!response.ok) { throw new Error(`Failed to fetch map details: ${response.statusText}`); @@ -104,7 +104,7 @@ export default function MapfixInfoPage() { }; try { - const response = await fetch("/api/mapfixes", { + const response = await fetch("/v1/mapfixes", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), diff --git a/web/src/app/maps/[mapId]/page.tsx b/web/src/app/maps/[mapId]/page.tsx index d94e03d..d39c483 100644 --- a/web/src/app/maps/[mapId]/page.tsx +++ b/web/src/app/maps/[mapId]/page.tsx @@ -59,7 +59,7 @@ export default function MapDetails() { try { setLoading(true); setError(null); - const res = await fetch(`/api/maps/${mapId}`); + const res = await fetch(`/v1/maps/${mapId}`); if (!res.ok) { throw new Error(`Failed to fetch map: ${res.status}`); } @@ -78,7 +78,7 @@ export default function MapDetails() { useEffect(() => { async function getRoles() { try { - const rolesResponse = await fetch("/api/session/roles"); + const rolesResponse = await fetch("/v1/session/roles"); if (rolesResponse.ok) { const rolesData = await rolesResponse.json(); setRoles(rolesData.Roles); @@ -104,7 +104,7 @@ export default function MapDetails() { let allMapfixes: MapfixInfo[] = []; let total = 0; do { - const res = await fetch(`/api/mapfixes?Page=${page}&Limit=${limit}&TargetAssetID=${targetAssetId}`); + const res = await fetch(`/v1/mapfixes?Page=${page}&Limit=${limit}&TargetAssetID=${targetAssetId}`); if (!res.ok) break; const data = await res.json(); if (page === 1) total = data.Total; @@ -304,7 +304,7 @@ export default function MapDetails() { diff --git a/web/src/app/maps/page.tsx b/web/src/app/maps/page.tsx index b47f1e6..44ff5cf 100644 --- a/web/src/app/maps/page.tsx +++ b/web/src/app/maps/page.tsx @@ -147,7 +147,7 @@ export default function MapsPage() { let hasMore = true; while (hasMore) { - const res = await fetch(`/api/maps?Page=${page}&Limit=${requestPageSize}`); + const res = await fetch(`/v1/maps?Page=${page}&Limit=${requestPageSize}`); const data: Map[] = await res.json(); allMaps = [...allMaps, ...data]; hasMore = data.length === requestPageSize; diff --git a/web/src/app/operations/[operationId]/page.tsx b/web/src/app/operations/[operationId]/page.tsx index 346142a..d19d570 100644 --- a/web/src/app/operations/[operationId]/page.tsx +++ b/web/src/app/operations/[operationId]/page.tsx @@ -112,7 +112,7 @@ export default function OperationStatusPage() { const fetchOperation = async () => { try { - const response = await fetch(`/api/operations/${operationId}`); + const response = await fetch(`/v1/operations/${operationId}`); if (!response.ok) throw new Error("Failed to fetch operation"); diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index 9208ff3..a5a9acc 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -43,7 +43,7 @@ export default function Home() { async function fetchMapFixes(): Promise { setIsLoadingMapfixes(true); try { - const res = await fetch(`/api/mapfixes?Page=1&Limit=${itemsPerSection}&Sort=${ListSortConstants.ListSortDateDescending}`, { + const res = await fetch(`/v1/mapfixes?Page=1&Limit=${itemsPerSection}&Sort=${ListSortConstants.ListSortDateDescending}`, { signal: mapfixController.signal, }); if (res.ok) { @@ -60,7 +60,7 @@ export default function Home() { async function fetchSubmissions(): Promise { setIsLoadingSubmissions(true); try { - const res = await fetch(`/api/submissions?Page=1&Limit=${itemsPerSection}&Sort=${ListSortConstants.ListSortDateDescending}`, { + const res = await fetch(`/v1/submissions?Page=1&Limit=${itemsPerSection}&Sort=${ListSortConstants.ListSortDateDescending}`, { signal: submissionsController.signal, }); if (res.ok) { @@ -77,7 +77,7 @@ export default function Home() { async function fetchStats(): Promise { setIsLoadingStats(true); try { - const res = await fetch(`/api/stats`, { + const res = await fetch(`/v1/stats`, { signal: statsController.signal, }); if (res.ok) { diff --git a/web/src/app/submissions/[submissionId]/page.tsx b/web/src/app/submissions/[submissionId]/page.tsx index aee9d6c..84c6c76 100644 --- a/web/src/app/submissions/[submissionId]/page.tsx +++ b/web/src/app/submissions/[submissionId]/page.tsx @@ -85,7 +85,7 @@ export default function SubmissionDetailsPage() { // Handle review button actions async function handleReviewAction(action: string, submissionId: number) { try { - const response = await fetch(`/api/submissions/${submissionId}/status/${action}`, { + const response = await fetch(`/v1/submissions/${submissionId}/status/${action}`, { method: "POST", headers: { "Content-type": "application/json", @@ -124,7 +124,7 @@ export default function SubmissionDetailsPage() { } try { - const response = await fetch(`/api/submissions/${submissionId}/comment`, { + const response = await fetch(`/v1/submissions/${submissionId}/comment`, { method: 'POST', headers: { 'Content-Type': 'text/plain', diff --git a/web/src/app/submissions/page.tsx b/web/src/app/submissions/page.tsx index 877dd3f..dcb756f 100644 --- a/web/src/app/submissions/page.tsx +++ b/web/src/app/submissions/page.tsx @@ -30,7 +30,7 @@ export default function SubmissionInfoPage() { setIsLoading(true); try { const res = await fetch( - `/api/submissions?Page=${currentPage}&Limit=${cardsPerPage}&Sort=${ListSortConstants.ListSortDateDescending}`, + `/v1/submissions?Page=${currentPage}&Limit=${cardsPerPage}&Sort=${ListSortConstants.ListSortDateDescending}`, { signal: controller.signal } ); diff --git a/web/src/app/submit/page.tsx b/web/src/app/submit/page.tsx index 6f2608c..35df582 100644 --- a/web/src/app/submit/page.tsx +++ b/web/src/app/submit/page.tsx @@ -60,7 +60,7 @@ export default function SubmitPage() { }; try { - const response = await fetch("/api/submissions", { + const response = await fetch("/v1/submissions", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), diff --git a/web/vite.config.ts b/web/vite.config.ts index 37c7e98..07fc010 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -12,10 +12,10 @@ export default defineConfig({ server: { port: 3000, proxy: { - '/api': { + '/v1': { target: process.env.VITE_API_HOST || 'http://localhost:8080', changeOrigin: true, - rewrite: (path) => path.replace(/^\/api/, ''), + rewrite: (path) => path.replace(/^\/v1/, ''), }, }, },