diff --git a/website/src/routes/Download.svelte b/website/src/routes/Download.svelte index 83b6790..a74fd50 100644 --- a/website/src/routes/Download.svelte +++ b/website/src/routes/Download.svelte @@ -10,187 +10,417 @@ arch: string ending: string } - const macOsArm: Version = { - os: 'macOS', - arch: 'arm64', - ending: '-mac-arm64.dmg', - } - const macOsX64: Version = { - os: 'macOS', - arch: 'x64', - ending: '-mac-x64.dmg', - } - const windowsX64: Version = { - os: 'Windows', - arch: 'x64', - ending: '-win-x64.exe', - } - const windowsArm: Version = { - os: 'Windows', - arch: 'arm64', - ending: '-win-arm64.exe', - } - const linuxDeb: Version = { - os: 'Linux .deb', - arch: 'x64', - ending: '-linux-amd64.deb', - } - const linuxlinuxRpm: Version = { - os: 'Linux .rpm', - arch: 'x64', - ending: 'linux-x86_64.rpm', - } - const versionList: Version[] = [ - macOsArm, - macOsX64, - windowsX64, - windowsArm, - linuxDeb, - linuxlinuxRpm, + const macos_arm: Version = { os: 'macOS', arch: 'arm64', ending: '-mac-arm64.dmg' } + const macos_x64: Version = { os: 'macOS', arch: 'x64', ending: '-mac-x64.dmg' } + const windows_x64: Version = { os: 'Windows', arch: 'x64', ending: '-win-x64.exe' } + const windows_arm: Version = { os: 'Windows', arch: 'arm64', ending: '-win-arm64.exe' } + const linux_deb: Version = { os: 'Linux', arch: '.deb', ending: '-linux-amd64.deb' } + const linux_rpm: Version = { os: 'Linux', arch: '.rpm', ending: 'linux-x86_64.rpm' } + const android_obtainium: Version = { os: 'Obtainium', arch: '', ending: '' } + const android_arm64: Version = { os: 'Android', arch: 'arm64', ending: '-android-arm64.apk' } + const android_x86_64: Version = { os: 'Android', arch: 'x86_64', ending: '-android-x86_64.apk' } + + const desktop_versions: Version[] = [ + macos_arm, + macos_x64, + windows_x64, + windows_arm, + linux_deb, + linux_rpm, ] - let suggestedVersion = windowsX64 + const android_versions: Version[] = [android_obtainium, android_arm64, android_x86_64] + + const obtainium_url = + 'https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22space.kasper.ferrum%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fprobablykasper%2Fferrum%22%2C%22author%22%3A%22probablykasper%22%2C%22name%22%3A%22Ferrum%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22sortMethodChoice%5C%22%3A%5C%22date%5C%22%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22appAuthor%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%2C%5C%22refreshBeforeDownload%5C%22%3Afalse%2C%5C%22includeZips%5C%22%3Afalse%2C%5C%22zippedApkFilterRegEx%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3A%22GitHub%22%7D' + + let suggested_desktop = windows_x64 + onMount(() => { const browser = Bowser.getParser(window.navigator.userAgent) - const osName = browser.getOSName() - if (osName === 'macOS' || osName === 'iOS') { - suggestedVersion = macOsArm - } else if (osName === 'Windows') { - suggestedVersion = windowsX64 - } else if (osName === 'Linux' || osName === 'Chrome OS') { - suggestedVersion = linuxDeb + const os_name = browser.getOSName() + if (os_name === 'macOS' || os_name === 'iOS') { + suggested_desktop = macos_arm + } else if (os_name === 'Windows') { + suggested_desktop = windows_x64 + } else if (os_name === 'Linux' || os_name === 'Chrome OS') { + suggested_desktop = linux_deb } }) - let downloadError = '' + let download_error = '' let loading = false type LatestRelease = RestEndpointMethodTypes['repos']['getLatestRelease']['response']['data'] - function getAsset(assets: LatestRelease['assets'], version: Version) { + function get_asset(assets: LatestRelease['assets'], version: Version) { for (const asset of assets) { - if (asset.name.toLowerCase().endsWith(version.ending)) { - return asset - } + if (asset.name.toLowerCase().endsWith(version.ending)) return asset } return null } - async function innerDownload(version: Version) { - downloadError = '' + + async function inner_download(version: Version) { + download_error = '' + if (version.os === 'Obtainium') { + window.open(obtainium_url, '_blank', 'noopener,noreferrer') + return + } try { const response = await fetch( - `https://api.github.com/repos/probablykasper/ferrum/releases/latest`, + 'https://api.github.com/repos/probablykasper/ferrum/releases/latest', ) - console.log(response) - const json: LatestRelease = await response.json() - console.log(json) - if (response.status !== 200) { - downloadError = 'Could not download' + download_error = 'Could not download' console.error('Error response from GitHub', json) return } - - const asset = getAsset(json.assets, version) + const asset = get_asset(json.assets, version) if (asset === null) { - downloadError = 'No file found' + download_error = 'No file found' console.error('No file found') return } - console.log(asset) location.href = asset.browser_download_url } catch (error) { - downloadError = 'Network error' + download_error = 'Network error' console.error(error) } } + async function download(version: Version) { loading = true - await innerDownload(version) + await inner_download(version) loading = false } -
- {#if downloadError} - -
- -
- +
+ +
+ + +
+
+ + +
+ + +
-
+ + Android
- - -
-
- {#each versionList as version} - - {/each} +

Currently library browser only

+ + + + + + +
- - -