Allow editing node publicStreamUrl in admin.

Helps fix typos like node01 vs node1 without re-enrolling.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jos Vooges | STH 2026-08-25 03:02:16 +02:00
parent 974b3124d0
commit dcc10fc7d3

View file

@ -29,13 +29,14 @@ export default function NodesPage() {
const [enrollName, setEnrollName] = useState("");
const [enrollLocation, setEnrollLocation] = useState("");
const [enrollToken, setEnrollToken] = useState("");
const [publicUrl, setPublicUrl] = useState("https://node01.vonas.nl");
const [publicUrl, setPublicUrl] = useState("https://node1.example.com");
const [moviesPath, setMoviesPath] = useState("/mnt/user/movies");
const [seriesPath, setSeriesPath] = useState("/mnt/user/series");
const [copied, setCopied] = useState(false);
const [editId, setEditId] = useState<string | null>(null);
const [editName, setEditName] = useState("");
const [editLocation, setEditLocation] = useState("");
const [editPublicUrl, setEditPublicUrl] = useState("");
function loadNodes() {
fetch("/api/v1/admin/nodes", { credentials: "include" })
@ -114,7 +115,11 @@ export default function NodesPage() {
method: "PATCH",
credentials: "include",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: editName, location: editLocation }),
body: JSON.stringify({
name: editName,
location: editLocation,
publicStreamUrl: editPublicUrl.trim().replace(/\/$/, ""),
}),
});
setEditId(null);
loadNodes();
@ -150,7 +155,7 @@ export default function NodesPage() {
</div>
<div className="form-group">
<label>Publieke node-URL (NPM)</label>
<input value={publicUrl} onChange={(e) => setPublicUrl(e.target.value)} placeholder="https://node01.vonas.nl" />
<input value={publicUrl} onChange={(e) => setPublicUrl(e.target.value)} placeholder="https://node1.example.com" />
</div>
<div className="form-group">
<label>Unraid films-pad</label>
@ -194,6 +199,17 @@ export default function NodesPage() {
<label>Locatie</label>
<input value={editLocation} onChange={(e) => setEditLocation(e.target.value)} />
</div>
<div className="form-group">
<label>Publieke stream-URL (NPM)</label>
<input
value={editPublicUrl}
onChange={(e) => setEditPublicUrl(e.target.value)}
placeholder="https://node1.example.com"
/>
<p style={{ color: "#a1a1aa", fontSize: "0.8rem", marginTop: 6 }}>
Zet dit ook in de node-container als MEDIA_NODE_PUBLIC_URL, anders overschrijft de volgende HELLO dit weer.
</p>
</div>
<div style={{ display: "flex", gap: 8 }}>
<button onClick={saveEdit}>Opslaan</button>
<button onClick={() => setEditId(null)} style={{ background: "#374151" }}>Annuleren</button>
@ -234,6 +250,7 @@ export default function NodesPage() {
setEditId(node.id);
setEditName(node.name);
setEditLocation(node.location ?? "");
setEditPublicUrl(node.publicStreamUrl);
}}
>
Edit