Creating a Private Discussion Group

A private discussion group allows you to create an "invite-only" discussion group so that people can discuss a topic privately.

Create Channel

Start by creating a channel object:

1
2
3
4
5
6
7
8
9
10
Max.Channel.create({
name: 'myPrivateChannel',
summary: 'my private channel description',
isPublic: false,
publishPermissions: 'subscribers'
}).success(function(myPrivateChannel) {
// success
}).error(function(err) {
// failure
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Discover Private Channels

You can discover a private channel by name or view all your private channels. Note that only the channel owner discover a channel by name or view their list of private channels.

  • Discover a specific private channel:

    1
    2
    3
    4
    5
    6
    var channelName = "myPrivateChannel";
    Max.Channel.getPrivateChannel(channelName).success(function(privateChannel) {
    // do some thing with the private channel
    }).error(function(err) {
    // handle error on failure
    });
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Find all private channels (all current user's private channels):

    1
    2
    3
    4
    5
    Max.Channel.findPrivateChannels(prefix, null, 10, 0).success(function(privateChannels) {
    // do something with the list of current logged in user's private channels
    }).error(function(err) {
    // handle error on failure
    });
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Invite Users to Channel

Invite users to join a channel:

1
2
3
4
5
var invitees = [user1, user2];
var comments = 'Subscribe to the Company Policies channel';
myPrivateChannel.inviteUsers(invitees, comments).success(function() {
// invitation has been sent
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

The EventListener is leveraged to listen for incoming invites:

1
2
3
4
5
6
7
8
9
var listener = new Max.EventListener('myListener', {
invite: function(myInvite) {
// invitation has been received
var comment = myInvite.comment;
var sender = myInvite.sender;
var channel = myInvite.channel;
}
});
Max.registerListener(listener);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Display Channel Information

Let's get more information about the channel, like name, summary and owner.

1
2
3
4
5
6
7
var myInvitedChannel = myInvite.channel;
var name = myInvitedChannel.name;
var summary = myInvitedChannel.summary;
var isPublic = myInvitedChannel.isPublic;
var ownerUserId = myInvitedChannel.ownerUserID;
var creationDate = myInvitedChannel.creationDate;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Accept Invite

Accept an invite.

1
2
3
4
5
6
var comments = 'sure, thank you!';
myInvite.accept(comments).success(function() {
// invitation has been accepted. current user is now subscribed to the channel
}).error(function() {
// handle error
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Decline Invite

Decline an invite.

1
2
3
4
5
6
var comments = 'no thanks, maybe next time.';
myInvite.decline(comments).success(function() {
// invitation has been declined
}).error(function() {
// handle error
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Receive Invite Responses

To receive an invitation response:

1
2
3
4
5
6
7
8
9
var listener = new Max.EventListener('myListener', {
inviteResponse: function(myInviteResponse) {
// invitation response has been received
var user = myInviteResponse.sender; // the invitation response sender
var channel = myInviteResponse.channel;
var comments = myInviteResponse.comments;
var hasAcceptedInvite = myInviteResponse.accepted; // true if invitee accepted
}
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Add Subscribers

To add subscribers to your private channel, refer to the following code. Note that only the private channel owner can add subscribers.

1
2
3
4
5
6
7
8
9
10
11
12
13
var query = {userName: 'john.doe'};
var limit = 10;
var offset = 0;
Max.User.search(query, limit, offset).success(function(users) {
// add a subscriber to the channel
var johnDoeUser = users[0];
myPrivateChannel.addSubscribers(johnDoeUser).success(function() {
// success
}).error(function(err) {
// failure
});
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Get User Subscription List

To get the list of channels that the current user is subscribed to (both private and public):

1
2
3
4
5
Max.Channel.getAllSubscriptions().success(function(subscribedChannels) {
// do something with the subscribed channels
}).error(function(err) {
// handle error on failure
})
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Publish Message to Channel

To publish a message to the private channel:

1
2
3
4
5
6
7
8
var msg = new Max.Message({
myCustomKey: 'message to private channel'
});
myPrivateChannel.publish(msg).success(function() {
// message has been published!
}).error(function(err) {
// handle error on failure
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Retrieve Messages

When logged in, messages can either be retrieved using myPrivateChannel.getMessages() or can be received by setting up a listener with Max.EventListener:

1
2
3
4
5
6
7
8
9
10
var listener = new Max.EventListener('myListener', {
message: function(myMessage) {
// message has been received
if (myMessage.channel.name == 'myPrivateChannel') {
// do something with received message
}
}
});
Max.registerListener(listener);
// remember to unregister the listener if no longer used to prevent leaks `Max.unregisterListener('myListener');`
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Remove Channel Subscriber

To remove a subscriber from a private channel, refer to the following code. Note that only the private channel owner can remove subscribers.

1
2
3
4
5
6
7
8
9
10
11
12
13
var query = {userName: 'john.doe'};
var limit = 10;
var offset = 0;
Max.User.search(query, limit, offset).success(function(users) {
// add a subscriber to the channel
var johnDoeUser = users[0];
myPrivateChannel.removeSubscribers(johnDoeUser).success(function() {
// success
}).error(function(err) {
// failure
});
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Useful Links