diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx index 50c62b5..0203f4b 100644 --- a/src/components/Hero.jsx +++ b/src/components/Hero.jsx @@ -1,11 +1,70 @@ -import { useState } from "react"; +import { useEffect, useState } from "react"; import { motion } from "framer-motion"; import dashboard from "../assets/images/dashboard.png"; import qsvProLogo from "../assets/logos/qsv-pro-logo.png"; -import Download from "../assets/icons/Download"; +import Download from "../assets/icons/Download.jsx"; export const Hero = () => { + const [downloadData, setDownloadData] = useState(); + const [OS, setOS] = useState(); + const [name, setName] = useState(); + useEffect(() => { + (async () => { + const userAgent = window.navigator.userAgent; + // Ignore mobile view for now + if ( + userAgent.includes("iPhone") || + userAgent.includes("Android") || + userAgent.includes("iPad") + ) { + setOS("unknown"); + return; + } + try { + const data = await ( + await fetch( + "https://api.github.com/repos/dathere/qsv-pro-releases/releases" + ) + ).json(); + const name = data[0].name; + setName(name); + const version = name.slice(1); + const downloadData = { + windows: [ + `qsv.pro_${version}_x64_en-US.msi`, + `qsv.pro_${version}_x64-setup.exe`, + ], + macos: [ + `qsv.pro_x64.app.tar.gz`, + `qsv.pro_aarch64.app.tar.gz`, + `qsv.pro_${version}_x64.dmg`, + `qsv.pro_${version}_aarch64.dmg`, + ], + linux: [ + `qsv-pro_${version}_amd64.AppImage`, + `qsv-pro_${version}_amd64.deb`, + ], + }; + setDownloadData(downloadData); + + if (userAgent.includes("Windows")) { + setOS("windows"); + } else if (userAgent.includes("Macintosh")) { + setOS("macos"); + } else if (userAgent.includes("Linux")) { + setOS("linux"); + } + } catch (e) { + console.error( + "Unable to fetch API data from releases repository: " + + String(e) + ); + console.log("Showing default download button to user."); + } + })(); + }, []); + return (
{ transition={{ duration: 0.5, delay: 0.15 }} >
- -
- - - Download qsv pro - -
-
- -

- Start your 7-day free trial,{" "} - no payment required. -

+ {downloadData && OS !== "unknown" ? ( + <> +

+ Start your 7-day free trial,{" "} + no payment required. +

+
+ {Object.keys(downloadData).map( + (platform) => ( +
+

+ {platform === "macos" + ? "macOS" + : platform[0].toUpperCase() + + platform.slice(1)} +

+ {downloadData[platform].map( + (download, index) => ( + + {download} + + ) + )} +
+ ) + )} +
+ + ) : ( + <> + +
+ + + Download qsv pro + +
+
+

+ Start your 7-day free trial,{" "} + no payment required. +

+ + )} {/*