vrfs1008: fixed updating invites bug

This commit is contained in:
Jonathan Kolyer 2014-01-14 02:29:07 -06:00
parent ea6391e46e
commit 91007055a0
1 changed files with 17 additions and 19 deletions

View File

@ -9,11 +9,12 @@
var userIds = [];
var userPhotoUrls = [];
var friendSelectorDialog = null;
var invitedFriends = {};
var invitedFriends = [];
var existingInvites = [];
var autoComplete = null;
var rest = context.JK.Rest();
var inviteAction = 'create'; // create/update
var updateSessionID = null;
this.inviteSessionCreate = function(elemSelector) {
inviteAction = 'create';
@ -21,16 +22,16 @@
};
this.inviteSessionUpdate = function(elemSelector, sessionId) {
this.clearSelections();
updateSessionID = sessionId;
friendSelectorDialog.setCallback(friendSelectorCallback);
inviteAction = 'update';
var sid = sessionId;
if (0 == $(elemSelector + ' .friendbox').length) {
_appendFriendSelector($(elemSelector));
$('#btn-save-invites').click(function() {
createInvitations(sid);
createInvitations(updateSessionID);
});
}
this.clearSelections();
$.ajax({
ajax: false,
url: "/api/invitations",
@ -48,8 +49,9 @@
userNames = [];
userIds = [];
userPhotoUrls = [];
invitedFriends = {};
invitedFriends = [];
existingInvites = [];
updateSessionID = null;
$('.selected-friends').empty();
};
@ -99,7 +101,7 @@
}
function addInvitation(value, data) {
if ($('.selected-friends div[user-id=' + data + ']').length === 0) {
if (0 > invitedFriends.indexOf(data)) {
var template = $('#template-added-invitation').html();
var imgStyle = _inviteExists(data) ? 'display:none' : '';
var invitationHtml = context.JK.fillTemplate(template,
@ -108,7 +110,7 @@
imageStyle: imgStyle});
$('.selected-friends').append(invitationHtml);
$('#friend-input').select();
invitedFriends[data] = true;
invitedFriends.push(data);
} else {
$('#friend-input').select();
@ -117,19 +119,17 @@
}
function removeInvitation(evt) {
var dd = $(evt.currentTarget).parent().attr('user-id');
delete invitedFriends[dd];
var idx = invitedFriends.indexOf($(evt.currentTarget).parent().attr('user-id'));
if (0 <= idx) invitedFriends.splice(idx, 1);
$(evt.currentTarget).closest('.invitation').remove();
}
function createInvitations(sessionId, onComplete) {
var callCount = 0;
var totalInvitations = existingInvites.length;
$('.selected-friends .invitation').each(function(index, invitation) {
var invite_id = $(invitation).attr('user-id');
var totalInvitations = invitedFriends.length - existingInvites.length;
invitedFriends.map(function(invite_id) {
if (!_inviteExists(invite_id)) {
callCount++;
totalInvitations++;
var invite = {
music_session: sessionId,
receiver: invite_id
@ -146,11 +146,7 @@
// TODO - this is the second time I've used this pattern.
// refactor to make a common utility for this.
function checker() {
if (callCount === 0) {
onComplete();
} else {
context.setTimeout(checker, 10);
}
callCount === 0 ? onComplete() : context.setTimeout(checker, 10);
}
if (onComplete) checker();
return totalInvitations;
@ -196,7 +192,9 @@
elemSelector.append(_friendSelectorHTML());
$('#selected-friends-'+inviteAction).on("click", ".invitation a", removeInvitation);
$('#btn-choose-friends-'+inviteAction).click(function(){
friendSelectorDialog.showDialog(invitedFriends);
var obj = {};
invitedFriends.map(function(uid) { obj[uid] = true; });
friendSelectorDialog.showDialog(obj);
});
};