Teams: setPadAttribute and getPadAttribute

This commit is contained in:
yflory
2019-09-05 18:25:14 +02:00
parent 4c339afc6c
commit 35a429d30c
3 changed files with 50 additions and 13 deletions

View File

@@ -761,18 +761,42 @@ define([
* - attr (Array)
* - value (String)
*/
var getAllStores = function () {
var stores = [store];
var teamModule = store.modules['team'];
if (teamModule) {
var teams = teamModule.getTeams().map(function (id) {
return teamModule.getTeam(id);
});
Array.prototype.push.apply(stores, teams);
}
return stores;
};
Store.setPadAttribute = function (clientId, data, cb) {
store.manager.setPadAttribute(data, function () {
sendDriveEvent('DRIVE_CHANGE', {
path: ['drive', UserObject.FILES_DATA]
}, clientId);
onSync(cb);
getAllStores.forEach(function (s) {
s.manager.setPadAttribute(data, function () {
var send = s.id ? s.sendEvent : sendDriveEvent;
send('DRIVE_CHANGE', {
path: ['drive', UserObject.FILES_DATA]
}, clientId);
onSync(s.id, cb);
});
});
};
Store.getPadAttribute = function (clientId, data, cb) {
store.manager.getPadAttribute(data, function (err, val) {
if (err) { return void cb({error: err}); }
cb(val);
var res = {};
nThen(function (waitFor) {
getAllStores.forEach(function (s) {
s.manager.getPadAttribute(data, waitFor(function (err, val) {
if (err) { return; }
if (!res.value || res.atime < val.atime) {
res.atime = val.atime;
res.value = val.value;
}
}));
});
}).nThen(function () {
cb(res.value);
});
};

View File

@@ -37,11 +37,13 @@ define([
// load shared folders
// ~resetPins for the team?
// getPinLimit
ctx.teams[id] = team;
cb();
};
var openChannel = function (ctx, team, id, cb) {
var openChannel = function (ctx, teamData, id, cb) {
// XXX team password?
var secret = Hash.getSecrets('team', team.href);
var secret = Hash.getSecrets('team', teamData.href);
var crypto = Crypto.createEncryptor(secret.keys);
var cfg = {
@@ -65,7 +67,8 @@ define([
// types are DRIVE_CHANGE, DRIVE_REMOVE and DRIVE_LOG
};
ctx.teams[id] = {
var team = {
id: id,
proxy: lm.proxy,
listmap: lm,
clients: [],
@@ -78,6 +81,7 @@ define([
onReady(ctx, team, id, function () {
// TODO
cb();
});
if (ctx.onReadyHandlers.length) {
ctx.onReadyHandlers.forEach(function (f) {
@@ -145,6 +149,9 @@ define([
team.getTeam = function (id) {
return ctx.teams[id];
};
team.getTeams = function () {
return Object.keys(ctx.teams);
};
team.removeClient = function (clientId) {
removeClient(ctx, clientId);
};