Request capabilities part 2
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user