Merge branch 'develop' into VRFS-2282

This commit is contained in:
Jonathan Kolyer 2014-10-13 16:18:47 +00:00
commit 6f27455b02
10 changed files with 64 additions and 27 deletions

View File

@ -455,6 +455,7 @@ module JamRuby
def self.participant_create(user, music_session_id, client_id, as_musician, tracks, audio_latency, video_sources=nil)
music_session = MusicSession.find(music_session_id)
# USERS ARE ALREADY IN SESSION
if music_session.active_music_session
connection = nil
active_music_session = music_session.active_music_session
@ -488,6 +489,8 @@ module JamRuby
end
connection
# FIRST USER TO JOIN SESSION
else
return_value = nil

View File

@ -375,7 +375,16 @@ module JamRuby
ms.invitations << invitation
Notification.send_scheduled_session_invitation(ms, receiver)
# if the session start time is not within the next 1 minute (user could create a "scheduled session"
# for 8:30 at 8:29. In this case send the regular scheduled session notification since it's still "future")
# send SCHEDULED SESSION INVITATION
if ms.scheduled_start && (ms.scheduled_start - Time.now.utc) / 60 > 1
Notification.send_scheduled_session_invitation(ms, receiver)
# otherwise send the notification that allows the user to join the session directly
else
Notification.send_session_invitation(receiver, user, ms.id)
end
end if options[:invitations]
options[:music_notations].each do |notation|

View File

@ -177,7 +177,7 @@ module JamRuby
return "#{band_name} is now in a session."
when NotificationTypes::SCHEDULED_SESSION_INVITATION
return "You have been invited to join a session by #{name}."
return "You have been invited to a future session by #{name}."
when NotificationTypes::SCHEDULED_SESSION_RSVP
return "#{name} would like to play in a session you have scheduled."

View File

@ -156,7 +156,7 @@ module JamRuby
@error_reason = @error_out[:reason]
@error_reason = "unspecified-reason" unless @error_reason
@error_detail = @error_detail[:detail]
@error_detail = @error_out[:detail]
end
def postback

View File

@ -16,7 +16,7 @@ describe BatchMailer do
# it { BatchMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == "JamKazam <support@jamkazam.com>" }
it { mail['from'].to_s.should == "JamKazam <noreply@jamkazam.com>" }
it { mail.subject.should == batch.subject }
it { mail.multipart?.should == true } # because we send plain + html

View File

@ -48,8 +48,8 @@
return currentQuery;
}
function clearResults() {
didLoadAllFeeds = false;
currentFeedPage = 0;
$content.empty(); // TODO: do we need to delete audio elements?
$noMoreFeeds.hide();

View File

@ -82,7 +82,6 @@
}
})
.always(function() {
context.JK.bindHoverEvents();
$ssSpinner.hide();
});
@ -162,6 +161,8 @@
$.each(sessions.sessions, function(i, session) {
sessionList.renderInactiveSession(session, $(CATEGORY.SCHEDULED.id), undefined, sessions.my_audio_latency);
});
context.JK.bindHoverEvents();
afterLoadScheduledSessions(sessions.sessions);
}

View File

@ -651,26 +651,9 @@
handleNotification(payload, header.type);
var participants = [];
rest.getSession(payload.session_id).done(function(response) {
$.each(response.participants, function(index, val) {
participants.push({"photo_url": context.JK.resolveAvatarUrl(val.user.photo_url), "name": val.user.name});
});
var participantHtml = "You have been invited to join a session with: <br/><br/>";
participantHtml += "<table><tbody>";
$.each(participants, function(index, val) {
if (index < 4) {
participantHtml += "<tr><td><img class='avatar-small' src='" + context.JK.resolveAvatarUrl(val.photo_url) + "' /></td><td>" + val.name + "</td></tr>";
}
});
participantHtml += "</tbody></table>";
app.notify({
app.notify({
"title": "Session Invitation",
"text": participantHtml
"text": payload.msg
}, [{
id: "btn-join",
text: "JOIN SESSION",
@ -684,8 +667,48 @@
}
}]
);
}).error(app.ajaxError);
// THERE IS A RACE CONDITION THAT CAUSES AN ERROR WHEN INVOKING THE CODE BELOW
// THE ACTIVEMUSICSESSION HAS NOT YET BEEN FULLY CREATED B/C THE CREATOR'S CLIENT IS
// STILL SETTING UP THE SESSION WHEN THE NOTIFICATION IS SENT
// SEE ActiveMusicSession#participant_create
// var participants = [];
// rest.getSession(payload.session_id)
// .done(function(response) {
// $.each(response.participants, function(index, val) {
// participants.push({"photo_url": context.JK.resolveAvatarUrl(val.user.photo_url), "name": val.user.name});
// });
// var participantHtml = "You have been invited to join a session with: <br/><br/>";
// participantHtml += "<table><tbody>";
// $.each(participants, function(index, val) {
// if (index < 4) {
// participantHtml += "<tr><td><img class='avatar-small' src='" + context.JK.resolveAvatarUrl(val.photo_url) + "' /></td><td>" + val.name + "</td></tr>";
// }
// });
// participantHtml += "</tbody></table>";
// app.notify({
// "title": "Session Invitation",
// "text": participantHtml
// }, [{
// id: "btn-join",
// text: "JOIN SESSION",
// "layout-action": "close",
// href: "#",
// "class": "button-orange",
// callback: openTerms,
// callback_args: {
// "session_id": payload.session_id,
// "notification_id": payload.notification_id
// }
// }]
// );
// }).error(app.ajaxError);
});
}

View File

@ -66,7 +66,7 @@
<span>You have no bio to describe yourself as a musician. <a href="#" class="enter-bio">Enter one now!</a></span>
</div>
<div class="have-bio">
<p id="profile-biography"></p><a id="profile-edit-biography" class="button-orange right" href="#">Edit Bio</a>
<p id="profile-biography"></p><a id="profile-edit-biography" class="button-orange right" href="#">EDIT BIO</a>
</div>
<div class="update-biography">
<div class="field">

View File

@ -24,6 +24,7 @@ describe "Profile History", :js => true, :type => :feature, :capybara_feature =>
# the same feedHelper instance is used to show any user's feed. so we need to make sure bouncing back and forth
# between feeds is safe
it "between users" do
pending
create_session(creator: user)
formal_leave_by(user)
user2 = FactoryGirl.create(:user)