diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index f733e3adf..681f1d575 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -2175,6 +2175,11 @@ define([ updateMetadata: function () { broadcast([], "UPDATE_METADATA"); }, + updateDrive: function () { + sendDriveEvent('DRIVE_CHANGE', { + path: ['drive', 'filesData'] + }); + }, pinPads: function (data, cb) { Store.pinPads(null, data, cb); }, }, waitFor, function (ev, data, clients, _cb) { var cb = Util.once(_cb || function () {}); diff --git a/www/common/outer/mailbox-handlers.js b/www/common/outer/mailbox-handlers.js index 6e10cd5a2..253157361 100644 --- a/www/common/outer/mailbox-handlers.js +++ b/www/common/outer/mailbox-handlers.js @@ -482,6 +482,31 @@ define([ cb(true); }; + handlers['OWNED_PAD_REMOVED'] = function (ctx, box, data, cb) { + var msg = data.msg; + var content = msg.content; + + if (msg.author !== content.user.curvePublic) { return void cb(true); } + if (!content.channel) { + console.log('Remove invalid notification'); + return void cb(true); + } + + var channel = content.channel; + var res = ctx.store.manager.findChannel(channel); + + res.forEach(function (obj) { + var paths = ctx.store.manager.findFile(obj.id); + ctx.store.manager.delete({ + paths: paths + }, function () { + ctx.updateDrive(); + }); + }); + + cb(true); + }; + return { diff --git a/www/common/outer/mailbox.js b/www/common/outer/mailbox.js index 1def668e1..b84e98dd7 100644 --- a/www/common/outer/mailbox.js +++ b/www/common/outer/mailbox.js @@ -422,6 +422,7 @@ proxy.mailboxes = { store: store, pinPads: cfg.pinPads, updateMetadata: cfg.updateMetadata, + updateDrive: cfg.updateDrive, emit: emit, clients: [], boxes: {}, diff --git a/www/common/proxy-manager.js b/www/common/proxy-manager.js index 1bd88e90b..796c52898 100644 --- a/www/common/proxy-manager.js +++ b/www/common/proxy-manager.js @@ -119,6 +119,7 @@ define([ // If it's not a shared folder, check the pads if (!data) { data = Env.user.userObject.getFileData(id, editable); } ret.push({ + id: id, data: data, userObject: Env.user.userObject }); @@ -126,6 +127,7 @@ define([ Object.keys(Env.folders).forEach(function (fId) { Env.folders[fId].userObject.findChannels([channel]).forEach(function (id) { ret.push({ + id: id, fId: fId, data: Env.folders[fId].userObject.getFileData(id, editable), userObject: Env.folders[fId].userObject @@ -1095,9 +1097,11 @@ define([ // Store getChannelsList: callWithEnv(getChannelsList), addPad: callWithEnv(addPad), + delete: callWithEnv(_delete), // Tools findChannel: callWithEnv(findChannel), findHref: callWithEnv(findHref), + findFile: callWithEnv(findFile), getEditHash: callWithEnv(getEditHash), user: Env.user, folders: Env.folders