vrfs1008: fixed updating invites bug
This commit is contained in:
parent
ea6391e46e
commit
91007055a0
|
|
@ -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);
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue