From c5206c68eeb16b764978a1cbd915835b94e548d5 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Mon, 17 Feb 2025 20:06:39 -0300 Subject: [PATCH] refactor: simplify game details hero section layout and scrolling --- .../game-details/game-details-content.tsx | 51 ++++--------------- .../pages/game-details/hero/hero-panel.tsx | 8 +-- 2 files changed, 12 insertions(+), 47 deletions(-) diff --git a/src/renderer/src/pages/game-details/game-details-content.tsx b/src/renderer/src/pages/game-details/game-details-content.tsx index b2d1334a..e0cd168e 100644 --- a/src/renderer/src/pages/game-details/game-details-content.tsx +++ b/src/renderer/src/pages/game-details/game-details-content.tsx @@ -16,13 +16,8 @@ import { useUserDetails } from "@renderer/hooks"; import { useSubscription } from "@renderer/hooks/use-subscription"; import "./game-details.scss"; -const HERO_HEIGHT = 300; -const HERO_ANIMATION_THRESHOLD = 25; - export function GameDetailsContent() { const heroRef = useRef(null); - const containerRef = useRef(null); - const [isHeaderStuck, setIsHeaderStuck] = useState(false); const { t } = useTranslation("game_details"); @@ -61,7 +56,7 @@ export function GameDetailsContent() { return t("no_shop_details"); }, [shopDetails, t]); - const [backdropOpactiy, setBackdropOpacity] = useState(1); + const [backdropOpacity, setBackdropOpacity] = useState(1); const handleHeroLoad = async () => { const output = await average(steamUrlBuilder.libraryHero(objectId!), { @@ -80,26 +75,6 @@ export function GameDetailsContent() { setBackdropOpacity(1); }, [objectId]); - const onScroll: React.UIEventHandler = (event) => { - const heroHeight = heroRef.current?.clientHeight ?? HERO_HEIGHT; - - const scrollY = (event.target as HTMLDivElement).scrollTop; - const opacity = Math.max( - 0, - 1 - scrollY / (heroHeight - HERO_ANIMATION_THRESHOLD) - ); - - if (scrollY >= heroHeight && !isHeaderStuck) { - setIsHeaderStuck(true); - } - - if (scrollY <= heroHeight && isHeaderStuck) { - setIsHeaderStuck(false); - } - - setBackdropOpacity(opacity); - }; - const handleCloudSaveButtonClick = () => { if (!userDetails) { window.electron.openAuthWindow(AuthPage.SignIn); @@ -122,31 +97,25 @@ export function GameDetailsContent() {
- {game?.title} - -
+
+ {game?.title}
- +
diff --git a/src/renderer/src/pages/game-details/hero/hero-panel.tsx b/src/renderer/src/pages/game-details/hero/hero-panel.tsx index e9d110f0..8bf8f4b1 100644 --- a/src/renderer/src/pages/game-details/hero/hero-panel.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel.tsx @@ -9,11 +9,7 @@ import { HeroPanelPlaytime } from "./hero-panel-playtime"; import { gameDetailsContext } from "@renderer/context"; import "./hero-panel.scss"; -export interface HeroPanelProps { - isHeaderStuck: boolean; -} - -export function HeroPanel({ isHeaderStuck }: HeroPanelProps) { +export function HeroPanel() { const { t } = useTranslation("game_details"); const { formatDate } = useDate(); @@ -56,7 +52,7 @@ export function HeroPanel({ isHeaderStuck }: HeroPanelProps) { return (
{getInfo()}