diff --git a/frontend/app/(presentation-generator)/presentation/components/Header.tsx b/frontend/app/(presentation-generator)/presentation/components/Header.tsx index 0eadd50..3567bad 100644 --- a/frontend/app/(presentation-generator)/presentation/components/Header.tsx +++ b/frontend/app/(presentation-generator)/presentation/components/Header.tsx @@ -17,7 +17,7 @@ import { PopoverTrigger, } from "@/components/ui/popover"; import { PresentationGenerationApi } from "../../services/api/presentation-generation"; -import { apiFetch } from "@/lib/apiFetch"; +import { apiFetch, apiUrl } from "@/lib/apiFetch"; import { OverlayLoader } from "@/components/ui/overlay-loader"; import { useDispatch, useSelector } from "react-redux"; @@ -137,13 +137,14 @@ const Header = ({ router.push(`/presentation?id=${presentation_id}&stream=true`); }; const downloadLink = (path: string) => { + const url = apiUrl(path); // if we have popup access give direct download if not redirect to the path if (window.opener) { - window.open(path, '_blank'); + window.open(url, '_blank'); } else { const link = document.createElement('a'); - link.href = path; - link.download = path.split('/').pop() || 'download'; + link.href = url; + link.download = url.split('/').pop() || 'download'; document.body.appendChild(link); link.click(); } diff --git a/frontend/lib/apiFetch.ts b/frontend/lib/apiFetch.ts index b9fd8a6..6585544 100644 --- a/frontend/lib/apiFetch.ts +++ b/frontend/lib/apiFetch.ts @@ -7,12 +7,18 @@ */ const BASE_PATH = '/ppt-tool'; +const PREFIXED_PATHS = ['/api/', '/app_data/', '/static/']; + +function needsBasePath(path: string): boolean { + return PREFIXED_PATHS.some((p) => path.startsWith(p)); +} + export function apiFetch(path: string, init?: RequestInit): Promise { - const url = path.startsWith('/api/') ? `${BASE_PATH}${path}` : path; + const url = needsBasePath(path) ? `${BASE_PATH}${path}` : path; return fetch(url, init); } /** Returns the full URL with basePath — use for EventSource and other non-fetch calls. */ export function apiUrl(path: string): string { - return path.startsWith('/api/') ? `${BASE_PATH}${path}` : path; + return needsBasePath(path) ? `${BASE_PATH}${path}` : path; }