mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-06-13 02:07:54 +02:00
feat: linux support preview
This commit is contained in:
@@ -19,7 +19,7 @@ interface GithubRelease {
|
||||
hash?: string;
|
||||
}>;
|
||||
published_at: string;
|
||||
is_alpha: boolean;
|
||||
is_nightly: boolean;
|
||||
}
|
||||
|
||||
interface BrowserVersionInfo {
|
||||
@@ -231,7 +231,7 @@ export function useBrowserDownload() {
|
||||
tag_name: versionInfo.version,
|
||||
assets: [],
|
||||
published_at: versionInfo.date,
|
||||
is_alpha: versionInfo.is_prerelease,
|
||||
is_nightly: versionInfo.is_prerelease,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -272,7 +272,7 @@ export function useBrowserDownload() {
|
||||
tag_name: versionInfo.version,
|
||||
assets: [],
|
||||
published_at: versionInfo.date,
|
||||
is_alpha: versionInfo.is_prerelease,
|
||||
is_nightly: versionInfo.is_prerelease,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -325,6 +325,22 @@ export function useBrowserDownload() {
|
||||
setIsDownloading(true);
|
||||
|
||||
try {
|
||||
// Check browser compatibility before attempting download
|
||||
const isSupported = await invoke<boolean>(
|
||||
"is_browser_supported_on_platform",
|
||||
{ browserStr },
|
||||
);
|
||||
if (!isSupported) {
|
||||
const supportedBrowsers = await invoke<string[]>(
|
||||
"get_supported_browsers",
|
||||
);
|
||||
throw new Error(
|
||||
`${browserName} is not supported on your platform. Supported browsers: ${supportedBrowsers
|
||||
.map(getBrowserDisplayName)
|
||||
.join(", ")}`,
|
||||
);
|
||||
}
|
||||
|
||||
await invoke("download_browser", { browserStr, version });
|
||||
await loadDownloadedVersions(browserStr);
|
||||
} catch (error) {
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
export interface BrowserSupportInfo {
|
||||
supportedBrowsers: string[];
|
||||
isLoading: boolean;
|
||||
error: string | null;
|
||||
}
|
||||
|
||||
export function useBrowserSupport() {
|
||||
const [supportedBrowsers, setSupportedBrowsers] = useState<string[]>([]);
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const loadSupportedBrowsers = async () => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
setError(null);
|
||||
const browsers = await invoke<string[]>("get_supported_browsers");
|
||||
setSupportedBrowsers(browsers);
|
||||
} catch (err) {
|
||||
console.error("Failed to load supported browsers:", err);
|
||||
setError(
|
||||
err instanceof Error
|
||||
? err.message
|
||||
: "Failed to load supported browsers",
|
||||
);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
void loadSupportedBrowsers();
|
||||
}, []);
|
||||
|
||||
const isBrowserSupported = (browser: string): boolean => {
|
||||
return supportedBrowsers.includes(browser);
|
||||
};
|
||||
|
||||
const checkBrowserSupport = async (browser: string): Promise<boolean> => {
|
||||
try {
|
||||
return await invoke<boolean>("is_browser_supported_on_platform", {
|
||||
browserStr: browser,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(`Failed to check support for browser ${browser}:`, err);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
supportedBrowsers,
|
||||
isLoading,
|
||||
error,
|
||||
isBrowserSupported,
|
||||
checkBrowserSupport,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user