import type { FC } from '../../../lib/teact/teact'; import React, { memo, useCallback, useMemo, useState, } from '../../../lib/teact/teact'; import { getActions } from '../../../global'; import { SettingsScreens } from '../../../types'; import useAppLayout from '../../../hooks/useAppLayout'; import useLang from '../../../hooks/useLang'; import useMultiClick from '../../../hooks/useMultiClick'; import useOldLang from '../../../hooks/useOldLang'; import Button from '../../ui/Button'; import ConfirmDialog from '../../ui/ConfirmDialog'; import DropdownMenu from '../../ui/DropdownMenu'; import MenuItem from '../../ui/MenuItem'; type OwnProps = { currentScreen: SettingsScreens; editedFolderId?: number; onReset: () => void; onScreenSelect: (screen: SettingsScreens) => void; }; const SettingsHeader: FC = ({ currentScreen, editedFolderId, onReset, onScreenSelect, }) => { const { signOut, openDeleteChatFolderModal, } = getActions(); const { isMobile } = useAppLayout(); const [isSignOutDialogOpen, setIsSignOutDialogOpen] = useState(false); const handleMultiClick = useMultiClick(5, () => { onScreenSelect(SettingsScreens.Experimental); }); const openSignOutConfirmation = useCallback(() => { setIsSignOutDialogOpen(true); }, []); const closeSignOutConfirmation = useCallback(() => { setIsSignOutDialogOpen(false); }, []); const openDeleteFolderConfirmation = useCallback(() => { if (!editedFolderId) return; openDeleteChatFolderModal({ folderId: editedFolderId }); }, [editedFolderId, openDeleteChatFolderModal]); const handleSignOutMessage = useCallback(() => { closeSignOutConfirmation(); signOut({ forceInitApi: true }); }, [closeSignOutConfirmation, signOut]); const SettingsMenuButton: FC<{ onTrigger: () => void; isOpen?: boolean }> = useMemo(() => { return ({ onTrigger, isOpen }) => ( ); }, [isMobile]); const oldLang = useOldLang(); const lang = useLang(); function renderHeaderContent() { switch (currentScreen) { case SettingsScreens.EditProfile: return

{oldLang('lng_settings_information')}

; case SettingsScreens.General: return

{oldLang('General')}

; case SettingsScreens.QuickReaction: return

{oldLang('DoubleTapSetting')}

; case SettingsScreens.CustomEmoji: return

{oldLang('Emoji')}

; case SettingsScreens.Notifications: return

{oldLang('Notifications')}

; case SettingsScreens.DataStorage: return

{oldLang('DataSettings')}

; case SettingsScreens.Privacy: return

{oldLang('PrivacySettings')}

; case SettingsScreens.Language: return

{oldLang('Language')}

; case SettingsScreens.DoNotTranslate: return

{oldLang('DoNotTranslate')}

; case SettingsScreens.Stickers: return

{oldLang('StickersName')}

; case SettingsScreens.Experimental: return

{oldLang('lng_settings_experimental')}

; case SettingsScreens.GeneralChatBackground: return

{oldLang('ChatBackground')}

; case SettingsScreens.GeneralChatBackgroundColor: return

{oldLang('SetColor')}

; case SettingsScreens.PrivacyPhoneNumber: return

{oldLang('PrivacyPhone')}

; case SettingsScreens.PrivacyLastSeen: return

{oldLang('PrivacyLastSeen')}

; case SettingsScreens.PrivacyProfilePhoto: return

{oldLang('Privacy.ProfilePhoto')}

; case SettingsScreens.PrivacyBio: return

{oldLang('PrivacyBio')}

; case SettingsScreens.PrivacyBirthday: return

{oldLang('PrivacyBirthday')}

; case SettingsScreens.PrivacyGifts: return

{lang('PrivacyGifts')}

; case SettingsScreens.PrivacyForwarding: return

{oldLang('PrivacyForwards')}

; case SettingsScreens.PrivacyVoiceMessages: return

{oldLang('PrivacyVoiceMessages')}

; case SettingsScreens.PrivacyMessages: return

{oldLang('PrivacyMessages')}

; case SettingsScreens.PrivacyGroupChats: return

{oldLang('AutodownloadGroupChats')}

; case SettingsScreens.PrivacyPhoneCall: return

{oldLang('Calls')}

; case SettingsScreens.PrivacyLastSeenAllowedContacts: case SettingsScreens.PrivacyProfilePhotoAllowedContacts: case SettingsScreens.PrivacyBioAllowedContacts: case SettingsScreens.PrivacyGroupChatsAllowedContacts: return

{oldLang('AlwaysShareWith')}

; case SettingsScreens.PrivacyLastSeenDeniedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: case SettingsScreens.PrivacyBioDeniedContacts: case SettingsScreens.PrivacyGroupChatsDeniedContacts: return

{oldLang('NeverShareWith')}

; case SettingsScreens.PrivacyPhoneNumberAllowedContacts: case SettingsScreens.PrivacyBirthdayAllowedContacts: case SettingsScreens.PrivacyGiftsAllowedContacts: case SettingsScreens.PrivacyForwardingAllowedContacts: case SettingsScreens.PrivacyVoiceMessagesAllowedContacts: case SettingsScreens.PrivacyPhoneCallAllowedContacts: case SettingsScreens.PrivacyPhoneP2PAllowedContacts: return

{oldLang('AlwaysAllow')}

; case SettingsScreens.PrivacyPhoneNumberDeniedContacts: case SettingsScreens.PrivacyBirthdayDeniedContacts: case SettingsScreens.PrivacyGiftsDeniedContacts: case SettingsScreens.PrivacyForwardingDeniedContacts: case SettingsScreens.PrivacyVoiceMessagesDeniedContacts: case SettingsScreens.PrivacyPhoneCallDeniedContacts: case SettingsScreens.PrivacyPhoneP2PDeniedContacts: return

{oldLang('NeverAllow')}

; case SettingsScreens.Performance: return

{lang('MenuAnimations')}

; case SettingsScreens.ActiveSessions: return

{oldLang('SessionsTitle')}

; case SettingsScreens.ActiveWebsites: return

{oldLang('OtherWebSessions')}

; case SettingsScreens.PrivacyBlockedUsers: return

{oldLang('BlockedUsers')}

; case SettingsScreens.TwoFaDisabled: case SettingsScreens.TwoFaEnabled: return

{oldLang('TwoStepVerification')}

; case SettingsScreens.TwoFaNewPassword: case SettingsScreens.TwoFaChangePasswordNew: case SettingsScreens.TwoFaChangePasswordConfirm: return

{oldLang('PleaseEnterCurrentPassword')}

; case SettingsScreens.TwoFaNewPasswordConfirm: return

{oldLang('PleaseReEnterPassword')}

; case SettingsScreens.TwoFaNewPasswordHint: case SettingsScreens.TwoFaChangePasswordHint: return

{oldLang('PasswordHint')}

; case SettingsScreens.TwoFaNewPasswordEmail: case SettingsScreens.TwoFaRecoveryEmail: return

{oldLang('RecoveryEmailTitle')}

; case SettingsScreens.TwoFaNewPasswordEmailCode: case SettingsScreens.TwoFaRecoveryEmailCode: return

Recovery Email Code

; case SettingsScreens.TwoFaCongratulations: return

{oldLang('TwoStepVerificationPasswordSet')}

; case SettingsScreens.TwoFaChangePasswordCurrent: case SettingsScreens.TwoFaTurnOff: case SettingsScreens.TwoFaRecoveryEmailCurrentPassword: return

{oldLang('PleaseEnterCurrentPassword')}

; case SettingsScreens.PasscodeDisabled: case SettingsScreens.PasscodeEnabled: case SettingsScreens.PasscodeNewPasscode: case SettingsScreens.PasscodeNewPasscodeConfirm: case SettingsScreens.PasscodeCongratulations: return

{oldLang('Passcode')}

; case SettingsScreens.PasscodeTurnOff: return

{oldLang('PasscodeController.Disable.Title')}

; case SettingsScreens.PasscodeChangePasscodeCurrent: case SettingsScreens.PasscodeChangePasscodeNew: return

{oldLang('PasscodeController.Change.Title')}

; case SettingsScreens.PasscodeChangePasscodeConfirm: return

{oldLang('PasscodeController.ReEnterPasscode.Placeholder')}

; case SettingsScreens.Folders: return

{oldLang('Filters')}

; case SettingsScreens.FoldersCreateFolder: return

{oldLang('FilterNew')}

; case SettingsScreens.FoldersShare: return

{oldLang('FolderLinkScreen.Title')}

; case SettingsScreens.FoldersEditFolder: case SettingsScreens.FoldersEditFolderFromChatList: case SettingsScreens.FoldersEditFolderInvites: return (

{oldLang('FilterEdit')}

{Boolean(editedFolderId) && ( {oldLang('Delete')} )}
); case SettingsScreens.FoldersIncludedChats: case SettingsScreens.FoldersIncludedChatsFromChatList: case SettingsScreens.FoldersExcludedChats: case SettingsScreens.FoldersExcludedChatsFromChatList: return (

{oldLang( currentScreen === SettingsScreens.FoldersIncludedChats || currentScreen === SettingsScreens.FoldersIncludedChatsFromChatList ? 'FilterInclude' : 'FilterExclude', )}

); default: return (
{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}

{oldLang('SETTINGS')}

{oldLang('LogOutTitle')}
); } } return (
{renderHeaderContent()}
); }; export default memo(SettingsHeader);