Merge branch 'unfriend' into staging

pull/1/head
yflory 6 years ago
commit 728c2716b4

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

@ -132,6 +132,17 @@ 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);
}
ctx.updateMetadata();
cb(true);
};
return { return {
add: function (ctx, box, data, cb) { add: function (ctx, box, data, cb) {

Loading…
Cancel
Save