Notes/apps/website/src/lib/download-helper.ts

114 lines
4.6 KiB
TypeScript
Raw Normal View History

export type Architecture = 'x64' | 'arm64';
type Platform = 'mac' | 'windows' | 'linux';
type Apps = 'desktop';
export const downloadMatrix = {
desktop: {
windows: {
title: "Windows",
downloads: {
exe: {
recommended: true,
name: "Installer (.exe)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-windows-x64.exe",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-windows-arm64.exe"
},
zip: {
name: "Portable (.zip)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-windows-x64.zip",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-windows-arm64.zip"
}
}
},
linux: {
title: "Linux",
downloads: {
deb: {
name: "Debian/Ubuntu (.deb)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-x64.deb",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-arm64.deb"
},
rpm: {
name: "Red Hat-based distributions (.rpm)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-x64.rpm",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-arm64.rpm"
},
flatpak: {
name: "Flatpak (.flatpak)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-x64.flatpak",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-arm64.flatpak"
},
zip: {
name: "Portable (.zip)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-x64.zip",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-linux-arm64.zip"
}
}
},
mac: {
title: "macOS",
downloads: {
dmg: {
recommended: true,
name: "Installer (.dmg)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-macos-x64.dmg",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-macos-arm64.dmg"
},
zip: {
name: "Portable (.zip)",
x64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-macos-x64.zip",
arm64: "https://github.com/TriliumNext/Notes/releases/download/nightly/TriliumNextNotes-develop-macos-arm64.zip"
}
}
}
}
};
function getArchitecture(): Architecture {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.includes('arm64') || userAgent.includes('aarch64')) {
return 'arm64';
}
return "x64";
}
function getPlatform(): Platform {
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.includes('macintosh') || userAgent.includes('mac os x')) {
return "mac";
} else if (userAgent.includes('windows') || userAgent.includes('win32')) {
return "windows";
} else {
return "linux";
}
}
function getDownloadLink(platform: Platform, architecture: Architecture) {
const baseUrl = 'https://example.com/downloads';
let url;
if (platform === 'mac') {
url = `${baseUrl}/mac-${architecture}.dmg`;
} else if (platform === 'windows') {
url = `${baseUrl}/windows-${architecture}.exe`;
} else if (platform === 'linux') {
url = `${baseUrl}/linux-${architecture}.tar.gz`;
} else {
url = `${baseUrl}/other-${architecture}.zip`;
}
return {
url: url,
platform: platform,
architecture: architecture
};
}
export function getRecommendedDownload() {
const architecture = getArchitecture();
const platform = getPlatform();
return getDownloadLink(platform, architecture);
}