Skip to content

Instantly share code, notes, and snippets.

@Nickman87
Created July 28, 2022 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nickman87/7b072423debc02e067d5f29c1450eca4 to your computer and use it in GitHub Desktop.
Save Nickman87/7b072423debc02e067d5f29c1450eca4 to your computer and use it in GitHub Desktop.
keepthescore.co React component
import { FC, useEffect, useState } from "react";
type LeaderboardProps = {
boardToken: string;
};
const Leaderboard: FC<LeaderboardProps> = ({ boardToken }) => {
const [height, setHeight] = useState("80px");
const [isReady, setIsReady] = useState(false);
useEffect(() => {
const handleMessage = (event: MessageEvent<any>) => {
if (event?.data?.board_token === boardToken)
if (event.data.hasOwnProperty("frameHeight")) {
setHeight(`${event.data.frameHeight}px`);
}
};
window.addEventListener("message", handleMessage, false);
setIsReady(true);
return () => {
window.removeEventListener("message", handleMessage);
};
}, [boardToken]);
if (!isReady) {
return null;
}
return (
<iframe
title="leaderboard"
id={`iframe-${boardToken}`}
src={`https://keepthescore.co/embed/${boardToken}/`}
style={{ width: "100%", border: "none", height, overflowX: "hidden" }}
/>
);
};
export default Leaderboard;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment