feat: add flatpak support for linux (#6387)
Signed-off-by: The-Best-Codes <bestcodes.official@gmail.com>
This commit is contained in:
@@ -7,7 +7,8 @@ const FALLBACK_URL = "https://github.com/block/goose/releases/latest";
|
||||
const LinuxDesktopInstallButtons = () => {
|
||||
const [downloadUrls, setDownloadUrls] = useState({
|
||||
deb: FALLBACK_URL,
|
||||
rpm: FALLBACK_URL
|
||||
rpm: FALLBACK_URL,
|
||||
flatpak: FALLBACK_URL
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
@@ -17,7 +18,7 @@ const LinuxDesktopInstallButtons = () => {
|
||||
const cached = localStorage.getItem('goose-release-cache');
|
||||
const cacheTime = localStorage.getItem('goose-release-cache-time');
|
||||
const now = Date.now();
|
||||
|
||||
|
||||
if (cached && cacheTime && (now - parseInt(cacheTime)) < 3600000) {
|
||||
// Use cached data if less than 1 hour old
|
||||
setDownloadUrls(JSON.parse(cached));
|
||||
@@ -27,25 +28,25 @@ const LinuxDesktopInstallButtons = () => {
|
||||
// Fetch latest release from GitHub API
|
||||
const response = await fetch('https://api.github.com/repos/block/goose/releases/latest');
|
||||
if (!response.ok) throw new Error('API request failed');
|
||||
|
||||
|
||||
const release = await response.json();
|
||||
const assets = release.assets || [];
|
||||
|
||||
// Find DEB and RPM files
|
||||
|
||||
// Find DEB, RPM, and Flatpak files
|
||||
const debAsset = assets.find(asset => asset.name.includes('.deb') && asset.name.includes('amd64'));
|
||||
const rpmAsset = assets.find(asset => asset.name.includes('.rpm') && asset.name.includes('x86_64'));
|
||||
|
||||
if (debAsset && rpmAsset) {
|
||||
const newUrls = {
|
||||
deb: debAsset.browser_download_url,
|
||||
rpm: rpmAsset.browser_download_url
|
||||
};
|
||||
|
||||
// Update state and cache
|
||||
setDownloadUrls(newUrls);
|
||||
localStorage.setItem('goose-release-cache', JSON.stringify(newUrls));
|
||||
localStorage.setItem('goose-release-cache-time', now.toString());
|
||||
}
|
||||
const flatpakAsset = assets.find(asset => asset.name.endsWith('.flatpak'));
|
||||
|
||||
const newUrls = {
|
||||
deb: debAsset?.browser_download_url || FALLBACK_URL,
|
||||
rpm: rpmAsset?.browser_download_url || FALLBACK_URL,
|
||||
flatpak: flatpakAsset?.browser_download_url || FALLBACK_URL
|
||||
};
|
||||
|
||||
// Update state and cache
|
||||
setDownloadUrls(newUrls);
|
||||
localStorage.setItem('goose-release-cache', JSON.stringify(newUrls));
|
||||
localStorage.setItem('goose-release-cache-time', now.toString());
|
||||
} catch (error) {
|
||||
console.warn('Failed to fetch latest release, using fallback URLs:', error);
|
||||
// Fallback URLs are already set in initial state
|
||||
@@ -71,9 +72,15 @@ const LinuxDesktopInstallButtons = () => {
|
||||
>
|
||||
<IconDownload /> RPM Package (RHEL/Fedora)
|
||||
</Link>
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to={downloadUrls.flatpak}
|
||||
>
|
||||
<IconDownload /> Flatpak (Universal)
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default LinuxDesktopInstallButtons;
|
||||
export default LinuxDesktopInstallButtons;
|
||||
|
||||
Reference in New Issue
Block a user