Fixed the client icon id
This commit is contained in:
parent
1ea630b326
commit
ee52f4b8d9
@ -127,9 +127,7 @@ void ConnectedClient::updateChannelClientProperties(bool lock_channel_tree, bool
|
||||
permission_talk_power{0, false},
|
||||
permission_ignore_antiflood{0, false},
|
||||
permission_channel_view_power{0, false},
|
||||
permission_channel_ignore_view_power{0, false},
|
||||
permission_icon_id{0, false},
|
||||
permission_client_is_priority_speaker{0, false};
|
||||
permission_channel_ignore_view_power{0, false};
|
||||
|
||||
for(const auto& perm : permissions) {
|
||||
if(perm.first == permission::i_client_talk_power) {
|
||||
@ -140,10 +138,6 @@ void ConnectedClient::updateChannelClientProperties(bool lock_channel_tree, bool
|
||||
permission_channel_view_power = perm.second;
|
||||
} else if(perm.first == permission::b_channel_ignore_view_power) {
|
||||
permission_channel_ignore_view_power = perm.second;
|
||||
} else if(perm.first == permission::i_icon_id) {
|
||||
permission_icon_id = perm.second;
|
||||
} else if(perm.first == permission::b_client_is_priority_speaker) {
|
||||
permission_client_is_priority_speaker = perm.second;
|
||||
} else {
|
||||
sassert(false);
|
||||
}
|
||||
@ -182,16 +176,43 @@ void ConnectedClient::updateChannelClientProperties(bool lock_channel_tree, bool
|
||||
|
||||
{
|
||||
IconId current_icon_id = this->properties()[property::CLIENT_ICON_ID].as_save<IconId>();
|
||||
IconId new_icon_id{permission_icon_id.has_value ? (IconId) permission_icon_id.value : 0};
|
||||
IconId new_icon_id{ 0};
|
||||
|
||||
auto local_permissions = this->clientPermissions;
|
||||
if(local_permissions) {
|
||||
permission::v2::PermissionFlaggedValue value{0, false};
|
||||
auto permission_flags = local_permissions->permission_flags(permission::i_icon_id);
|
||||
if(permission_flags.channel_specific && this->currentChannel) {
|
||||
auto val = local_permissions->channel_permission(permission::i_icon_id, this->currentChannel->channelId());
|
||||
value = { val.values.value, val.flags.value_set };
|
||||
}
|
||||
|
||||
if(!value.has_value) {
|
||||
value = local_permissions->permission_value_flagged(permission::i_icon_id);
|
||||
}
|
||||
|
||||
if(value.has_value) {
|
||||
new_icon_id = value.value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(this->properties()[property::CLIENT_ICON_ID].update_value(new_icon_id)) {
|
||||
logTrace(this->getServerId(), "{} Updating client icon from {} to {}", CLIENT_STR_LOG_PREFIX, current_icon_id, new_icon_id);
|
||||
updated_client_properties.emplace_back(property::CLIENT_ICON_ID);
|
||||
}
|
||||
}
|
||||
|
||||
auto pSpeakerGranted = permission::v2::permission_granted(1, permission_client_is_priority_speaker);
|
||||
if(properties()[property::CLIENT_IS_PRIORITY_SPEAKER].update_value(pSpeakerGranted)){
|
||||
updated_client_properties.emplace_back(property::CLIENT_IS_PRIORITY_SPEAKER);
|
||||
{
|
||||
auto local_permissions = this->clientPermissions;
|
||||
auto permission_speaker = local_permissions ?
|
||||
local_permissions->channel_permission(permission::b_client_is_priority_speaker, channel ? channel->channelId() : 0) :
|
||||
permission::v2::empty_channel_permission;
|
||||
|
||||
auto speaker_granted = permission::v2::permission_granted(1, { permission_speaker.values.value, permission_speaker.flags.value_set });
|
||||
if(properties()[property::CLIENT_IS_PRIORITY_SPEAKER].update_value(speaker_granted)){
|
||||
updated_client_properties.emplace_back(property::CLIENT_IS_PRIORITY_SPEAKER);
|
||||
}
|
||||
}
|
||||
|
||||
block_flood = !permission::v2::permission_granted(1, permission_ignore_antiflood);
|
||||
|
Loading…
x
Reference in New Issue
Block a user