define([ '/common/common-messaging.js', ], function (Messaging) { var handlers = {}; handlers['FRIEND_REQUEST'] = function (ctx, data, cb) { if (data.msg.author === data.msg.content.curvePublic && Messaging.getFriend(ctx.store.proxy, data.msg.author)) { Messaging.acceptFriendRequest(ctx.store, data.msg.content, function (obj) { if (obj && obj.error) { return void cb(); } cb(true); }); return; } cb(); }; handlers['DECLINE_FRIEND_REQUEST'] = function (ctx, box, data, cb) { // Our friend request was declined. if (!ctx.store.proxy.friends_pending[data.msg.author]) { return void cb(true); } delete ctx.store.proxy.friends_pending[data.msg.author]; ctx.updateMetadata(); cb(); }; handlers['ACCEPT_FRIEND_REQUEST'] = function (ctx, box, data, cb) { // Our friend request was accepted. // Make sure we really sent it if (!ctx.store.proxy.friends_pending[data.msg.author]) { return void cb(); } // And add the friend Messaging.addToFriendList({ proxy: ctx.store.proxy, realtime: ctx.store.realtime, pinPads: ctx.pinPads }, data.msg.content, function (err) { if (err) { console.error(err); } delete ctx.store.proxy.friends_pending[data.msg.author]; if (ctx.store.messenger) { ctx.store.messenger.onFriendAdded(data.msg.content); } ctx.updateMetadata(); }); cb(); }; return function (ctx, box, data, cb) { var type = data.msg.type; if (handlers[type]) { try { handlers[type](ctx, box, data, cb); } catch (e) { cb(); } } else { cb(); } }; });