import { apiFetch } from "../api/client"; function withLeadingSlash(path: string): string { const p = String(path || "").trim(); if (!p) return "/"; return p.startsWith("/") ? p : `/${p}`; } export function isProtectedDocPath(path: string): boolean { const p = withLeadingSlash(path); return p.startsWith("/masters_files/") || p.startsWith("/pots_files/") || p.startsWith("/router_rag_files/"); } export async function openProtectedFile(path: string): Promise { const target = withLeadingSlash(path); const response = await apiFetch(target, { method: "GET" }); if (!response.ok) { throw new Error(`File request failed (${response.status}).`); } const blob = await response.blob(); const objectUrl = URL.createObjectURL(blob); const popup = window.open(objectUrl, "_blank", "noopener,noreferrer"); if (!popup) { const anchor = document.createElement("a"); anchor.href = objectUrl; anchor.target = "_blank"; anchor.rel = "noopener noreferrer"; anchor.click(); } window.setTimeout(() => URL.revokeObjectURL(objectUrl), 60_000); }