From 7c85b114b6beb0d65c56630708cb7597de79c480 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Thu, 13 Nov 2025 02:50:43 +0000 Subject: [PATCH] Add API_BASE and update track fetch cgen-6d22f09563674e92837ccc9fe4e9af9f --- client/components/admin/AdminMentorshipManager.tsx | 9 ++++++--- client/pages/BlogPost.tsx | 5 ++++- client/pages/Onboarding.tsx | 6 +++--- client/pages/ethos/ArtistProfile.tsx | 5 ++++- client/pages/ethos/LicensingDashboard.tsx | 9 ++++++--- client/pages/ethos/TrackLibrary.tsx | 5 ++++- client/pages/foundation/FoundationCurriculum.tsx | 5 ++++- 7 files changed, 31 insertions(+), 13 deletions(-) diff --git a/client/components/admin/AdminMentorshipManager.tsx b/client/components/admin/AdminMentorshipManager.tsx index 5479d513..1fd5c987 100644 --- a/client/components/admin/AdminMentorshipManager.tsx +++ b/client/components/admin/AdminMentorshipManager.tsx @@ -20,6 +20,9 @@ import { SelectValue, } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; + +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; import { aethexToast } from "@/lib/aethex-toast"; import { cn } from "@/lib/utils"; import { @@ -105,7 +108,7 @@ export default function AdminMentorshipManager() { params.set("available", String(availableOnly)); if (expertiseQueryParam) params.set("expertise", expertiseQueryParam); if (mentorQ.trim()) params.set("q", mentorQ.trim()); - const resp = await fetch(`/api/mentors?${params.toString()}`); + const resp = await fetch(`${API_BASE}/api/mentors?${params.toString()}`); if (!resp.ok) throw new Error(await resp.text().catch(() => "Failed")); const data = await resp.json(); setMentors(Array.isArray(data) ? data : []); @@ -127,7 +130,7 @@ export default function AdminMentorshipManager() { params.set("limit", "100"); if (statusFilter !== "all") params.set("status", statusFilter); const resp = await fetch( - `/api/mentorship/requests/all?${params.toString()}`, + `${API_BASE}/api/mentorship/requests/all?${params.toString()}`, ); if (!resp.ok) throw new Error(await resp.text().catch(() => "Failed")); const data = await resp.json(); @@ -179,7 +182,7 @@ export default function AdminMentorshipManager() { hourly_rate: typeof merged.hourly_rate === "number" ? merged.hourly_rate : null, }; - const resp = await fetch("/api/mentors/apply", { + const resp = await fetch(`${API_BASE}/api/mentors/apply`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), diff --git a/client/pages/BlogPost.tsx b/client/pages/BlogPost.tsx index 3916d86d..fa50da37 100644 --- a/client/pages/BlogPost.tsx +++ b/client/pages/BlogPost.tsx @@ -14,6 +14,9 @@ import { User, Calendar } from "lucide-react"; import { blogSeedPosts } from "@/data/blogSeed"; import FourOhFourPage from "./404"; +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; + export default function BlogPost() { const { slug } = useParams<{ slug: string }>(); const [post, setPost] = useState(null); @@ -25,7 +28,7 @@ export default function BlogPost() { try { if (!slug) return; // Primary: try server API - let res = await fetch(`/api/blog/${encodeURIComponent(slug)}`); + let res = await fetch(`${API_BASE}/api/blog/${encodeURIComponent(slug)}`); let data: any = null; try { diff --git a/client/pages/Onboarding.tsx b/client/pages/Onboarding.tsx index de54f12b..cd2ba951 100644 --- a/client/pages/Onboarding.tsx +++ b/client/pages/Onboarding.tsx @@ -322,7 +322,7 @@ export default function Onboarding() { } as any; // Ensure profile via server (uses service role) - const ensureResp = await fetch(`/api/profile/ensure`, { + const ensureResp = await fetch(`${API_BASE}/api/profile/ensure`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: user.id, profile: payload }), @@ -361,7 +361,7 @@ export default function Onboarding() { // Create creator profile if they provided primary arm const creatorProfilePromise = data.creatorProfile.primaryArm - ? fetch(`/api/creators`, { + ? fetch(`${API_BASE}/api/creators`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ @@ -380,7 +380,7 @@ export default function Onboarding() { Promise.allSettled([ interests.length - ? fetch(`/api/interests`, { + ? fetch(`${API_BASE}/api/interests`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ user_id: user.id, interests }), diff --git a/client/pages/ethos/ArtistProfile.tsx b/client/pages/ethos/ArtistProfile.tsx index 85f86395..0e765063 100644 --- a/client/pages/ethos/ArtistProfile.tsx +++ b/client/pages/ethos/ArtistProfile.tsx @@ -12,6 +12,9 @@ import { CardTitle, } from "@/components/ui/card"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; + +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; import { Star, Mail, Music, Zap, Clock } from "lucide-react"; interface Artist { @@ -51,7 +54,7 @@ export default function ArtistProfile() { if (!userId) return; try { - const res = await fetch(`/api/ethos/artists?id=${userId}`); + const res = await fetch(`${API_BASE}/api/ethos/artists?id=${userId}`); const data = await res.json(); setArtist(data); } catch (error) { diff --git a/client/pages/ethos/LicensingDashboard.tsx b/client/pages/ethos/LicensingDashboard.tsx index bf71d52f..e4d6e57f 100644 --- a/client/pages/ethos/LicensingDashboard.tsx +++ b/client/pages/ethos/LicensingDashboard.tsx @@ -21,6 +21,9 @@ import { useAuth } from "@/contexts/AuthContext"; import { useAethexToast } from "@/hooks/use-aethex-toast"; import { CheckCircle2, Clock, FileText, AlertCircle } from "lucide-react"; +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; + interface LicensingAgreement { id: string; track_id: string; @@ -59,7 +62,7 @@ export default function LicensingDashboard() { try { const status = activeTab === "all" ? "all" : activeTab; const res = await fetch( - `/api/ethos/licensing-agreements?status=${status}`, + `${API_BASE}/api/ethos/licensing-agreements?status=${status}`, { headers: { "x-user-id": user.id }, }, @@ -81,7 +84,7 @@ export default function LicensingDashboard() { const handleApprove = async (id: string) => { try { - const res = await fetch(`/api/ethos/licensing-agreements?id=${id}`, { + const res = await fetch(`${API_BASE}/api/ethos/licensing-agreements?id=${id}`, { method: "PUT", headers: { "x-user-id": user!.id, @@ -113,7 +116,7 @@ export default function LicensingDashboard() { if (!confirm("Delete this agreement?")) return; try { - await fetch(`/api/ethos/licensing-agreements?id=${id}`, { + await fetch(`${API_BASE}/api/ethos/licensing-agreements?id=${id}`, { method: "DELETE", headers: { "x-user-id": user!.id }, }); diff --git a/client/pages/ethos/TrackLibrary.tsx b/client/pages/ethos/TrackLibrary.tsx index b4392189..0c6a3070 100644 --- a/client/pages/ethos/TrackLibrary.tsx +++ b/client/pages/ethos/TrackLibrary.tsx @@ -21,6 +21,9 @@ import { } from "@/components/ui/select"; import { Music, Download, Radio, Search, Filter } from "lucide-react"; +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; + interface Track { id: string; user_id: string; @@ -69,7 +72,7 @@ export default function TrackLibrary() { if (selectedGenre !== "All Genres") params.append("genre", selectedGenre); if (licenseFilter !== "all") params.append("licenseType", licenseFilter); - const res = await fetch(`/api/ethos/tracks?${params}`); + const res = await fetch(`${API_BASE}/api/ethos/tracks?${params}`); const { data } = await res.json(); let sorted = [...data]; diff --git a/client/pages/foundation/FoundationCurriculum.tsx b/client/pages/foundation/FoundationCurriculum.tsx index 277798b5..e5a33686 100644 --- a/client/pages/foundation/FoundationCurriculum.tsx +++ b/client/pages/foundation/FoundationCurriculum.tsx @@ -14,6 +14,9 @@ import { } from "lucide-react"; import { Input } from "@/components/ui/input"; +// API Base URL for fetch requests +const API_BASE = import.meta.env.VITE_API_BASE || ""; + interface Course { id: string; slug: string; @@ -69,7 +72,7 @@ export default function FoundationCurriculum() { if (selectedCategory) params.set("category", selectedCategory); if (selectedDifficulty) params.set("difficulty", selectedDifficulty); - const response = await fetch(`/api/foundation/courses?${params}`); + const response = await fetch(`${API_BASE}/api/foundation/courses?${params}`); if (!response.ok) throw new Error("Failed to fetch courses"); let data = await response.json();