as_musician=true in create session. Subscribe to latency callbacks with key to prevent dupe notifications.

This commit is contained in:
Jonathon Wilson 2012-12-02 14:12:25 -07:00
parent 999b8d72d0
commit db3b3c3c73
4 changed files with 23 additions and 9 deletions

View File

@ -115,6 +115,7 @@ Message from Seth on sequence for creating/joining sessions:
var $this = $(this);
var data = $this.formToObject();
data.client_id = app.clientId;
data.as_musician = true;
if (typeof(data.genres) === "string") {
data.genres = [data.genres];
}

View File

@ -18,7 +18,7 @@
}
function startSessionLatencyChecks(response) {
sessionLatency.subscribe(latencyResponse);
sessionLatency.subscribe(app.clientId, latencyResponse);
$.each(response, function(index, session) {
sessions[session.id] = session;
sessionLatency.sessionPings(session);
@ -61,6 +61,7 @@
if (vals.sortScore > rowSortScore) {
$this.before(row);
insertedEarly = true;
return false; // break
}
});
if (!(insertedEarly)) {

View File

@ -8,7 +8,7 @@
var sessionPingsOut = {};
var clientsToSessions = {};
var sessionLatency = {};
var subscribers = [];
var subscribers = {};
function getSortScore(sessionId) {
return sessionLatency[sessionId].sortScore;
@ -60,9 +60,11 @@
var sessionId = clientsToSessions[response.id];
sessionPingsOut[sessionId]--;
updateSessionLatency(sessionId, response);
$.each(subscribers, function() {
this(sessionId);
});
for (var k in subscribers) {
if (typeof(subscribers[k]) === 'function') {
subscribers[k](sessionId);
}
}
}
function updateSessionLatency(sessionId, latencyResponse) {
@ -100,8 +102,8 @@
return sessionLatency[sessionId];
}
function subscribe(cb) {
subscribers.push(cb);
function subscribe(subscriberKey, cb) {
subscribers[subscriberKey] = cb;
}
this.sessionPings = sessionPings;

View File

@ -90,16 +90,26 @@
describe("Register for Events", function() {
it("should register successfully", function() {
var cb = jasmine.createSpy();
sessionLatency.subscribe(cb);
sessionLatency.subscribe('test', cb);
});
it("should invoke callback on latency result", function() {
var cb = jasmine.createSpy("Latency Subscription Callback");
sessionLatency.subscribe(cb);
sessionLatency.subscribe('test', cb);
$.each(sessions, function(index, session) {
sessionLatency.sessionPings(session);
});
expect(cb).toHaveBeenCalled();
});
it("should not add same listener twice", function() {
var cb = jasmine.createSpy();
sessionLatency.subscribe('test', cb);
sessionLatency.subscribe('test', cb);
sessionLatency.subscribe('test', cb);
$.each(sessions, function(index, session) {
sessionLatency.sessionPings(session);
});
expect(cb.callCount).toEqual(7); // 7 clients to ping, once.
});
});
});