diff --git a/package-lock.json b/package-lock.json index 4d8da6f..b3f2651 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ }, "devDependencies": { "@tailwindcss/typography": "^0.5.10", + "@types/platform": "^1.3.6", "postcss-nesting": "^12.0.2" } }, @@ -1137,6 +1138,12 @@ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" }, + "node_modules/@types/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-ZmSaqHuvzv+jC232cFoz2QqPUkaj6EvMmCrWcx3WRr7xTPVFCMUOTcOq8m2d+Zw1iKRc1kDiaA+jtNrV0hkVew==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", diff --git a/package.json b/package.json index d556f7a..245d54c 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ }, "devDependencies": { "@tailwindcss/typography": "^0.5.10", + "@types/platform": "^1.3.6", "postcss-nesting": "^12.0.2" } } diff --git a/src/components/banner/PromoBanner.tsx b/src/components/banner/PromoBanner.tsx index 3f7b498..84e3a8b 100644 --- a/src/components/banner/PromoBanner.tsx +++ b/src/components/banner/PromoBanner.tsx @@ -1,27 +1,21 @@ -import React, { useState, useEffect } from "react"; -import { museHubReleases, audacityReleases } from "../../assets/js/releaseData"; +import { museHubReleases } from "../../assets/js/releaseData"; import "../../styles/icons.css"; -import DownloadMuseHubButton from "../button/DownloadMuseHubButton"; -import platform from "platform"; -declare interface Props { - url: string; -} +import useBrowserOS from "../../hooks/useDetectOS"; -function PromoBanner({ url }: Props) { - //no promo running - //return null; - const [showBanner, setShowBanner] = useState(true); +function PromoBanner() { + const browserOS = useBrowserOS(); - function getHref() { - switch(platform.os.family){ - case "OS X": - return museHubReleases.mac[0].browser_download_url; - case "Windows": - return museHubReleases.win[0].browser_download_url; - default: - setShowBanner(false); return "#"; + const getHref = () => { + if (browserOS === "OS X") { + return museHubReleases.mac[0].browser_download_url; + } else if (browserOS === "Windows") { + return museHubReleases.win[0].browser_download_url; } - } + return "#"; // Default if OS is not supported + }; + + // Only show the banner for supported OSes + const showBanner = browserOS === "OS X" || browserOS === "Windows"; function handleButtonClick() { if (typeof _paq !== "undefined") { @@ -34,29 +28,32 @@ function PromoBanner({ url }: Props) { } } - return ( <> { showBanner && -
+ )} + > ); } -export default PromoBanner; +export default PromoBanner; \ No newline at end of file diff --git a/src/hooks/useDetectOS.ts b/src/hooks/useDetectOS.ts new file mode 100644 index 0000000..3c6565c --- /dev/null +++ b/src/hooks/useDetectOS.ts @@ -0,0 +1,17 @@ +import { useState, useEffect } from 'react'; +import platform from 'platform'; + +const useBrowserOS = () => { + // Define the state with an explicit string type or null + const [browserOS, setBrowserOS] = useState