From 548430bd2e630d25f84e4553b059d65349170347 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 25 Sep 2023 13:00:12 +0200 Subject: [PATCH] User: Add 'Block' option to menu (#3877) --- src/components/middle/HeaderActions.tsx | 28 ++++++++++-- src/components/middle/HeaderMenuContainer.tsx | 44 ++++++++++++++----- src/components/middle/MiddleColumn.tsx | 31 +++++++++++-- 3 files changed, 86 insertions(+), 17 deletions(-) diff --git a/src/components/middle/HeaderActions.tsx b/src/components/middle/HeaderActions.tsx index 09e0389b6..d7d67892a 100644 --- a/src/components/middle/HeaderActions.tsx +++ b/src/components/middle/HeaderActions.tsx @@ -57,6 +57,7 @@ interface StateProps { isRightColumnShown?: boolean; canStartBot?: boolean; canRestartBot?: boolean; + canUnblock?: boolean; canSubscribe?: boolean; canSearch?: boolean; canCall?: boolean; @@ -88,6 +89,7 @@ const HeaderActions: FC = ({ isChannel, canStartBot, canRestartBot, + canUnblock, canSubscribe, canSearch, canCall, @@ -124,6 +126,7 @@ const HeaderActions: FC = ({ togglePeerTranslations, openChatLanguageModal, setSettingOption, + unblockUser, } = getActions(); // eslint-disable-next-line no-null/no-null const menuButtonRef = useRef(null); @@ -162,6 +165,10 @@ const HeaderActions: FC = ({ restartBot({ chatId }); }); + const handleUnblock = useLastCallback(() => { + unblockUser({ userId: chatId }); + }); + const handleTranslateClick = useLastCallback(() => { if (isTranslating) { requestChatTranslation({ chatId, toLanguageCode: undefined }); @@ -341,6 +348,16 @@ const HeaderActions: FC = ({ {lang('BotRestart')} )} + {canExpandActions && canUnblock && ( + + )} {canSearch && ( )} + {isMobile && renderingCanUnblock && ( +
+ +
+ )} ( ); const shouldJoinToSend = Boolean(chat?.isNotJoined && chat.isJoinToSend); const shouldSendJoinRequest = Boolean(chat?.isNotJoined && chat.isJoinRequest); - const canRestartBot = Boolean(bot && selectIsUserBlocked(global, bot.id)); + const isUserBlocked = isPrivate ? selectIsUserBlocked(global, chatId) : false; + const canRestartBot = Boolean(bot && isUserBlocked); const canStartBot = !canRestartBot && isBotNotStarted; + const canUnblock = isUserBlocked && !bot; const shouldLoadFullChat = Boolean( chat && isChatGroup(chat) && !selectChatFullInfo(global, chat.id), ); @@ -778,6 +802,7 @@ export default memo(withGlobal( pinnedIds, topMessageId, canUnpin, + canUnblock, }; }, )(MiddleColumn));