fix: update openExternalUrl to use invoke for Tauri command and add fallback for opener plugin

This commit is contained in:
2026-01-25 21:50:10 +11:00
parent 546135988e
commit 47b24d26ff

View File

@@ -9,15 +9,23 @@ export const openExternalUrl = async (url: string): Promise<void> => {
// Only run this in Tauri builds
if (typeof window !== 'undefined' && (window as any).__TAURI__) {
try {
console.log('[openExternalUrl] importing opener plugin...');
const { openUrl } = await import('@tauri-apps/plugin-opener');
console.log('[openExternalUrl] calling openUrl...');
await openUrl(url);
console.log('[openExternalUrl] openUrl succeeded');
console.log('[openExternalUrl] invoking open_external_url command...');
const { invoke } = await import('@tauri-apps/api/core');
await invoke('open_external_url', { url });
console.log('[openExternalUrl] command succeeded');
return;
} catch (err) {
console.error('[openExternalUrl] Tauri opener.openUrl failed:', err);
// Don't fall back to window.open in Tauri - it won't work with localhost plugin
console.error('[openExternalUrl] Tauri command failed:', err);
// Try the plugin as fallback (for mobile)
try {
console.log('[openExternalUrl] trying opener plugin fallback...');
const { openUrl } = await import('@tauri-apps/plugin-opener');
await openUrl(url);
console.log('[openExternalUrl] plugin fallback succeeded');
return;
} catch (pluginErr) {
console.error('[openExternalUrl] plugin fallback also failed:', pluginErr);
}
return;
}
}