diff --git a/apps/admin-ui/src/app/settings/page.tsx b/apps/admin-ui/src/app/settings/page.tsx index d265380..eff7d4d 100644 --- a/apps/admin-ui/src/app/settings/page.tsx +++ b/apps/admin-ui/src/app/settings/page.tsx @@ -149,6 +149,7 @@ export default function SettingsPage() { Array<{ id: string; name: string; channelCount: number }> >([]); const [tvBusy, setTvBusy] = useState(false); + const [tvRefreshBusy, setTvRefreshBusy] = useState(false); const [tvMsg, setTvMsg] = useState(null); const [tvErr, setTvErr] = useState(null); @@ -518,6 +519,33 @@ export default function SettingsPage() { } } + async function refreshTvEpg() { + setTvRefreshBusy(true); + setTvMsg(null); + setTvErr(null); + try { + const res = await fetch("/api/v1/admin/settings/iptv/refresh-epg", { + method: "POST", + credentials: "include", + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) { + setTvErr(data.error?.message ?? "EPG vernieuwen mislukt"); + return; + } + const ok = data.xmltvOk ?? 0; + const fail = data.xmltvFailed ?? 0; + setTvMsg( + fail > 0 + ? `EPG vernieuwd (${ok} ok, ${fail} mislukt) — open TV in de app opnieuw` + : `EPG vernieuwd (${ok} lijn${ok === 1 ? "" : "en"}) — open TV in de app opnieuw` + ); + if (Array.isArray(data.categories)) setTvCategories(data.categories); + } finally { + setTvRefreshBusy(false); + } + } + return ( <>