diff --git a/site/api/github.js b/site/api/github.js index 40c9998..9e37d38 100644 --- a/site/api/github.js +++ b/site/api/github.js @@ -1,7 +1,7 @@ -const axios = require('axios') -require('dotenv').config +import axios from 'axios' +import 'dotenv' -module.exports = async (req, res) => { +export default async (req, res) => { try { const response = await axios( 'https://api.github.com/repos/kremalicious/blowfish/releases/latest', @@ -11,8 +11,30 @@ module.exports = async (req, res) => { } } ) - res.status(200).send(response.data) + + const { assets, published_at, tag_name } = response.data + + const downloads = assets + .filter( + asset => + asset.name.includes('mac.zip') | + (asset.name.includes('.exe') && + !asset.name.includes('.exe.blockmap')) | + asset.name.includes('.deb') + ) + .map(asset => { + const isMac = asset.name.includes('mac.zip') + const isWin = asset.name.includes('.exe') + + return { + name: isMac ? 'macOS' : isWin ? 'Windows' : 'Linux, deb', + url: asset.browser_download_url + } + }) + + res.status(200).json({ downloads, published_at, tag_name }) } catch (error) { console.error(error.message) + res.status(500).send(error.message) } } diff --git a/site/scripts.js b/site/scripts.js index b53cbe5..6abb108 100644 --- a/site/scripts.js +++ b/site/scripts.js @@ -3,30 +3,8 @@ async function init() { const release = await response.json() replaceDom(release) } - window.addEventListener('load', () => init()) -function getDownloads(release) { - const downloads = release.assets - .filter( - asset => - asset.name.includes('mac.zip') | - (asset.name.includes('.exe') && !asset.name.includes('.exe.blockmap')) | - asset.name.includes('.deb') - ) - .map(asset => { - const isMac = asset.name.includes('mac.zip') - const isWin = asset.name.includes('.exe') - - return { - name: isMac ? 'macOS' : isWin ? 'Windows' : 'Linux, deb', - url: asset.browser_download_url - } - }) - - return downloads -} - function replaceDom(release) { if (!release) return @@ -38,14 +16,13 @@ function replaceDom(release) { releaseTagElement.innerHTML = release.tag_name releaseDateElement.innerHTML = `on ${dateFormatted}` - const downloads = getDownloads(release) downloadsElement.innerHTML = '' const isMac = navigator.userAgent.includes('Mac OS') const isWin = navigator.userAgent.includes('Windows') const isLinux = navigator.userAgent.includes('Linux') - const downloadAll = downloads.map(download => { + const downloadAll = release.downloads.map(download => { const isTargetOs = isMac & download.name.includes('mac') || isWin & download.name.includes('Windows') ||