Implemented new chat system
This commit is contained in:
		
							parent
							
								
									692fba3791
								
							
						
					
					
						commit
						9f2181c18b
					
				| @ -67,17 +67,20 @@ namespace ts { | ||||
| 		    	auto permission_manager = this->permissions(); /* copy the manager */ | ||||
| 				assert(permission_manager); | ||||
| 				const auto data = permission_manager->permission_value_flagged(permission); | ||||
| 		        if(!data.has_value) { | ||||
| 			        return !require_granted_value || granted_value.has_value; | ||||
| 		        } | ||||
| 		        if(!granted_value.has_value) { | ||||
| 			        return false; | ||||
| 		        } | ||||
| 				if(data.value == -1) { | ||||
| 				return BasicChannel::permission_granted(data,granted_value, require_granted_value); | ||||
| 			} | ||||
| 
 | ||||
| 			ts_always_inline | ||||
| 			static bool permission_granted(const permission::v2::PermissionFlaggedValue& channel_permission_value, const permission::v2::PermissionFlaggedValue& granted_value, bool require_granted_value) { | ||||
| 				if(!channel_permission_value.has_value || channel_permission_value.value == 0) { | ||||
| 					return !require_granted_value || granted_value.has_value; | ||||
| 				} | ||||
| 				if(channel_permission_value.value == -1) { | ||||
| 					return granted_value.value == -1; | ||||
| 				} | ||||
| 				return granted_value.value >= data.value; | ||||
| 				return granted_value.value >= channel_permission_value.value; | ||||
| 			} | ||||
| 
 | ||||
| 			ts_always_inline bool talk_power_granted(const permission::v2::PermissionFlaggedValue& granted_value) { | ||||
| 				return this->permission_granted(permission::i_client_needed_talk_power, granted_value, false); | ||||
| 			} | ||||
|  | ||||
| @ -1173,7 +1173,7 @@ void v2::PermissionManager::set_permission(const PermissionType &permission, con | ||||
| 	} else if(action_value == v2::PermissionUpdateType::delete_value) { | ||||
| 		data.flags.value_set = false; | ||||
| 		data.flags.flag_value_update = true; | ||||
| 		data.values.grant = permNotGranted; /* required for the database else it does not "deletes" the value */ | ||||
| 		data.values.value = permNotGranted; /* required for the database else it does not "deletes" the value */ | ||||
| 	} | ||||
| 
 | ||||
| 	if(action_grant == v2::PermissionUpdateType::set_value) { | ||||
| @ -1248,7 +1248,7 @@ void v2::PermissionManager::set_channel_permission(const PermissionType &permiss | ||||
| 	if(action_grant == v2::PermissionUpdateType::set_value) { | ||||
| 		permission_container->flags.grant_set = true; | ||||
| 		permission_container->flags.flag_grant_update = true; | ||||
| 		permission_container->values.grant = values.value; | ||||
| 		permission_container->values.grant = values.grant; | ||||
| 	} else if(action_grant == v2::PermissionUpdateType::delete_value) { | ||||
| 		permission_container->flags.grant_set = false; | ||||
| 		permission_container->flags.flag_grant_update = true; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user