feat: expose file trash metadata

This commit is contained in:
2026-06-28 17:03:12 +08:00
parent ed4b117a94
commit e5bdaec0aa
9 changed files with 145 additions and 1 deletions
@@ -266,6 +266,12 @@ export function createPluginAPI(pluginId) {
return App.TrashVaultPath(pluginId, relativePath);
});
},
listTrash: function() {
assertActive('files.listTrash');
return callBackend(pluginId, 'files.listTrash', function() {
return App.ListVaultTrash(pluginId);
});
},
openExternal: function(relativePath) {
assertActive('files.openExternal(' + relativePath + ')');
return callBackendErrorString(pluginId, 'files.openExternal(' + relativePath + ')', function() {
+10 -1
View File
@@ -218,6 +218,7 @@
};
var vaultFiles = makeDefaultVaultFiles();
var externalOpens = [];
var trashEntries = [];
window.__wailsMockExternalOpens = [];
var workspaceTree = makeDefaultWorkspaceTree();
var reloadResponseMode = 'tuple';
@@ -1342,9 +1343,17 @@
if (!vaultFiles[norm.path]) return Promise.resolve([{}, 'not-found: ' + norm.path]);
var trashId = 'mock-' + Date.now() + '-' + Math.random().toString(16).slice(2);
var trashPath = '.verstak/trash/files/' + trashId + '/' + baseName(norm.path);
var originalType = vaultFiles[norm.path].type || 'file';
var moving = Object.keys(vaultFiles).filter(function (path) { return path === norm.path || path.indexOf(norm.path + '/') === 0; });
moving.forEach(function (path) { delete vaultFiles[path]; });
return Promise.resolve([{ originalPath: norm.path, trashPath: trashPath, trashId: trashId, deletedAt: new Date().toISOString() }, '']);
var entry = { originalPath: norm.path, trashPath: trashPath, trashId: trashId, deletedAt: new Date().toISOString(), originalType: originalType, basename: baseName(norm.path) };
trashEntries.unshift(entry);
return Promise.resolve([entry, '']);
},
ListVaultTrash: function (pluginId) {
var err = requirePluginPermission(pluginId, 'files.delete');
if (err) return Promise.resolve([[], err]);
return Promise.resolve([trashEntries.slice(), '']);
},
OpenVaultPathExternal: function (pluginId, relativePath) {
var err = requirePluginPermission(pluginId, 'files.openExternal');
+2
View File
@@ -126,6 +126,8 @@ export function SubscribePluginEvent(arg1:string,arg2:string):Promise<string>;
export function TrashVaultPath(arg1:string,arg2:string):Promise<files.TrashResult|string>;
export function ListVaultTrash(arg1:string):Promise<any[]|string>;
export function TrashWorkspace(arg1:string):Promise<workspace.TrashResult|string>;
export function UpdateAppSettings(arg1:Record<string, any>):Promise<string>;
+4
View File
@@ -238,6 +238,10 @@ export function TrashVaultPath(arg1, arg2) {
return window['go']['api']['App']['TrashVaultPath'](arg1, arg2);
}
export function ListVaultTrash(arg1) {
return window['go']['api']['App']['ListVaultTrash'](arg1);
}
export function TrashWorkspace(arg1) {
return window['go']['api']['App']['TrashWorkspace'](arg1);
}