fix(export): persist macos destination volume identity

This commit is contained in:
Guoyu Su authored and GitHub committed 2026-08-31 23:49:01 +08:00
1 parent d411f04975
commit bc41e8d76d
3 files changed
+366 -47

No files matched your search

@@ -305,6 +305,8 @@ async function startExport() {
});
if (!path) return;
filePath = path;
const { dirname } = await import("@tauri-apps/api/path");
await api.recordDatabaseExportDestination(await dirname(path));
} catch (e: any) {
toast(e?.message || String(e), 5000);
return;
@@ -415,6 +417,7 @@ async function startAllDatabasesExport() {
});
if (!path || Array.isArray(path)) return;
directoryPath = path;
await api.recordDatabaseExportDestination(path);
} catch (e: any) {
toast(e?.message || String(e), 5000);
return;
@@ -0,0 +1,36 @@
import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const dialogSource = readFileSync(new URL("../DatabaseExportDialog.vue", import.meta.url), "utf8");
function functionSource(name: string, nextName: string) {
const start = dialogSource.indexOf(`async function ${name}(`);
const end = dialogSource.indexOf(`async function ${nextName}(`, start);
expect(start).toBeGreaterThanOrEqual(0);
expect(end).toBeGreaterThan(start);
return dialogSource.slice(start, end);
}
describe("DatabaseExportDialog destination identity", () => {
it("records a manually selected file destination before starting a single-database export", () => {
const source = functionSource("startExport", "startAllDatabasesExport");
const selectedPath = source.indexOf("const path = await save(");
const recordedDestination = source.indexOf("recordDatabaseExportDestination(await dirname(path))");
const exportStarted = source.indexOf("isExporting.value = true");
expect(selectedPath).toBeGreaterThanOrEqual(0);
expect(recordedDestination).toBeGreaterThan(selectedPath);
expect(exportStarted).toBeGreaterThan(recordedDestination);
});
it("records a manually selected directory before starting an all-databases export", () => {
const source = functionSource("startAllDatabasesExport", "cancelExport");
const selectedPath = source.indexOf("const path = await openDialog(");
const recordedDestination = source.indexOf("recordDatabaseExportDestination(path)");
const exportStarted = source.indexOf("isExporting.value = true");
expect(selectedPath).toBeGreaterThanOrEqual(0);
expect(recordedDestination).toBeGreaterThan(selectedPath);
expect(exportStarted).toBeGreaterThan(recordedDestination);
});
});