feat(ssr): render Gosuda badge conditionally in SSR view based on lease metadata hide field

sinwoojin committed Nov 14, 2025 at 15:34 UTC e8c4b9dbec2cecf5a040fe3bb486f629bc1992e1
3 files changed +6 -29
cmd/relay-server/static/app.js
-28
@@ -1,28 +0,0 @@
1 -document.addEventListener("DOMContentLoaded", fetchAndRenderLeases);
2 -
3 -async function fetchAndRenderLeases() {
4 - try {
5 - const res = await fetch("/api/leases");
6 - const data = await res.json();
7 - renderLeaseList(data);
8 - } catch (err) {
9 - console.error("Failed to fetch leases:", err);
10 - }
11 -}
12 -
13 -function renderLeaseList(leases) {
14 - const list = document.getElementById("lease-list");
15 - if (!list) return;
16 - list.innerHTML = "";
17 - leases.forEach((lease) => {
18 - const item = document.createElement("div");
19 - item.className = "lease-item";
20 - item.innerHTML = `
21 - <span class="lease-name">${lease.metadata?.description || lease.id}</span>
22 - <span id="gosuda-badge-${lease.id}" class="gosuda-badge">고수다</span>`;
23 - if (lease.metadata?.hide) {
24 - item.querySelector(`#gosuda-badge-${lease.id}`).style.display = "none";
25 - }
26 - list.appendChild(item);
27 - });
28 -}
cmd/relay-server/static/index.html
+3
@@ -90,6 +90,9 @@
90 <div class="title">
91 {{if .Name}}{{.Name}}{{else}}(unnamed){{end}}
92 </div>
93 + {{ if not .Hide }}
94 + <span class="gosuda-badge">고수다</span>
95 + {{ end }}
96 <svg
97 class="chevron"
98 xmlns="http://www.w3.org/2000/svg"
cmd/relay-server/view.go
+3 -1
@@ -168,6 +168,7 @@ type leaseRow struct {
168 TTL string
169 Link string
170 StaleRed bool
171 + Hide bool
172 }
173
174 type adminPageData struct {
@@ -198,7 +199,7 @@ func convertLeaseEntriesToRows(serv *portal.RelayServer) []leaseRow {
199 Hide bool `json:"hide"`
200 }
201 if err := json.Unmarshal([]byte(lease.Metadata), &meta); err == nil && meta.Hide {
201 - continue
202 + // leaseRow에 Hide 정보만 넣고 리스트에는 포함
203 }
204
205 // Calculate TTL
@@ -280,6 +281,7 @@ func convertLeaseEntriesToRows(serv *portal.RelayServer) []leaseRow {
281 TTL: ttlStr,
282 Link: link,
283 StaleRed: !connected && since >= 15*time.Second,
284 + Hide: meta.Hide,
285 }
286
287 rows = append(rows, row)