mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Fix missing ifdef guards in API protobuf generator (#9296)
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -2,6 +2,8 @@ | ||||
| // See script/api_protobuf/api_protobuf.py | ||||
| #pragma once | ||||
|  | ||||
| #include "esphome/core/defines.h" | ||||
|  | ||||
| #include "proto.h" | ||||
| #include "api_pb2_size.h" | ||||
|  | ||||
| @@ -15,6 +17,7 @@ enum EntityCategory : uint32_t { | ||||
|   ENTITY_CATEGORY_CONFIG = 1, | ||||
|   ENTITY_CATEGORY_DIAGNOSTIC = 2, | ||||
| }; | ||||
| #ifdef USE_COVER | ||||
| enum LegacyCoverState : uint32_t { | ||||
|   LEGACY_COVER_STATE_OPEN = 0, | ||||
|   LEGACY_COVER_STATE_CLOSED = 1, | ||||
| @@ -29,6 +32,8 @@ enum LegacyCoverCommand : uint32_t { | ||||
|   LEGACY_COVER_COMMAND_CLOSE = 1, | ||||
|   LEGACY_COVER_COMMAND_STOP = 2, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_FAN | ||||
| enum FanSpeed : uint32_t { | ||||
|   FAN_SPEED_LOW = 0, | ||||
|   FAN_SPEED_MEDIUM = 1, | ||||
| @@ -38,6 +43,8 @@ enum FanDirection : uint32_t { | ||||
|   FAN_DIRECTION_FORWARD = 0, | ||||
|   FAN_DIRECTION_REVERSE = 1, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_LIGHT | ||||
| enum ColorMode : uint32_t { | ||||
|   COLOR_MODE_UNKNOWN = 0, | ||||
|   COLOR_MODE_ON_OFF = 1, | ||||
| @@ -51,6 +58,8 @@ enum ColorMode : uint32_t { | ||||
|   COLOR_MODE_RGB_COLOR_TEMPERATURE = 47, | ||||
|   COLOR_MODE_RGB_COLD_WARM_WHITE = 51, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_SENSOR | ||||
| enum SensorStateClass : uint32_t { | ||||
|   STATE_CLASS_NONE = 0, | ||||
|   STATE_CLASS_MEASUREMENT = 1, | ||||
| @@ -62,6 +71,7 @@ enum SensorLastResetType : uint32_t { | ||||
|   LAST_RESET_NEVER = 1, | ||||
|   LAST_RESET_AUTO = 2, | ||||
| }; | ||||
| #endif | ||||
| enum LogLevel : uint32_t { | ||||
|   LOG_LEVEL_NONE = 0, | ||||
|   LOG_LEVEL_ERROR = 1, | ||||
| @@ -82,6 +92,7 @@ enum ServiceArgType : uint32_t { | ||||
|   SERVICE_ARG_TYPE_FLOAT_ARRAY = 6, | ||||
|   SERVICE_ARG_TYPE_STRING_ARRAY = 7, | ||||
| }; | ||||
| #ifdef USE_CLIMATE | ||||
| enum ClimateMode : uint32_t { | ||||
|   CLIMATE_MODE_OFF = 0, | ||||
|   CLIMATE_MODE_HEAT_COOL = 1, | ||||
| @@ -127,11 +138,15 @@ enum ClimatePreset : uint32_t { | ||||
|   CLIMATE_PRESET_SLEEP = 6, | ||||
|   CLIMATE_PRESET_ACTIVITY = 7, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_NUMBER | ||||
| enum NumberMode : uint32_t { | ||||
|   NUMBER_MODE_AUTO = 0, | ||||
|   NUMBER_MODE_BOX = 1, | ||||
|   NUMBER_MODE_SLIDER = 2, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_LOCK | ||||
| enum LockState : uint32_t { | ||||
|   LOCK_STATE_NONE = 0, | ||||
|   LOCK_STATE_LOCKED = 1, | ||||
| @@ -145,6 +160,8 @@ enum LockCommand : uint32_t { | ||||
|   LOCK_LOCK = 1, | ||||
|   LOCK_OPEN = 2, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_MEDIA_PLAYER | ||||
| enum MediaPlayerState : uint32_t { | ||||
|   MEDIA_PLAYER_STATE_NONE = 0, | ||||
|   MEDIA_PLAYER_STATE_IDLE = 1, | ||||
| @@ -162,6 +179,8 @@ enum MediaPlayerFormatPurpose : uint32_t { | ||||
|   MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT = 0, | ||||
|   MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT = 1, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_BLUETOOTH_PROXY | ||||
| enum BluetoothDeviceRequestType : uint32_t { | ||||
|   BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT = 0, | ||||
|   BLUETOOTH_DEVICE_REQUEST_TYPE_DISCONNECT = 1, | ||||
| @@ -183,6 +202,7 @@ enum BluetoothScannerMode : uint32_t { | ||||
|   BLUETOOTH_SCANNER_MODE_PASSIVE = 0, | ||||
|   BLUETOOTH_SCANNER_MODE_ACTIVE = 1, | ||||
| }; | ||||
| #endif | ||||
| enum VoiceAssistantSubscribeFlag : uint32_t { | ||||
|   VOICE_ASSISTANT_SUBSCRIBE_NONE = 0, | ||||
|   VOICE_ASSISTANT_SUBSCRIBE_API_AUDIO = 1, | ||||
| @@ -192,6 +212,7 @@ enum VoiceAssistantRequestFlag : uint32_t { | ||||
|   VOICE_ASSISTANT_REQUEST_USE_VAD = 1, | ||||
|   VOICE_ASSISTANT_REQUEST_USE_WAKE_WORD = 2, | ||||
| }; | ||||
| #ifdef USE_VOICE_ASSISTANT | ||||
| enum VoiceAssistantEvent : uint32_t { | ||||
|   VOICE_ASSISTANT_ERROR = 0, | ||||
|   VOICE_ASSISTANT_RUN_START = 1, | ||||
| @@ -216,6 +237,8 @@ enum VoiceAssistantTimerEvent : uint32_t { | ||||
|   VOICE_ASSISTANT_TIMER_CANCELLED = 2, | ||||
|   VOICE_ASSISTANT_TIMER_FINISHED = 3, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_ALARM_CONTROL_PANEL | ||||
| enum AlarmControlPanelState : uint32_t { | ||||
|   ALARM_STATE_DISARMED = 0, | ||||
|   ALARM_STATE_ARMED_HOME = 1, | ||||
| @@ -237,20 +260,27 @@ enum AlarmControlPanelStateCommand : uint32_t { | ||||
|   ALARM_CONTROL_PANEL_ARM_CUSTOM_BYPASS = 5, | ||||
|   ALARM_CONTROL_PANEL_TRIGGER = 6, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_TEXT | ||||
| enum TextMode : uint32_t { | ||||
|   TEXT_MODE_TEXT = 0, | ||||
|   TEXT_MODE_PASSWORD = 1, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_VALVE | ||||
| enum ValveOperation : uint32_t { | ||||
|   VALVE_OPERATION_IDLE = 0, | ||||
|   VALVE_OPERATION_IS_OPENING = 1, | ||||
|   VALVE_OPERATION_IS_CLOSING = 2, | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_UPDATE | ||||
| enum UpdateCommand : uint32_t { | ||||
|   UPDATE_COMMAND_NONE = 0, | ||||
|   UPDATE_COMMAND_UPDATE = 1, | ||||
|   UPDATE_COMMAND_CHECK = 2, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| }  // namespace enums | ||||
|  | ||||
| @@ -523,6 +553,7 @@ class SubscribeStatesRequest : public ProtoMessage { | ||||
|  | ||||
|  protected: | ||||
| }; | ||||
| #ifdef USE_BINARY_SENSOR | ||||
| class ListEntitiesBinarySensorResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 12; | ||||
| @@ -562,6 +593,8 @@ class BinarySensorStateResponse : public StateResponseProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_COVER | ||||
| class ListEntitiesCoverResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 13; | ||||
| @@ -631,6 +664,8 @@ class CoverCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_FAN | ||||
| class ListEntitiesFanResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 14; | ||||
| @@ -709,6 +744,8 @@ class FanCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_LIGHT | ||||
| class ListEntitiesLightResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 15; | ||||
| @@ -810,6 +847,8 @@ class LightCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_SENSOR | ||||
| class ListEntitiesSensorResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 16; | ||||
| @@ -853,6 +892,8 @@ class SensorStateResponse : public StateResponseProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_SWITCH | ||||
| class ListEntitiesSwitchResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 17; | ||||
| @@ -910,6 +951,8 @@ class SwitchCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_TEXT_SENSOR | ||||
| class ListEntitiesTextSensorResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 18; | ||||
| @@ -949,6 +992,7 @@ class TextSensorStateResponse : public StateResponseProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| class SubscribeLogsRequest : public ProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 28; | ||||
| @@ -987,6 +1031,7 @@ class SubscribeLogsResponse : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #ifdef USE_API_NOISE | ||||
| class NoiseEncryptionSetKeyRequest : public ProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 124; | ||||
| @@ -1021,6 +1066,7 @@ class NoiseEncryptionSetKeyResponse : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| class SubscribeHomeassistantServicesRequest : public ProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 34; | ||||
| @@ -1226,6 +1272,7 @@ class ExecuteServiceRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
| }; | ||||
| #ifdef USE_ESP32_CAMERA | ||||
| class ListEntitiesCameraResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 43; | ||||
| @@ -1283,6 +1330,8 @@ class CameraImageRequest : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_CLIMATE | ||||
| class ListEntitiesClimateResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 46; | ||||
| @@ -1392,6 +1441,8 @@ class ClimateCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_NUMBER | ||||
| class ListEntitiesNumberResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 49; | ||||
| @@ -1453,6 +1504,8 @@ class NumberCommandRequest : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_SELECT | ||||
| class ListEntitiesSelectResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 52; | ||||
| @@ -1511,6 +1564,8 @@ class SelectCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_SIREN | ||||
| class ListEntitiesSirenResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 55; | ||||
| @@ -1577,6 +1632,8 @@ class SirenCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_LOCK | ||||
| class ListEntitiesLockResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 58; | ||||
| @@ -1639,6 +1696,8 @@ class LockCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_BUTTON | ||||
| class ListEntitiesButtonResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 61; | ||||
| @@ -1675,6 +1734,8 @@ class ButtonCommandRequest : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_MEDIA_PLAYER | ||||
| class MediaPlayerSupportedFormat : public ProtoMessage { | ||||
|  public: | ||||
|   std::string format{}; | ||||
| @@ -1759,6 +1820,8 @@ class MediaPlayerCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_BLUETOOTH_PROXY | ||||
| class SubscribeBluetoothLEAdvertisementsRequest : public ProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 66; | ||||
| @@ -2313,6 +2376,8 @@ class BluetoothScannerSetModeRequest : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_VOICE_ASSISTANT | ||||
| class SubscribeVoiceAssistantRequest : public ProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 89; | ||||
| @@ -2562,6 +2627,8 @@ class VoiceAssistantSetConfiguration : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_ALARM_CONTROL_PANEL | ||||
| class ListEntitiesAlarmControlPanelResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 94; | ||||
| @@ -2622,6 +2689,8 @@ class AlarmControlPanelCommandRequest : public ProtoMessage { | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_TEXT | ||||
| class ListEntitiesTextResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 97; | ||||
| @@ -2683,6 +2752,8 @@ class TextCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_DATETIME_DATE | ||||
| class ListEntitiesDateResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 100; | ||||
| @@ -2743,6 +2814,8 @@ class DateCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_DATETIME_TIME | ||||
| class ListEntitiesTimeResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 103; | ||||
| @@ -2803,6 +2876,8 @@ class TimeCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_EVENT | ||||
| class ListEntitiesEventResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 107; | ||||
| @@ -2841,6 +2916,8 @@ class EventResponse : public StateResponseProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_length(uint32_t field_id, ProtoLengthDelimited value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_VALVE | ||||
| class ListEntitiesValveResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 109; | ||||
| @@ -2903,6 +2980,8 @@ class ValveCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_DATETIME_DATETIME | ||||
| class ListEntitiesDateTimeResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 112; | ||||
| @@ -2958,6 +3037,8 @@ class DateTimeCommandRequest : public ProtoMessage { | ||||
|  protected: | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
| }; | ||||
| #endif | ||||
| #ifdef USE_UPDATE | ||||
| class ListEntitiesUpdateResponse : public InfoResponseProtoMessage { | ||||
|  public: | ||||
|   static constexpr uint16_t MESSAGE_TYPE = 116; | ||||
| @@ -3023,6 +3104,7 @@ class UpdateCommandRequest : public ProtoMessage { | ||||
|   bool decode_32bit(uint32_t field_id, Proto32Bit value) override; | ||||
|   bool decode_varint(uint32_t field_id, ProtoVarInt value) override; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| }  // namespace api | ||||
| }  // namespace esphome | ||||
|   | ||||
							
								
								
									
										4228
									
								
								esphome/components/api/api_pb2_dump.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4228
									
								
								esphome/components/api/api_pb2_dump.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -2,9 +2,10 @@ | ||||
| // See script/api_protobuf/api_protobuf.py | ||||
| #pragma once | ||||
|  | ||||
| #include "api_pb2.h" | ||||
| #include "esphome/core/defines.h" | ||||
|  | ||||
| #include "api_pb2.h" | ||||
|  | ||||
| namespace esphome { | ||||
| namespace api { | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user