From 5785b7dc51c084707c6adaacce9ba0d7d5d00638 Mon Sep 17 00:00:00 2001 From: puppe1990 Date: Fri, 11 Sep 2026 14:41:36 -0300 Subject: [PATCH] Stop opening the token owner on / and hide traffic UI without snapshots The home page stays a username lookup instead of redirecting to the authenticated user. Charts and traffic sorts only appear when the loaded catalog has GitHub traffic snapshots. --- internal/handlers/home.go | 7 ------ internal/handlers/home_test.go | 10 ++++---- web/src/components/SortModal.svelte | 25 +++++++++++--------- web/src/pages/Home.svelte | 36 +++++++++++++++++++---------- web/src/pages/Home.test.js | 3 +++ 5 files changed, 46 insertions(+), 35 deletions(-) diff --git a/internal/handlers/home.go b/internal/handlers/home.go index fdb312d..ac39970 100644 --- a/internal/handlers/home.go +++ b/internal/handlers/home.go @@ -26,13 +26,6 @@ func NewHomeHandler(site meta.Site, i *inertia.Inertia, loader *catalog.Loader) } func (h *HomeHandler) Index(w http.ResponseWriter, r *http.Request) { - if h.loader != nil && h.loader.GitHub != nil && h.loader.GitHub.HasToken() { - me, err := h.loader.GitHub.Me(r.Context()) - if err == nil && me.Login != "" { - http.Redirect(w, r, "/u/"+me.Login+"/all", http.StatusSeeOther) - return - } - } h.render(w, r, catalog.Snapshot{}, "", "", false) } diff --git a/internal/handlers/home_test.go b/internal/handlers/home_test.go index ec29ade..b844650 100644 --- a/internal/handlers/home_test.go +++ b/internal/handlers/home_test.go @@ -86,7 +86,7 @@ func newHomeHandler(t *testing.T, gh catalog.GitHub) *HomeHandler { return NewHomeHandler(testSite(), setupTestInertia(t), loader) } -func TestHomeHandler_IndexRedirectsToAuthenticatedUser(t *testing.T) { +func TestHomeHandler_IndexDoesNotOpenAuthenticatedUser(t *testing.T) { h := newHomeHandler(t, homeGitHub{ token: true, user: githubapi.User{Login: "puppe1990", Name: "Matheus"}, @@ -94,11 +94,11 @@ func TestHomeHandler_IndexRedirectsToAuthenticatedUser(t *testing.T) { }) rr := httptest.NewRecorder() h.Index(rr, httptest.NewRequest(http.MethodGet, "/", nil)) - if rr.Code != http.StatusSeeOther { - t.Fatalf("status = %d, want %d", rr.Code, http.StatusSeeOther) + if rr.Code != http.StatusOK { + t.Fatalf("status = %d, want %d", rr.Code, http.StatusOK) } - if loc := rr.Header().Get("Location"); loc != "/u/puppe1990/all" { - t.Fatalf("Location = %q", loc) + if loc := rr.Header().Get("Location"); loc != "" { + t.Fatalf("Location = %q, want empty", loc) } } diff --git a/web/src/components/SortModal.svelte b/web/src/components/SortModal.svelte index 13889df..1ada328 100644 --- a/web/src/components/SortModal.svelte +++ b/web/src/components/SortModal.svelte @@ -6,10 +6,11 @@ export let sortOrder = "desc"; export let sortThen = ""; export let sortThenOrder = "desc"; + export let hasTraffic = false; const catalogFields = SORT_FIELDS.filter((field) => field.group === "catalog"); const trafficFields = SORT_FIELDS.filter((field) => field.group === "traffic"); - const thenFields = [{ value: "", label: "None" }, ...SORT_FIELDS]; + $: thenFields = [{ value: "", label: "None" }, ...SORT_FIELDS.filter((field) => hasTraffic || field.group !== "traffic")]; function close() { open = false; @@ -45,16 +46,18 @@ -
-

Traffic · 14 days

-
- {#each trafficFields as field} - - {/each} -
-
+ {#if hasTraffic} +
+

Traffic · 14 days

+
+ {#each trafficFields as field} + + {/each} +
+
+ {/if}

Order

diff --git a/web/src/pages/Home.svelte b/web/src/pages/Home.svelte index a432b5e..842fca1 100644 --- a/web/src/pages/Home.svelte +++ b/web/src/pages/Home.svelte @@ -34,10 +34,18 @@ let view = "catalog"; let page = 1; let lastFilterKey = ""; - $: if (!preferTraffic && (repos || []).some((repo) => repo.traffic?.available)) { + $: hasTraffic = (repos || []).some((repo) => repo.traffic?.available); + $: if (hasTraffic && !preferTraffic) { sortBy = "traffic"; preferTraffic = true; } + $: if (!hasTraffic) { + preferTraffic = false; + if (sortBy === "traffic" || sortBy === "views" || sortBy === "view_uniques" || sortBy === "clones" || sortBy === "clone_uniques") { + sortBy = "stars"; + } + if (view === "charts") view = "catalog"; + } $: langs = languageOptions(repos); $: visible = applyFilters(repos, { language, minStars, query, includeForks, hasHomepage, visibility, sortBy, sortOrder, sortThen, sortThenOrder }); @@ -230,10 +238,12 @@ - - - - + {#if hasTraffic} + + + + + {/if}