Unfriend via mailbox

This commit is contained in:
yflory 2019-05-27 18:58:35 +02:00
parent 9c4f9378ab
commit 9d8433d104
2 changed files with 32 additions and 10 deletions

View file

@ -564,7 +564,8 @@ define([
onDirectMessage(msg, sender);
});
var removeFriend = function (curvePublic, cb) {
var removeFriend = function (curvePublic, _cb) {
var cb = Util.once(_cb);
if (typeof(cb) !== 'function') { throw new Error('NO_CALLBACK'); }
var data = getFriend(proxy, curvePublic);
@ -590,18 +591,29 @@ define([
var cryptMsg = channel.encrypt(msgStr);
try {
channel.wc.bcast(cryptMsg).then(function () {
removeFromFriendList(curvePublic, function () {
delete channels[channel.id];
emit('UNFRIEND', {
curvePublic: curvePublic,
fromMe: true
if (store.mailbox && data.curvePublic && data.notifications) {
store.mailbox.sendTo('UNFRIEND', {
curvePublic: proxy.curvePublic
}, {
channel: data.notifications,
curvePublic: data.curvePublic
}, function (obj) {
console.log(obj);
if (obj && obj.error) {
return void cb(obj);
}
removeFromFriendList(curvePublic, function () {
delete channels[channel.id];
emit('UNFRIEND', {
curvePublic: curvePublic,
fromMe: true
});
cb();
});
cb();
});
}, function (err) {
}
channel.wc.bcast(cryptMsg).then(function () {}, function (err) {
console.error(err);
cb({error: err});
});
} catch (e) {
cb({error: e});

View file

@ -132,6 +132,16 @@ define([
}
};
handlers['UNFRIEND'] = function (ctx, box, data, cb) {
var curve = data.msg.content.curvePublic;
var friend = Messaging.getFriend(ctx.store.proxy, curve);
if (!friend) { return void cb(true); }
delete ctx.store.proxy.friends[curve];
if (ctx.store.messenger) {
ctx.store.messenger.onFriendRemoved(curve, friend.channel);
}
cb(true);
};
return {
add: function (ctx, box, data, cb) {