feat: expose plugin data storage bridge

This commit is contained in:
2026-06-29 04:27:22 +08:00
parent 874b7c7ffb
commit 7363313f1e
3 changed files with 56 additions and 2 deletions
@@ -232,6 +232,31 @@ export function createPluginAPI(pluginId) {
}
},
storage: {
data: {
read: function(name) {
assertActive('storage.data.read(' + name + ')');
if (!name) {
throw new Error('storage.data.read requires a name');
}
return callBackend(pluginId, 'storage.data.read(' + name + ')', function() {
return App.ReadPluginDataJSON(pluginId, name);
}).then(function(data) {
return data || {};
});
},
write: function(name, data) {
assertActive('storage.data.write(' + name + ')');
if (!name) {
throw new Error('storage.data.write requires a name');
}
return callBackendErrorString(pluginId, 'storage.data.write(' + name + ')', function() {
return App.WritePluginDataJSON(pluginId, name, data || {});
});
}
}
},
files: {
list: function(relativeDir) {
assertActive('files.list');
+10 -2
View File
@@ -216,6 +216,7 @@
var pluginSettings = {
'verstak.platform-test': { savedText: 'initial value' }
};
var pluginData = {};
var vaultFiles = makeDefaultVaultFiles();
var externalOpens = [];
var trashEntries = [];
@@ -1120,8 +1121,15 @@
},
ReadPluginSetting: function () { return Promise.resolve(null); },
WritePluginSetting: function () { return Promise.resolve(null); },
ReadPluginDataJSON: function () { return Promise.resolve({}); },
WritePluginDataJSON: function () { return Promise.resolve(null); },
ReadPluginDataJSON: function (pluginId, name) {
var data = (pluginData[pluginId] && pluginData[pluginId][name]) || {};
return Promise.resolve([Object.assign({}, data), '']);
},
WritePluginDataJSON: function (pluginId, name, data) {
pluginData[pluginId] = pluginData[pluginId] || {};
pluginData[pluginId][name] = Object.assign({}, data || {});
return Promise.resolve('');
},
OpenWorkbenchResource: function (pluginId, request) {
return openWorkbenchResource(pluginId, request || {}, '');
},