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_talk_power{0, false},
|
||||||
permission_ignore_antiflood{0, false},
|
permission_ignore_antiflood{0, false},
|
||||||
permission_channel_view_power{0, false},
|
permission_channel_view_power{0, false},
|
||||||
permission_channel_ignore_view_power{0, false},
|
permission_channel_ignore_view_power{0, false};
|
||||||
permission_icon_id{0, false},
|
|
||||||
permission_client_is_priority_speaker{0, false};
|
|
||||||
|
|
||||||
for(const auto& perm : permissions) {
|
for(const auto& perm : permissions) {
|
||||||
if(perm.first == permission::i_client_talk_power) {
|
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;
|
permission_channel_view_power = perm.second;
|
||||||
} else if(perm.first == permission::b_channel_ignore_view_power) {
|
} else if(perm.first == permission::b_channel_ignore_view_power) {
|
||||||
permission_channel_ignore_view_power = perm.second;
|
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 {
|
} else {
|
||||||
sassert(false);
|
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 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)) {
|
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);
|
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);
|
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)){
|
auto local_permissions = this->clientPermissions;
|
||||||
updated_client_properties.emplace_back(property::CLIENT_IS_PRIORITY_SPEAKER);
|
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);
|
block_flood = !permission::v2::permission_granted(1, permission_ignore_antiflood);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user