fix: the user feed shows a page that nests again "feed stats athlete" that should be shown only if you are browsing a user that is not you
This commit is contained in:
@@ -313,6 +313,14 @@ try {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- Single-user: expose the handle synchronously so profile pages can detect "own profile" -->
|
||||||
|
{singleHandle && (
|
||||||
|
<script define:vars={{ singleHandle }}>
|
||||||
|
window.__bincioMe = singleHandle;
|
||||||
|
window.dispatchEvent(new CustomEvent('bincio:me', { detail: singleHandle }));
|
||||||
|
</script>
|
||||||
|
)}
|
||||||
|
|
||||||
<!-- User widget: only needed for multi-user (single-user nav links are static) -->
|
<!-- User widget: only needed for multi-user (single-user nav links are static) -->
|
||||||
{!singleHandle && (
|
{!singleHandle && (
|
||||||
<script define:vars={{ baseUrl }}>
|
<script define:vars={{ baseUrl }}>
|
||||||
@@ -322,6 +330,10 @@ try {
|
|||||||
if (!r.ok) return;
|
if (!r.ok) return;
|
||||||
const user = await r.json();
|
const user = await r.json();
|
||||||
|
|
||||||
|
// Expose handle for profile pages
|
||||||
|
window.__bincioMe = user.handle;
|
||||||
|
window.dispatchEvent(new CustomEvent('bincio:me', { detail: user.handle }));
|
||||||
|
|
||||||
// Show @handle link → /u/{handle}/
|
// Show @handle link → /u/{handle}/
|
||||||
const meEl = document.getElementById('nav-me');
|
const meEl = document.getElementById('nav-me');
|
||||||
if (meEl) {
|
if (meEl) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const athleteUrl = `${mergedBase}athlete.json`;
|
|||||||
<Base title={`@${handle} Athlete — BincioActivity`}>
|
<Base title={`@${handle} Athlete — BincioActivity`}>
|
||||||
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2">
|
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2">
|
||||||
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
||||||
<nav class="flex gap-4 mt-1 mb-6">
|
<nav id="profile-subnav" class="flex gap-4 mt-1 mb-6">
|
||||||
<a href={`${base}u/${handle}/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Feed</a>
|
<a href={`${base}u/${handle}/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Feed</a>
|
||||||
<a href={`${base}u/${handle}/stats/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Stats</a>
|
<a href={`${base}u/${handle}/stats/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Stats</a>
|
||||||
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-[--accent]">Athlete</a>
|
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-[--accent]">Athlete</a>
|
||||||
@@ -30,3 +30,13 @@ const athleteUrl = `${mergedBase}athlete.json`;
|
|||||||
</div>
|
</div>
|
||||||
<AthleteView {base} {indexUrl} {athleteUrl} client:only="svelte" />
|
<AthleteView {base} {indexUrl} {athleteUrl} client:only="svelte" />
|
||||||
</Base>
|
</Base>
|
||||||
|
<script define:vars={{ handle }}>
|
||||||
|
function applyMeCheck(me) {
|
||||||
|
if (me === handle) document.getElementById('profile-subnav')?.remove();
|
||||||
|
}
|
||||||
|
if (window.__bincioMe !== undefined) {
|
||||||
|
applyMeCheck(window.__bincioMe);
|
||||||
|
} else {
|
||||||
|
window.addEventListener('bincio:me', e => applyMeCheck(e.detail), { once: true });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const base = import.meta.env.BASE_URL;
|
|||||||
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2 flex items-center gap-4">
|
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2 flex items-center gap-4">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
||||||
<nav class="flex gap-4 mt-1">
|
<nav id="profile-subnav" class="flex gap-4 mt-1">
|
||||||
<a href={`${base}u/${handle}/`} class="text-sm text-[--accent]">Feed</a>
|
<a href={`${base}u/${handle}/`} class="text-sm text-[--accent]">Feed</a>
|
||||||
<a href={`${base}u/${handle}/stats/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Stats</a>
|
<a href={`${base}u/${handle}/stats/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Stats</a>
|
||||||
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Athlete</a>
|
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Athlete</a>
|
||||||
@@ -32,3 +32,13 @@ const base = import.meta.env.BASE_URL;
|
|||||||
</div>
|
</div>
|
||||||
<ActivityFeed {base} filterHandle={handle} profileIndexUrl={shardUrl} client:only="svelte" />
|
<ActivityFeed {base} filterHandle={handle} profileIndexUrl={shardUrl} client:only="svelte" />
|
||||||
</Base>
|
</Base>
|
||||||
|
<script define:vars={{ handle }}>
|
||||||
|
function applyMeCheck(me) {
|
||||||
|
if (me === handle) document.getElementById('profile-subnav')?.remove();
|
||||||
|
}
|
||||||
|
if (window.__bincioMe !== undefined) {
|
||||||
|
applyMeCheck(window.__bincioMe);
|
||||||
|
} else {
|
||||||
|
window.addEventListener('bincio:me', e => applyMeCheck(e.detail), { once: true });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const indexUrl = `${base}data/${handle}/_merged/index.json`;
|
|||||||
<Base title={`@${handle} Stats — BincioActivity`}>
|
<Base title={`@${handle} Stats — BincioActivity`}>
|
||||||
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2">
|
<div class="max-w-5xl mx-auto px-4 pt-6 pb-2">
|
||||||
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
<h1 class="text-2xl font-bold text-white mb-0.5">@{handle}</h1>
|
||||||
<nav class="flex gap-4 mt-1 mb-6">
|
<nav id="profile-subnav" class="flex gap-4 mt-1 mb-6">
|
||||||
<a href={`${base}u/${handle}/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Feed</a>
|
<a href={`${base}u/${handle}/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Feed</a>
|
||||||
<a href={`${base}u/${handle}/stats/`} class="text-sm text-[--accent]">Stats</a>
|
<a href={`${base}u/${handle}/stats/`} class="text-sm text-[--accent]">Stats</a>
|
||||||
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Athlete</a>
|
<a href={`${base}u/${handle}/athlete/`} class="text-sm text-zinc-400 hover:text-white transition-colors">Athlete</a>
|
||||||
@@ -28,3 +28,13 @@ const indexUrl = `${base}data/${handle}/_merged/index.json`;
|
|||||||
</div>
|
</div>
|
||||||
<StatsView {indexUrl} client:only="svelte" />
|
<StatsView {indexUrl} client:only="svelte" />
|
||||||
</Base>
|
</Base>
|
||||||
|
<script define:vars={{ handle }}>
|
||||||
|
function applyMeCheck(me) {
|
||||||
|
if (me === handle) document.getElementById('profile-subnav')?.remove();
|
||||||
|
}
|
||||||
|
if (window.__bincioMe !== undefined) {
|
||||||
|
applyMeCheck(window.__bincioMe);
|
||||||
|
} else {
|
||||||
|
window.addEventListener('bincio:me', e => applyMeCheck(e.detail), { once: true });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user