Add user and event level manipulation to Matrix.Room
This commit is contained in:
parent
3dd3568384
commit
00a67705e7
@ -156,4 +156,86 @@ public class Matrix.Room : GLib.Object {
|
|||||||
|
|
||||||
_members.unset(user_id);
|
_members.unset(user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the stored individual user levels. This should be called
|
||||||
|
* e.g. when receiving a new m.room.power_levels event.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
clear_user_levels()
|
||||||
|
{
|
||||||
|
_user_levels.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an individual power level for a user.
|
||||||
|
*
|
||||||
|
* @param user_id a fully qualified Matrix ID
|
||||||
|
* @param level the new power level
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
set_user_level(string user_id, int level)
|
||||||
|
{
|
||||||
|
_user_levels[user_id] = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the power level of a user.
|
||||||
|
*
|
||||||
|
* @param user_id a fully qualified Matrix ID
|
||||||
|
* @return the level of the user. If the user doesn’t have an
|
||||||
|
* individually set power level, the default value is
|
||||||
|
* returned
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
get_user_level(string user_id)
|
||||||
|
{
|
||||||
|
int? level = _user_levels[user_id];
|
||||||
|
|
||||||
|
if (level == null) {
|
||||||
|
level = _default_power_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the stored event level requirements. This should be
|
||||||
|
* called e.g. when receiving a new m.room.power_levels event.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
clear_event_levels()
|
||||||
|
{
|
||||||
|
_event_levels.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the required level to send an event of
|
||||||
|
* type @param event_type.
|
||||||
|
*
|
||||||
|
* @param event_type the event type to restrict
|
||||||
|
* @param level the desired level for the event type
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
set_event_level(string event_type, int level)
|
||||||
|
{
|
||||||
|
_event_levels[event_type] = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the required level to send an event of
|
||||||
|
* type @param event_type.
|
||||||
|
*
|
||||||
|
* @param event_type the event type to query
|
||||||
|
* @return the level required to send a specific event. If there
|
||||||
|
* is no level requirement is set for this event type,
|
||||||
|
* this function returns null as there is no way to decide
|
||||||
|
* if {@link Matrix.Room.default_state_level} or
|
||||||
|
* {@link Matrix.Room.default_event_level} should be used
|
||||||
|
*/
|
||||||
|
public int?
|
||||||
|
get_event_level(string event_type)
|
||||||
|
{
|
||||||
|
return _event_levels[event_type];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user