Request capabilities part 2

This commit is contained in:
yflory
2019-07-13 11:47:58 +02:00
parent 2ba6e40161
commit 60bea6b33b
8 changed files with 110 additions and 20 deletions

View File

@@ -1260,10 +1260,10 @@ define([
if (i >= 300) { // One minute timeout
clearInterval(it);
}
i++
i++;
}, 200);
return;
};
}
var fData = channel.data || {};
if (fData.owners) {
var friends = store.proxy.friends || {};
@@ -1280,9 +1280,7 @@ define([
});
});
if (owner) {
console.log(owner);
if (data.send) {
// XXX send the pad title here...? or get it from the recipient's drive
var myData = Messaging.createData(store.proxy);
delete myData.channel;
store.mailbox.sendTo('REQUEST_PAD_ACCESS', {
@@ -1302,6 +1300,40 @@ define([
}
cb({sent: false});
};
Store.givePadAccess = function (clientId, data, cb) {
var edPublic = store.proxy.edPublic;
var channel = data.channel;
var res = store.manager.findChannel(channel);
if (!data.user || !data.user.notifications || !data.user.curvePublic) {
return void cb({error: 'EINVAL'});
}
var href, title;
if (!res.some(function (obj) {
if (obj.data &&
Array.isArray(obj.data.owners) && obj.data.owners.indexOf(edPublic) !== -1 &&
obj.data.href) {
href = obj.data.href;
title = obj.data.title;
return true;
}
})) { return void cb({error: 'ENOTFOUND'}); }
var myData = Messaging.createData(store.proxy);
delete myData.channel;
store.mailbox.sendTo("GIVE_PAD_ACCESS", {
channel: channel,
href: href,
title: title,
user: myData
}, {
channel: data.user.notifications,
curvePublic: data.user.curvePublic
});
cb();
};
// GET_FULL_HISTORY from sframe-common-outer
Store.getFullHistory = function (clientId, data, cb) {

View File

@@ -202,9 +202,8 @@ define([
};
// Incoming edit rights request: add data before sending it to inner
handlers['REQUEST_PAD_ACCESS'] = function (ctx, box, data, hash) {
handlers['REQUEST_PAD_ACCESS'] = function (ctx, box, data, cb) {
var msg = data.msg;
var hash = data.hash;
var content = msg.content;
if (msg.author !== content.user.curvePublic) { return void cb(true); }
@@ -214,9 +213,9 @@ define([
if (!res.length) { return void cb(true); }
var edPublic = store.proxy.edPublic;
var edPublic = ctx.store.proxy.edPublic;
var title;
if (!res.some(functon (obj) {
if (!res.some(function (obj) {
if (obj.data &&
Array.isArray(obj.data.owners) && obj.data.owners.indexOf(edPublic) !== -1 &&
obj.data.href) {
@@ -226,8 +225,29 @@ define([
})) { return void cb(true); }
content.title = title;
cb(false);
};
});
handlers['GIVE_PAD_ACCESS'] = function (ctx, box, data, cb) {
var msg = data.msg;
var content = msg.content;
if (msg.author !== content.user.curvePublic) { return void cb(true); }
var channel = content.channel;
var res = ctx.store.manager.findChannel(channel);
var title;
res.forEach(function (obj) {
if (obj.data && !obj.data.href) {
if (!title) { title = obj.data.filename || obj.data.title; }
obj.data.href = content.href;
}
});
content.title = title || content.title;
cb(false);
};
return {
add: function (ctx, box, data, cb) {

View File

@@ -79,6 +79,7 @@ define([
GET_HISTORY_RANGE: Store.getHistoryRange,
IS_NEW_CHANNEL: Store.isNewChannel,
REQUEST_PAD_ACCESS: Store.requestPadAccess,
GIVE_PAD_ACCESS: Store.givePadAccess,
// Drive
DRIVE_USEROBJECT: Store.userObjectCommand,
// Settings,