From 034bb7ff42d82c1488729555081908e110ece0a7 Mon Sep 17 00:00:00 2001
From: iye <1713042409@qq.com>
Date: Fri, 15 May 2026 18:12:21 +0800
Subject: [PATCH] chore(ui): drop nav logo + revert hero to default-muted
- Navigation: removed top-left , NavLinks now sit at the
left edge. Logo component itself kept (still used by Footer /
LoginForm / LoginModal).
- HeroBanner: restored simple "default muted + autoplay" behavior.
The earlier try-unmuted-fallback flow was working but produced
unpredictable first-paint audio depending on browser autoplay
policy; muted is the safer default.
Co-Authored-By: Claude Opus 4.7
---
src/components/HeroBanner.tsx | 17 +++--------------
src/components/Navigation.tsx | 5 +----
2 files changed, 4 insertions(+), 18 deletions(-)
diff --git a/src/components/HeroBanner.tsx b/src/components/HeroBanner.tsx
index 71481e3..fdb065e 100644
--- a/src/components/HeroBanner.tsx
+++ b/src/components/HeroBanner.tsx
@@ -28,24 +28,13 @@ export default function HeroBanner({
className,
}: HeroBannerProps) {
const videoRef = useRef(null);
- // 默认目标:带音播放。但浏览器对"带声音自动播放"有严格限制 ——
- // 只有当用户与本站已有交互历史(autoplay policy "high engagement")时才允许。
- // 真实初始状态由下面的 effect 试播后写回:成功 → false,被拦截 → true。
- const [isMuted, setIsMuted] = useState(false);
+ const [isMuted, setIsMuted] = useState(true);
useEffect(() => {
const v = videoRef.current;
if (!v || !videoSrc) return;
- // 先尝试带音播放,失败立刻 fallback 静音播放(并把声音按钮置为静音态)。
- // 几乎所有首次访问场景都会走到 fallback,用户点声音按钮再解除静音。
- v.muted = false;
- v.play()
- .then(() => setIsMuted(false))
- .catch(() => {
- v.muted = true;
- setIsMuted(true);
- v.play().catch(() => {});
- });
+ v.muted = isMuted;
+ v.play().catch(() => {});
// 仅在 videoSrc 变化时执行 · 不依赖 isMuted(mute 切换由按钮处理)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [videoSrc]);
diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx
index 515b274..f4e6a27 100644
--- a/src/components/Navigation.tsx
+++ b/src/components/Navigation.tsx
@@ -2,7 +2,6 @@
import { useEffect, useState } from "react";
import { usePathname } from "next/navigation";
-import Logo from "./Logo";
import NavLinks from "./NavLinks";
import SearchTrigger from "./SearchTrigger";
import AuthMenu from "./auth/AuthMenu";
@@ -82,9 +81,7 @@ export default function Navigation() {
)}
/>