From 91007055a0e0de518f35dfdfe496fae3bc6c89c7 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Tue, 14 Jan 2014 02:29:07 -0600 Subject: [PATCH] vrfs1008: fixed updating invites bug --- web/app/assets/javascripts/inviteMusicians.js | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/web/app/assets/javascripts/inviteMusicians.js b/web/app/assets/javascripts/inviteMusicians.js index 802fc5839..95f5f58cb 100644 --- a/web/app/assets/javascripts/inviteMusicians.js +++ b/web/app/assets/javascripts/inviteMusicians.js @@ -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); }); };