* VRFS-3234 - auto-open jamtrack from account screen
This commit is contained in:
parent
9459215a0f
commit
fb463d6703
|
|
@ -9,6 +9,7 @@ context.JK.AccountJamTracks = class AccountJamTracks
|
|||
@logger = context.JK.logger
|
||||
@screen = null
|
||||
@userId = context.JK.currentUserId;
|
||||
@sessionUtils = context.JK.SessionUtils
|
||||
|
||||
initialize:() =>
|
||||
screenBindings =
|
||||
|
|
@ -27,26 +28,34 @@ context.JK.AccountJamTracks = class AccountJamTracks
|
|||
populateJamTracks:(data) =>
|
||||
if (data.jamtracks? && data.jamtracks.length > 0)
|
||||
@screen.find(".no-jamtracks-found").addClass("hidden")
|
||||
@appendJamTracks context._.template($('#template-account-jamtrack').html(), {jamtracks:data.jamtracks}, { variable: 'data' })
|
||||
@appendJamTracks(data)
|
||||
@screen.find('.jamtrack-solo-session').on 'click', @soloSession
|
||||
@screen.find('.jamtrack-group-session').on 'click', @groupSession
|
||||
else
|
||||
@screen.find(".no-jamtracks-found").removeClass("hidden")
|
||||
|
||||
appendJamTracks:(template) =>
|
||||
$('#account-my-jamtracks table tbody').replaceWith template
|
||||
appendJamTracks:(data) =>
|
||||
|
||||
$tbody = $('#account-my-jamtracks table tbody')
|
||||
$tbody.empty()
|
||||
|
||||
for jamTrack in data.jamtracks
|
||||
$template = $(context._.template($('#template-account-jamtrack').html(), {jamtrack:jamTrack}, { variable: 'data' }))
|
||||
$template.data('jamTrack', jamTrack)
|
||||
$tbody.append($template)
|
||||
|
||||
|
||||
soloSession:(e) =>
|
||||
#context.location="client#/createSession"
|
||||
jamRow = $(e.target).parents("tr")
|
||||
@createSession(jamRow.data(), true)
|
||||
@createSession(jamRow.data(), true, jamRow.data('jamTrack'))
|
||||
|
||||
groupSession:(e) =>
|
||||
#context.location="client#/createSession"
|
||||
jamRow = $(e.target).parents("tr")
|
||||
@createSession(jamRow.data(), false)
|
||||
@createSession(jamRow.data(), false, jamRow.data('jamTrack'))
|
||||
|
||||
createSession:(sessionData, solo) =>
|
||||
createSession:(sessionData, solo, jamTrack) =>
|
||||
tracks = context.JK.TrackHelpers.getUserTracks(context.jamClient)
|
||||
|
||||
if (context.JK.guardAgainstBrowser(@app))
|
||||
|
|
@ -75,6 +84,7 @@ context.JK.AccountJamTracks = class AccountJamTracks
|
|||
|
||||
rest.legacyCreateSession(data).done((response) =>
|
||||
newSessionId = response.id
|
||||
@sessionUtils.setAutoOpenJamTrack(jamTrack) # so that the session screen will pick this up
|
||||
context.location = '/client#/session/' + newSessionId
|
||||
# Re-loading the session settings will cause the form to reset with the right stuff in it.
|
||||
# This is an extra xhr call, but it keeps things to a single codepath
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@
|
|||
$tbody.on('click', 'tr', function(e) {
|
||||
var jamTrack = $(this).data('server-model');
|
||||
|
||||
// tell the server we are about to start a recording
|
||||
// tell the server we are about to open a jamtrack
|
||||
rest.openJamTrack({id: context.JK.CurrentSessionModel.id(), jam_track_id: jamTrack.id})
|
||||
.done(function(response) {
|
||||
$dialog.data('result', {success:true, jamTrack: jamTrack})
|
||||
|
|
|
|||
|
|
@ -305,7 +305,8 @@
|
|||
window.location="/client#/home"
|
||||
}
|
||||
})
|
||||
.done(function() {logger.debug("user has passed all session guards")
|
||||
.done(function() {
|
||||
logger.debug("user has passed all session guards")
|
||||
promptLeave = true;
|
||||
var sessionModel = context.JK.CurrentSessionModel;
|
||||
|
||||
|
|
@ -489,7 +490,25 @@
|
|||
else {
|
||||
app.notifyServerError(xhr, 'Unable to Join Session');
|
||||
}
|
||||
});
|
||||
})
|
||||
.done(function() {
|
||||
// check if this is a auto-load jamtrack situation (came from account jamtrack screen)
|
||||
var jamTrack = sessionUtils.grabAutoOpenJamTrack();
|
||||
if(jamTrack) {
|
||||
// give the session to settle just a little (call a timeout of 1 second)
|
||||
setTimeout(function() {
|
||||
// tell the server we are about to open a jamtrack
|
||||
rest.openJamTrack({id: context.JK.CurrentSessionModel.id(), jam_track_id: jamTrack.id})
|
||||
.done(function(response) {
|
||||
// now actually load the jamtrack
|
||||
loadJamTrack(jamTrack);
|
||||
})
|
||||
.fail(function(jqXHR) {
|
||||
app.notifyServerError(jqXHR, "Unable to Open JamTrack For Playback");
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
|
@ -1276,7 +1295,7 @@
|
|||
}
|
||||
|
||||
function renderJamTracks(jamTrackMixersOrig) {
|
||||
logger.debug("rendering jam tracks")
|
||||
logger.debug("rendering jam tracks", jamTrackMixersOrig);
|
||||
|
||||
var jamTrackMixers = jamTrackMixersOrig.slice();
|
||||
var jamTracks = []
|
||||
|
|
@ -2699,69 +2718,7 @@
|
|||
|
||||
// once the dialog is closed, see if the user has a jamtrack selected
|
||||
if(!data.canceled && data.result.jamTrack) {
|
||||
|
||||
var jamTrack = data.result.jamTrack;
|
||||
|
||||
$('.session-recording-name').text('');
|
||||
|
||||
// hide 'other audio' placeholder
|
||||
otherAudioFilled();
|
||||
|
||||
if(downloadJamTrack) {
|
||||
// if there was one showing before somehow, destroy it.
|
||||
logger.warn("destroying existing JamTrack")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null
|
||||
}
|
||||
|
||||
downloadJamTrack = new context.JK.DownloadJamTrack(app, jamTrack, 'large');
|
||||
|
||||
// the widget indicates when it gets to any transition; we can hide it once it reaches completion
|
||||
$(downloadJamTrack).on(EVENTS.JAMTRACK_DOWNLOADER_STATE_CHANGED, function(e, data) {
|
||||
|
||||
if(data.state == downloadJamTrack.states.synchronized) {
|
||||
logger.debug("jamtrack synchronized; hide widget and show tracks")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null;
|
||||
|
||||
// XXX: test with this removed; it should be unnecessary
|
||||
context.jamClient.JamTrackStopPlay();
|
||||
|
||||
var sampleRate = context.jamClient.GetSampleRate()
|
||||
var sampleRateForFilename = sampleRate == 48 ? '48' : '44'
|
||||
var fqId = jamTrack.id + '-' + sampleRateForFilename
|
||||
|
||||
if(jamTrack.jmep)
|
||||
{
|
||||
logger.debug("setting jmep data")
|
||||
|
||||
context.jamClient.JamTrackLoadJmep(fqId, jamTrack.jmep)
|
||||
}
|
||||
else {
|
||||
logger.debug("no jmep data for jamtrack")
|
||||
}
|
||||
|
||||
// JamTrackPlay means 'load'
|
||||
var result = context.jamClient.JamTrackPlay(fqId);
|
||||
|
||||
if(!result) {
|
||||
app.notify(
|
||||
{ title: "JamTrack Can Not Open",
|
||||
text: "Unable to open your JamTrack. Please contact support@jamkazam.com"
|
||||
}, null, true);
|
||||
} else {
|
||||
playJamTrack(jamTrack.id);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// show it on the page
|
||||
$otherAudioContainer.append(downloadJamTrack.root)
|
||||
|
||||
// kick off the download JamTrack process
|
||||
downloadJamTrack.init()
|
||||
loadJamTrack(data.result.jamTrack);
|
||||
}
|
||||
else {
|
||||
logger.debug("OpenJamTrack dialog closed with no selection; ignoring", data)
|
||||
|
|
@ -2771,6 +2728,69 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function loadJamTrack(jamTrack) {
|
||||
|
||||
$('.session-recording-name').text('');
|
||||
|
||||
// hide 'other audio' placeholder
|
||||
otherAudioFilled();
|
||||
|
||||
if(downloadJamTrack) {
|
||||
// if there was one showing before somehow, destroy it.
|
||||
logger.warn("destroying existing JamTrack")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null
|
||||
}
|
||||
|
||||
downloadJamTrack = new context.JK.DownloadJamTrack(app, jamTrack, 'large');
|
||||
|
||||
// the widget indicates when it gets to any transition; we can hide it once it reaches completion
|
||||
$(downloadJamTrack).on(EVENTS.JAMTRACK_DOWNLOADER_STATE_CHANGED, function(e, data) {
|
||||
|
||||
if(data.state == downloadJamTrack.states.synchronized) {
|
||||
logger.debug("jamtrack synchronized; hide widget and show tracks")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null;
|
||||
|
||||
// XXX: test with this removed; it should be unnecessary
|
||||
context.jamClient.JamTrackStopPlay();
|
||||
|
||||
var sampleRate = context.jamClient.GetSampleRate()
|
||||
var sampleRateForFilename = sampleRate == 48 ? '48' : '44'
|
||||
var fqId = jamTrack.id + '-' + sampleRateForFilename
|
||||
|
||||
if(jamTrack.jmep)
|
||||
{
|
||||
logger.debug("setting jmep data")
|
||||
|
||||
context.jamClient.JamTrackLoadJmep(fqId, jamTrack.jmep)
|
||||
}
|
||||
else {
|
||||
logger.debug("no jmep data for jamtrack")
|
||||
}
|
||||
|
||||
// JamTrackPlay means 'load'
|
||||
var result = context.jamClient.JamTrackPlay(fqId);
|
||||
|
||||
if(!result) {
|
||||
app.notify(
|
||||
{ title: "JamTrack Can Not Open",
|
||||
text: "Unable to open your JamTrack. Please contact support@jamkazam.com"
|
||||
}, null, true);
|
||||
} else {
|
||||
playJamTrack(jamTrack.id);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// show it on the page
|
||||
$otherAudioContainer.append(downloadJamTrack.root)
|
||||
|
||||
// kick off the download JamTrack process
|
||||
downloadJamTrack.init()
|
||||
}
|
||||
function playJamTrack(jamTrackId) {
|
||||
var participantCnt=sessionModel.participants().length
|
||||
rest.playJamTrack(jamTrackId)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
var rest = new context.JK.Rest();
|
||||
context.JK.SessionUtils = sessionUtils;
|
||||
var logger = context.JK.logger;
|
||||
var autoOpenJamTrack = null;
|
||||
|
||||
var LATENCY = sessionUtils.LATENCY = {
|
||||
ME : {description: "ME", style: "latency-me", min: -1, max: -1},
|
||||
|
|
@ -20,6 +21,18 @@
|
|||
UNKNOWN: {description: "UNKNOWN", style: "latency-unknown", min: -2, max: -2}
|
||||
};
|
||||
|
||||
sessionUtils.setAutoOpenJamTrack = function(jamTrack) {
|
||||
logger.debug("setting auto-load jamtrack")
|
||||
autoOpenJamTrack = jamTrack;
|
||||
}
|
||||
|
||||
// one shot!
|
||||
sessionUtils.grabAutoOpenJamTrack = function() {
|
||||
var jamTrack = autoOpenJamTrack;
|
||||
autoOpenJamTrack = null;
|
||||
return jamTrack;
|
||||
}
|
||||
|
||||
sessionUtils.createOpenSlot = function($openSlotsTemplate, slot, openSlotCount, currentSlotIndex) {
|
||||
var inst = context.JK.getInstrumentIcon24(slot.instrument_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@
|
|||
</div>
|
||||
|
||||
<div class="right">
|
||||
<a id="account-my-jamtracks-link" href="#" class="button-orange">UPDATE</a>
|
||||
<a id="account-my-jamtracks-link" href="#" class="button-orange">VIEW</a>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
|
|
|
|||
|
|
@ -31,14 +31,11 @@
|
|||
a.button-grey href="javascript:history.go(-1)" BACK
|
||||
|
||||
script#template-account-jamtrack type='text/template'
|
||||
tbody
|
||||
= "{% _.each(data.jamtracks, function(jamtrack) { %}"
|
||||
tr data-id="{{jamtrack.id}}" data-genre="{{jamtrack.genre}}"
|
||||
td
|
||||
| {{jamtrack.name}}
|
||||
td
|
||||
| {{jamtrack.original_artist}}
|
||||
td
|
||||
.table-link: a.jamtrack-solo-session href= '#' jamtrack-id="{{jamtrack.id}}" Get into solo session
|
||||
.table-link: a.jamtrack-group-session href= '#' jamtrack-id="{{jamtrack.id}}" Get into session others can join
|
||||
= "{% }); %}"
|
||||
tr data-id="{{data.jamtrack.id}}" data-genre="{{data.jamtrack.genre}}"
|
||||
td
|
||||
| {{data.jamtrack.name}}
|
||||
td
|
||||
| {{data.jamtrack.original_artist}}
|
||||
td
|
||||
.table-link: a.jamtrack-solo-session href= '#' jamtrack-id="{{data.jamtrack.id}}" Get into solo session
|
||||
.table-link: a.jamtrack-group-session href= '#' jamtrack-id="{{data.jamtrack.id}}" Get into session others can join
|
||||
|
|
|
|||
Loading…
Reference in New Issue