Spaces:
Running
Running
File size: 1,040 Bytes
94004a2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /**
* openExternal — open a URL in the user's default browser.
*
* In a Tauri desktop app `window.open()` is blocked by the webview.
* This helper uses `@tauri-apps/plugin-opener` when available and
* falls back to `window.open()` for browser-based dev mode.
*/
const isTauri =
typeof window !== 'undefined' &&
!!((window as any).__TAURI_INTERNALS__ || (window as any).__TAURI__);
let _openUrl: ((url: string) => Promise<void>) | null = null;
/**
* Open an external URL in the system default browser.
* @param {string} url — the URL to open
*/
export async function openExternal(url: string) {
if (isTauri) {
try {
if (!_openUrl) {
const mod = await import('@tauri-apps/plugin-opener');
_openUrl = mod.openUrl as (url: string) => Promise<void>;
}
await _openUrl(url);
return;
} catch (err) {
console.warn('[openExternal] Tauri opener failed, falling back:', err);
}
}
// Fallback for browser dev mode
window.open(url, '_blank', 'noopener,noreferrer');
}
|