Refresh access modal when other tabs make changes

pull/1/head
yflory 5 years ago
parent bd0e4e66bb
commit 57c360ebf6

@ -16,6 +16,25 @@ define([
Messages.teams = "Teams"; // XXX Messages.teams = "Teams"; // XXX
Messages.access_noContact = "No other contact to add"; // XXX Messages.access_noContact = "No other contact to add"; // XXX
var evRedrawAll = Util.mkEvent();
// Override metadata values from data
var override = function (data, obj) {
data.owners = obj.owners;
data.expire = obj.expire;
data.pending_owners = obj.pending_owners;
data.mailbox = obj.mailbox;
data.restricted = obj.restricted;
data.allowed = obj.allowed;
};
var loadMetadata = function (common, data, waitFor, redraw) {
common.getPadMetadata({
channel: data.channel
}, waitFor(function (md) {
override(data, md);
if (redraw) { evRedrawAll.fire(redraw); }
}));
};
var getOwnersTab = function (common, data, opts, _cb) { var getOwnersTab = function (common, data, opts, _cb) {
var cb = Util.once(Util.mkAsync(_cb)); var cb = Util.once(Util.mkAsync(_cb));
@ -293,12 +312,7 @@ define([
redrawAll = function (reload) { redrawAll = function (reload) {
nThen(function (waitFor) { nThen(function (waitFor) {
if (!reload) { return; } if (!reload) { return; }
common.getPadMetadata({ loadMetadata(common, data, waitFor, "owner");
channel: data.channel
}, waitFor(function (md) {
data.owners = md.owners || [];
data.pending_owners = md.pending_owners || [];
}));
}).nThen(function () { }).nThen(function () {
owners = data.owners || []; owners = data.owners || [];
pending_owners = data.pending_owners || []; pending_owners = data.pending_owners || [];
@ -310,14 +324,12 @@ define([
}; };
redrawAll(); redrawAll();
var handler = sframeChan.on('EV_RT_METADATA', function (md) { evRedrawAll.reg(function (type) {
if (!$div1.length) { if (type === "owner") { return; }
return void handler.stop(); setTimeout(function () {
}
data.owners = md.owners || [];
data.pending_owners = md.pending_owners || [];
redrawAll(); redrawAll();
}); });
});
// Create modal // Create modal
var link = h('div.cp-share-columns', [ var link = h('div.cp-share-columns', [
@ -593,13 +605,7 @@ define([
redrawAll = function (reload) { redrawAll = function (reload) {
nThen(function (waitFor) { nThen(function (waitFor) {
if (!reload) { return; } if (!reload) { return; }
common.getPadMetadata({ loadMetadata(common, data, waitFor, "allow");
channel: data.channel
}, waitFor(function (md) {
data.owners = md.owners;
data.restricted = md.restricted;
data.allowed = md.allowed;
}));
}).nThen(function () { }).nThen(function () {
owners = data.owners || []; owners = data.owners || [];
restricted = data.restricted || false; restricted = data.restricted || false;
@ -613,15 +619,12 @@ define([
}; };
redrawAll(); redrawAll();
var handler = sframeChan.on('EV_RT_METADATA', function (md) { evRedrawAll.reg(function (type) {
if (!$div1.length) { if (type === "allow") { return; }
return void handler.stop(); setTimeout(function () {
}
data.owners = md.owners || [];
data.restricted = md.restricted;
data.allowed = md.allowed;
redrawAll(); redrawAll();
}); });
});
cb(void 0, link); cb(void 0, link);
}; };
@ -938,27 +941,21 @@ define([
return h('div', content); return h('div', content);
}; };
var redraw = function () { var redraw = function (right) {
if (!right) {
$div1.empty(); $div1.empty();
$div1.append(drawLeft()); $div1.append(drawLeft());
}
$div2.empty(); $div2.empty();
$div2.append(drawRight()); $div2.append(drawRight());
}; };
var handler = sframeChan.on('EV_RT_METADATA', function (md) {
if (!$div.length) {
handler.stop();
return;
}
md = JSON.parse(JSON.stringify(md));
data.owners = md.owners;
data.expire = md.expire;
data.pending_owners = md.pending_owners;
data.mailbox = md.mailbox;
data.restricted = md.restricted;
data.allowed = md.allowed;
redraw(); redraw();
evRedrawAll.reg(function (ownersOrAllow) {
setTimeout(function () {
redraw(ownersOrAllow);
});
}); });
redraw();
cb(void 0, $div); cb(void 0, $div);
}; };
@ -989,12 +986,7 @@ define([
channel: opts.channel // optional, fallback to current pad channel: opts.channel // optional, fallback to current pad
}, waitFor(function (obj) { }, waitFor(function (obj) {
if (obj && obj.error) { console.error(obj.error); return; } if (obj && obj.error) { console.error(obj.error); return; }
data.owners = obj.owners; loadMetadata(common, data, waitFor);
data.expire = obj.expire;
data.pending_owners = obj.pending_owners;
data.mailbox = obj.mailbox;
data.restricted = obj.restricted;
data.allowed = obj.allowed;
})); }));
}).nThen(function () { }).nThen(function () {
cb(void 0, data); cb(void 0, data);
@ -1075,6 +1067,15 @@ define([
wide: true wide: true
}); });
cb (void 0, modal); cb (void 0, modal);
var sframeChan = common.getSframeChannel();
var handler = sframeChan.on('EV_RT_METADATA', function (md) {
if (!$(modal).length) {
return void handler.stop();
}
override(data, Util.clone(md));
evRedrawAll.fire();
});
}); });
}; };

Loading…
Cancel
Save