Skip to content

Commit

Permalink
Add a listSharedActivityUsers method in presence API
Browse files Browse the repository at this point in the history
  • Loading branch information
llaske committed Nov 29, 2017
1 parent a6b31a5 commit 51357c7
Show file tree
Hide file tree
Showing 26 changed files with 1,695 additions and 1,186 deletions.
127 changes: 75 additions & 52 deletions activities/Abacus.activity/lib/sugar-web/presence.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ define(function (require) {
var msgOnConnectionClosed = 6;
var msgOnSharedActivityUserChanged = 7;
var msgSendMessage = 8;
var msgListSharedActivityUsers = 9;

// Array for callbacks on each type
var callbackArray = [];
Expand All @@ -29,9 +30,11 @@ define(function (require) {
var onConnectionClosed = emptyCallback;
var onSharedActivityUserChanged = emptyCallback;
var receivedDataCallback = emptyCallback;
var listSharedActivityUsersCallback = emptyCallback;
callbackArray = [emptyCallback, listUsersCallback, createSharedActivityCallback,
listSharedActivityCallback, joinSharedActivity, leaveSharedActivity,
onConnectionClosed, onSharedActivityUserChanged, receivedDataCallback
onConnectionClosed, onSharedActivityUserChanged, receivedDataCallback,
listSharedActivityUsersCallback
];
this.socket = null;

Expand Down Expand Up @@ -93,7 +96,7 @@ define(function (require) {
}

// Join network function
SugarPresence.prototype.joinNetwork = function(callback) {
SugarPresence.prototype.joinNetwork = function(callback) {
// Check WebSocket support
if (!window.WebSocket){
console.log('WebSocket not supported');
Expand Down Expand Up @@ -146,128 +149,148 @@ define(function (require) {
callbackArray[msgOnConnectionClosed](event);
};
});
}
}

// Leave network
SugarPresence.prototype.leaveNetwork = function() {
SugarPresence.prototype.leaveNetwork = function() {
if (!this.isConnected())
return;
this.socket.close();
this.socket.close();
this.socket = null;
}
}

// List all users. Will receive an array of users.
SugarPresence.prototype.listUsers = function(callback) {
SugarPresence.prototype.listUsers = function(callback) {
if (!this.isConnected())
return;

// Register call back
callbackArray[msgListUsers] = callback;

// Send list user message
var sjson = JSON.stringify({
type: msgListUsers
});
this.socket.send(sjson);
}

// List users connected to a group. Will receive an array of users.
SugarPresence.prototype.listSharedActivityUsers = function(group, callback) {
if (!this.isConnected())
return;

// Register call back
callbackArray[msgListUsers] = callback;
var that = this;
callbackArray[msgListSharedActivityUsers] = function(data) {
that.sharedInfo = { id: data };
callback(data);
}

// Send list user message
var sjson = JSON.stringify({
type: msgListUsers
});
this.socket.send(sjson);
}
var sjson = JSON.stringify({
type: msgListSharedActivityUsers,
group: group
});
this.socket.send(sjson);
}

// Create a shared activity. Will receive a unique group id.
SugarPresence.prototype.createSharedActivity = function(activityId, callback) {
SugarPresence.prototype.createSharedActivity = function(activityId, callback) {
if (!this.isConnected())
return;

// Register call back
var that = this;
callbackArray[msgCreateSharedActivity] = function(data) {
callbackArray[msgCreateSharedActivity] = function(data) {
that.sharedInfo = { id: data };
callback(data);
}

// Send create shared activity message
var sjson = JSON.stringify({
type: msgCreateSharedActivity,
var sjson = JSON.stringify({
type: msgCreateSharedActivity,
activityId: activityId
});
this.socket.send(sjson);
}
});
this.socket.send(sjson);
}

// List all shared activities. Will receive an array of each shared activities and users connected
SugarPresence.prototype.listSharedActivities = function(callback) {
SugarPresence.prototype.listSharedActivities = function(callback) {
if (!this.isConnected())
return;

// Register call back
callbackArray[msgListSharedActivities] = callback;
callbackArray[msgListSharedActivities] = callback;

// Send list shared activities message
var sjson = JSON.stringify({
type: msgListSharedActivities
});
this.socket.send(sjson);
}
var sjson = JSON.stringify({
type: msgListSharedActivities
});
this.socket.send(sjson);
}

// Join a shared activity. Will receive group properties or null
SugarPresence.prototype.joinSharedActivity = function(group, callback) {
SugarPresence.prototype.joinSharedActivity = function(group, callback) {
if (!this.isConnected())
return;

// Register call back
var that = this;
callbackArray[msgJoinSharedActivity] = function(data) {
callbackArray[msgJoinSharedActivity] = function(data) {
that.sharedInfo = data;
callback(data);
}

// Send join shared activity message
var sjson = JSON.stringify({
type: msgJoinSharedActivity,
var sjson = JSON.stringify({
type: msgJoinSharedActivity,
group: group
});
this.socket.send(sjson);
}
});
this.socket.send(sjson);
}

// Leave shared activities
SugarPresence.prototype.leaveSharedActivity = function(group, callback) {
if (!this.isConnected())
return;

// Register call back
callbackArray[msgLeaveSharedActivity] = callback; // BUG: This callback is never called
callbackArray[msgLeaveSharedActivity] = callback; // BUG: This callback is never called

// Send leave shared activity message
var sjson = JSON.stringify({
type: msgLeaveSharedActivity,
var sjson = JSON.stringify({
type: msgLeaveSharedActivity,
group: group
});
this.socket.send(sjson);
}
});
this.socket.send(sjson);
}

// Register connection closed event
SugarPresence.prototype.onConnectionClosed = function(callback) {
callbackArray[msgOnConnectionClosed] = callback;
}
SugarPresence.prototype.onConnectionClosed = function(callback) {
callbackArray[msgOnConnectionClosed] = callback;
}

// Register shared activity user changed event
SugarPresence.prototype.onSharedActivityUserChanged = function(callback) {
callbackArray[msgOnSharedActivityUserChanged] = callback;
}

// Send message to a group
SugarPresence.prototype.sendMessage = function(group, data) {;
SugarPresence.prototype.sendMessage = function(group, data) {;
if (!this.isConnected())
return;
var sjson = JSON.stringify({
type: msgSendMessage,
type: msgSendMessage,
group: group,
data: data
});
this.socket.send(sjson);
}
data: data
});
this.socket.send(sjson);
}

// Register data received message
SugarPresence.prototype.onDataReceived = function(callback) {
callbackArray[msgSendMessage] = callback;
}
SugarPresence.prototype.onDataReceived = function(callback) {
callbackArray[msgSendMessage] = callback;
}

return presence;
});
Loading

0 comments on commit 51357c7

Please sign in to comment.