
    soj                      ,   d dl mZ d dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZ d dlmZ  G d de          Z	 ddedej         dedede!ddfdZ"dede#e#e                  fdZ$dS )    )StrEnum)Update)ContextTypesN)	GroupChat)GroupChatEnabledDisabledFeature)GroupChatEnabledFeaturePin)Emoji)Feature)ReservedKeyboardKeys)Screen)Keyboard)is_main_groupget_group_or_topic_text)full_message_sendc                       e Zd ZdZdZdZdS )FeaturesReservedKeysz+
    The reserved keys for this screen
    abN)__name__
__module____qualname____doc__FEATURE
PIN_TOGGLE     7/app/src/chat/group/screens/screen_settings_features.pyr   r      s$          GJJJr   r   Fupdatecontextinbound_keyboard
group_chatadded_to_groupreturnc           
        K   |ot           j        |j        v r[t          |j        t           j                           }t           j        |j        v r|j        t           j                 }|                                o| p|                                 o|}|r2t                      }||_        ||_        |	                                 nt          j
                                        t          j        |k    t          j        |k    z                                             n9|                                o|j        t          j                  p+|                                 o|j        t          j                 }	|	rt!                      }
||
_        ||
_        |
	                                 t          j
                                        t          j        |k    t          j        |k    z                                             nWt!          j
                                        t           j        |k    t           j        |k    z                                             t#          j        |j                  }t)          |          }|rt*          j        nd}t*          j                            |t3          |                    }| j        du}t7          ||| ||d|d           d{V  dS )a!  
    Manage the features screen
    :param update: The update object
    :param context: The context object
    :param inbound_keyboard: The inbound keyboard
    :param group_chat: The group chat
    :param added_to_group: If the Bot was just added to the group chat
    :return: None
    N TF)r   keyboardadd_delete_buttonuse_close_deleter    should_auto_delete)r   r   infor
   r   is_pinned_by_defaultr   r!   featuresavedeletewhereexecuteis_enabled_by_defaultr   TOGGLEr   r   	get_by_ididget_features_keyboardphrasesTHANKS_FOR_ADDING_TO_GROUPGRP_TXT_FEATURESformatr   effective_userr   )r   r   r    r!   r"   r,   pin_toggle_to_enabledadd_pin_recordfeature_pin
add_recordenabled_disabled_featureoutbound_keyboardthanks_textot_textcan_add_delete_buttons                  r   managerD      s     " #(<(DHXH](](]"#3#89M9U#VWW  *.>.CCC$4$9:N:Y$Z!
 ,,..L7L3L 00222L7L   8::)3&&-#  """" +13399/:jH19WDF  '))))
 --// K(-.B.IJJ 11333 G$)*>*EF   +J+L+L(6@(33:(0(--/// +13399/:jH19WDF  '))))/688>>4?:M6>'IK  '))) (77
-j998FN'44BK&--k;RS];^;^__G #1=
"/) 	 	 	 	 	 	 	 	 	 	 	 	r   c                 |   t          |           rt          j                    }nt          j                    }|                    d            t          j                    }|D ],}|                    |           |                    |           -d | j        D             }g g}g }|D ]}||vr|	                                n|	                                 }|rt          j        nt          j        }	t          j        |j        t           j        | i}
t%          |	 d|                                 |
t(          j                  }|                                r|r|d | j        D             v }|r|                                 n|                                }|rt          j        nd}t          j        |j        t          j        | i}t%          | dt          j         |t(          j                  }t9          |          dk    r|                    |           g }|                    |           |                    |           n|                    |           t9          |          t:          j        k    r|                    |           g }t9          |          dk    r|                    |           |S )	zj
    Get the feature keyboard
    :param group_chat: The group chat
    :return: The feature keyboard
    c                 *    |                                  S )N)get_description)xs    r   <lambda>z'get_features_keyboard.<locals>.<lambda>   s     1 1 3 3 r   )keyc                     g | ]	}|j         
S r   r,   ).0r?   s     r   
<listcomp>z)get_features_keyboard.<locals>.<listcomp>   s+     0 0 0$ 	!(0 0 0r    )r*   screenc                     g | ]	}|j         
S r   rL   )rM   enabled_features     r   rN   z)get_features_keyboard.<locals>.<listcomp>   s(     ) ) ),;') ) )r   r%   r   )r   r
   get_allget_non_restrictedsortget_pinnableremoveappendenabled_disabled_featuresr1   r	   ENABLEDDISABLED_EMPTYr   r   valuer   r2   r   rG   r   GRP_SETTINGS_FEATURESis_pinnableenabled_features_pinr+   RADIO_BUTTONr   PINlencFEATURE_KEYBOARD_ROW_SIZE)r!   featurespinnable_featurespinnable_featurerY   r&   keyboard_rowr,   is_enabled_featureemojibutton_infobuttonhas_pin_recordis_enabled_pinis_enabled_emojipin_button_info
pin_toggles                    r   r5   r5      s    Z   ?")/"3"3")"<">"> MM33M444  ,..- * *()))())))0 0(2(L0 0 0
 ')TH#%L 4 4 777 ))+++22444 	 "4M9M ('- '-?)?
 $22w..0022/
 
 
    	(%7 	($ ) )?I?^) ) ) N
 "4G0022221133 
 6DKu11$,gm$/^1CO $,#11ei11$3$ $ $J <  1$$---!'''
++++'''| ;;;OOL)))L
<1%%%Or   )F)%enumr   src.tg_compatr   src.tg_compat.extr   	constantsrc   resources.phrasesr6   src.model.GroupChatr   )src.model.GroupChatEnabledDisabledFeaturer   $src.model.GroupChatEnabledFeaturePinr   src.model.enums.Emojir	   src.model.enums.Featurer
   $src.model.enums.ReservedKeyboardKeysr   src.model.enums.Screenr   src.model.pojo.Keyboardr   src.service.group_servicer   r   src.service.message_servicer   r   DEFAULT_TYPEboolrD   listr5   r   r   r   <module>r      s                     * * * * * *     # # # # # # ) ) ) ) ) ) U U U U U U K K K K K K ' ' ' ' ' ' + + + + + + E E E E E E ) ) ) ) ) ) , , , , , , L L L L L L L L 9 9 9 9 9 9    7    !c cc&c c 	c
 c 
c c c cLXi XDh4H X X X X X Xr   