mirror of
https://github.com/jech/galene.git
synced 2024-11-22 08:35:57 +01:00
Add ability to set initial user status.
Setting the status after joining (using the "setstatus" action) may cause multiple "user" messages to be sent to clients. Add the ability to set the initial status at join time.
This commit is contained in:
parent
0b5e40bc7f
commit
710cc3cc14
3 changed files with 21 additions and 5 deletions
|
@ -107,7 +107,8 @@ The `join` message requests that the sender join or leave a group:
|
||||||
kind: 'join' or 'leave',
|
kind: 'join' or 'leave',
|
||||||
group: group,
|
group: group,
|
||||||
username: username,
|
username: username,
|
||||||
password: password
|
password: password,
|
||||||
|
status: status
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1316,9 +1316,20 @@ func handleClientMessage(c *webClient, m clientMessage) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.group != nil {
|
if c.group != nil {
|
||||||
return group.ProtocolError("cannot join multiple groups")
|
return group.ProtocolError(
|
||||||
|
"cannot join multiple groups",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
c.username = m.Username
|
c.username = m.Username
|
||||||
|
if m.Status != nil {
|
||||||
|
s, ok := m.Status.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return group.ProtocolError(
|
||||||
|
"bad type for status",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
c.status = s
|
||||||
|
}
|
||||||
g, err := group.AddClient(m.Group, c,
|
g, err := group.AddClient(m.Group, c,
|
||||||
group.ClientCredentials{
|
group.ClientCredentials{
|
||||||
Username: m.Username,
|
Username: m.Username,
|
||||||
|
|
|
@ -416,15 +416,19 @@ ServerConnection.prototype.connect = async function(url) {
|
||||||
* @param {string} group - The name of the group to join.
|
* @param {string} group - The name of the group to join.
|
||||||
* @param {string} username - the username to join as.
|
* @param {string} username - the username to join as.
|
||||||
* @param {string} password - the password.
|
* @param {string} password - the password.
|
||||||
|
* @param {Object<string,any>} [status] - the initial status of the user.
|
||||||
*/
|
*/
|
||||||
ServerConnection.prototype.join = function(group, username, password) {
|
ServerConnection.prototype.join = function(group, username, password, status) {
|
||||||
this.send({
|
let m = {
|
||||||
type: 'join',
|
type: 'join',
|
||||||
kind: 'join',
|
kind: 'join',
|
||||||
group: group,
|
group: group,
|
||||||
username: username,
|
username: username,
|
||||||
password: password,
|
password: password,
|
||||||
});
|
};
|
||||||
|
if(status)
|
||||||
|
m.status = status;
|
||||||
|
this.send(m);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue