import type { PlatformFilesystem, FileFilter } from '@/platform/types'; export const tauriFilesystem: PlatformFilesystem = { async saveFile(filename: string, blob: Blob, filters?: FileFilter[]) { try { const { save } = await import('@tauri-apps/plugin-dialog'); const filePath = await save({ defaultPath: filename, filters: filters || [], }); if (filePath) { const { writeBinaryFile } = await import('@tauri-apps/plugin-fs'); const arrayBuffer = await blob.arrayBuffer(); await writeBinaryFile(filePath, new Uint8Array(arrayBuffer)); } } catch (error) { console.error('Failed to use Tauri dialog, falling back to browser download:', error); // Fall back to browser download if Tauri dialog fails const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(url); document.body.removeChild(a); } }, };