Fix shared folders access list

pull/1/head
yflory 4 years ago
parent 60e3fc7bd9
commit 701d350fac

@ -67,6 +67,8 @@ define([
modules: {} modules: {}
}; };
Store.onReadyEvt = onReadyEvt;
var getStore = function (teamId) { var getStore = function (teamId) {
if (!teamId) { return store; } if (!teamId) { return store; }
try { try {
@ -2242,6 +2244,7 @@ define([
isNew: isNew, isNew: isNew,
network: store.network || store.networkPromise, network: store.network || store.networkPromise,
store: s, store: s,
Store: Store,
isNewChannel: Store.isNewChannel isNewChannel: Store.isNewChannel
}, id, data, cb); }, id, data, cb);
}; };

@ -164,6 +164,16 @@ define([
readOnly: !Boolean(secondaryKey) readOnly: !Boolean(secondaryKey)
}; };
// If there is an allow list and we're offline, try again when we're synced
var onRejected = function (allowed, _cb) {
var cb = Util.once(Util.mkAsync(_cb));
if (store.offline && config.Store) {
config.Store.onReadyEvt.reg(cb);
return;
}
cb('ERESTRICTED');
};
var owners = data.owners; var owners = data.owners;
var listmapConfig = { var listmapConfig = {
data: {}, data: {},
@ -179,7 +189,8 @@ define([
metadata: { metadata: {
validateKey: secret.keys.validateKey || undefined, validateKey: secret.keys.validateKey || undefined,
owners: owners owners: owners
} },
onRejected: onRejected
}; };
var rt = sf.rt = Listmap.create(listmapConfig); var rt = sf.rt = Listmap.create(listmapConfig);
rt.proxy.on('cacheready', function () { rt.proxy.on('cacheready', function () {
@ -246,8 +257,6 @@ define([
return void cb(); return void cb();
} }
if (info.error === "ERESTRICTED" ) { if (info.error === "ERESTRICTED" ) {
// This shouldn't happen: allow list are disabled for shared folders
// but call "cb" to make sure we won't block the initial "waitFor"
sf.teams.forEach(function (obj) { sf.teams.forEach(function (obj) {
obj.store.manager.restrictedProxy(obj.id, secret.channel); obj.store.manager.restrictedProxy(obj.id, secret.channel);
}); });
@ -326,6 +335,7 @@ define([
network: network, network: network,
store: s, store: s,
updatePassword: true, updatePassword: true,
Store: Store,
isNewChannel: Store.isNewChannel isNewChannel: Store.isNewChannel
}, sfId, sf, waitFor()); }, sfId, sf, waitFor());
if (!s.rpc) { return; } if (!s.rpc) { return; }
@ -356,6 +366,7 @@ define([
SF.load({ SF.load({
network: network, network: network,
store: store, store: store,
Store: Store,
isNewChannel: Store.isNewChannel isNewChannel: Store.isNewChannel
}, id, sf, waitFor(function () { }, id, sf, waitFor(function () {
progress({ progress({

@ -280,6 +280,7 @@ define([
isNew: isNew, isNew: isNew,
network: ctx.store.network, network: ctx.store.network,
store: team, store: team,
Store: ctx.Store,
isNewChannel: ctx.Store.isNewChannel isNewChannel: ctx.Store.isNewChannel
}, id, data, cb); }, id, data, cb);
}; };

Loading…
Cancel
Save