From 60134fbbe9f4842151b0823900e03f1c60a0b8cd Mon Sep 17 00:00:00 2001 From: Daniel Jacobs Date: Tue, 5 Mar 2024 11:28:07 -0500 Subject: [PATCH] Use state to show static logo with ternary conditional --- src/components/logo.tsx | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/components/logo.tsx b/src/components/logo.tsx index c97f17cc..306027e5 100644 --- a/src/components/logo.tsx +++ b/src/components/logo.tsx @@ -27,7 +27,11 @@ interface LogoProps { className?: string; } -export default class InteractiveLogo extends React.Component { +interface LogoState { + player: RufflePlayer | null; +} + +export default class InteractiveLogo extends React.Component { private readonly container: React.RefObject; private player: RufflePlayer | null = null; @@ -35,10 +39,19 @@ export default class InteractiveLogo extends React.Component { super(props); this.container = React.createRef(); + this.state = { + player: null, + }; + } + + private removeRufflePlayer() { + this.player?.remove(); + this.player = null; + this.setState({player: null}); } private load() { - if (this.player) { + if (this.state.player) { // Already loaded. return; } @@ -47,6 +60,7 @@ export default class InteractiveLogo extends React.Component { if (this.player) { this.container.current!.appendChild(this.player); + this.player.load({ url: "/logo-anim.swf", autoplay: "on", @@ -55,14 +69,12 @@ export default class InteractiveLogo extends React.Component { contextMenu: "off", splashScreen: false, preferredRenderer: "canvas", - }).then(() => { - this?.container?.current?.querySelector("img")?.classList?.toggle(classes.hidden); }).catch(() => { - this.player?.remove(); - this.player = null; + this.removeRufflePlayer(); }); this.player.style.width = "100%"; this.player.style.height = "100%"; + this.setState({player: this.player}); } } @@ -71,8 +83,7 @@ export default class InteractiveLogo extends React.Component { } componentWillUnmount() { - this.player?.remove(); - this.player = null; + this.removeRufflePlayer(); } render() { @@ -83,7 +94,7 @@ export default class InteractiveLogo extends React.Component { onReady={() => this.load()} />
- Ruffle Logo + Ruffle Logo
);