Add notification when a pinned shared folder has been destroyed

This commit is contained in:
yflory 2023-09-12 18:36:57 +02:00
parent 6acf8aa150
commit d9741d53dc
5 changed files with 80 additions and 2 deletions

View File

@ -407,6 +407,28 @@ define([
}
};
handlers['SF_DELETED'] = function(common, data) {
var content = data.content;
var msg = content.msg;
// Display the notification
var title = Util.fixHTML(msg.content.title);
var teamName = Util.fixHTML(msg.content.teamName);
Messages.dph_sf_destroyed = "Your shared folder <em>{0}</em> has been destroyed by its owner."; // XXX
Messages.dph_sf_destroyed_team= "The shared folder <em>{0}</em> from your team <b>{1}</b> has been destroyed by its owner."; // XXX
content.getFormatText = function() {
if (teamName) {
return Messages._getKey('dph_sf_destroyed_team', [title, teamName]);
}
return Messages._getKey('dph_sf_destroyed', [title]);
};
if (!content.archived) {
content.dismissHandler = defaultDismiss(common, data);
}
};
handlers['MOVE_TODO'] = function(common, data) {
var content = data.content;
var msg = content.msg;

View File

@ -639,6 +639,7 @@ define([
}
};
cb(JSON.parse(JSON.stringify(metadata)));
return metadata;
};
Store.onMaintenanceUpdate = function (uid) {
@ -2726,6 +2727,7 @@ define([
loadSharedFolder: loadSharedFolder,
settings: proxy.settings,
removeOwnedChannel: function (channel, cb) { Store.removeOwnedChannel('', channel, cb); },
store: store,
Store: Store
}, {
outer: true,

View File

@ -794,6 +794,29 @@ define([
cb(true);
};
var sfDeleted = {};
handlers['SF_DELETED'] = function (ctx, box, data, cb) {
var msg = data.msg;
var content = msg.content;
var teamId = content.team;
var sfId = content.sfId;
if (sfDeleted[sfId]) { return void cb(true); }
sfDeleted[sfId] = 1;
// If it's a team SF, add the team name here
if (!teamId) { return void cb(false); }
var team = ctx.store.proxy.teams[teamId];
content.teamName = team.metadata && team.metadata.name;
cb(false);
};
removeHandlers['SF_DELETED'] = function (ctx, box, data) {
var id = data.content.sfId;
delete sfDeleted[id];
};
return {
add: function (ctx, box, data, cb) {
/**

View File

@ -319,8 +319,10 @@ define([
}
ctx.Store.removeOwnedChannel('', data, cb);
},
Store: ctx.Store
Store: ctx.Store,
store: ctx.store
}, {
teamId: team.id,
outer: true,
edPublic: keys.drive.edPublic,
loggedIn: true,

View File

@ -70,6 +70,30 @@ define([
delete Env.folders[id];
};
var sendNotification = (Env, sfId, title) => {
var mailbox = Env.store.mailbox;
if (!mailbox) { return; }
var team = Env.cfg.teamId;
var box;
if (team) {
let teams = Env.store.modules['team'].getTeamsData();
box = teams[team];
} else {
let md = Env.Store.getMetadata(null, null, () => {});
box = md.user;
}
mailbox.sendTo('SF_DELETED', {
sfId: sfId,
team: team,
title: title
}, {
curvePublic: box.curvePublic,
channel: box.notifications
}, (err) => {
console.error(err);
});
};
// Password may have changed
var deprecateProxy = function (Env, id, channel, reason) {
if (Env.folders[id] && Env.folders[id].deleting) {
@ -88,8 +112,12 @@ define([
// If it's explicitely a deletion, no need to deprecate, just delete
if (reason && reason !== "PASSWORD_CHANGE") {
var temp = Util.find(Env, ['user', 'proxy', UserObject.SHARED_FOLDERS]);
let temp = Util.find(Env, ['user', 'proxy', UserObject.SHARED_FOLDERS]);
let title = temp[id] && temp[id].lastTitle;
if (title) { sendNotification(Env, id, title); }
delete temp[id];
if (Env.Store && Env.Store.refreshDriveUI) { Env.Store.refreshDriveUI(); }
return;
}
@ -1317,6 +1345,7 @@ define([
unpinPads: data.unpin,
onSync: data.onSync,
Store: data.Store,
store: data.store,
removeOwnedChannel: data.removeOwnedChannel,
loadSharedFolder: data.loadSharedFolder,
cfg: uoConfig,