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 { IS_SINGLE_COLUMN_LAYOUT } from '../../../util/environment'; import useLang from '../../../hooks/useLang'; import useMultiClick from '../../../hooks/useMultiClick'; import DropdownMenu from '../../ui/DropdownMenu'; import MenuItem from '../../ui/MenuItem'; import Button from '../../ui/Button'; import ConfirmDialog from '../../ui/ConfirmDialog'; type OwnProps = { currentScreen: SettingsScreens; editedFolderId?: number; onReset: () => void; onSaveFilter: () => void; onScreenSelect: (screen: SettingsScreens) => void; }; const SettingsHeader: FC = ({ currentScreen, editedFolderId, onReset, onSaveFilter, onScreenSelect, }) => { const { signOut, openDeleteChatFolderModal, } = getActions(); 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(); }, [closeSignOutConfirmation, signOut]); const SettingsMenuButton: FC<{ onTrigger: () => void; isOpen?: boolean }> = useMemo(() => { return ({ onTrigger, isOpen }) => ( ); }, []); const lang = useLang(); function renderHeaderContent() { switch (currentScreen) { case SettingsScreens.EditProfile: return

{lang('lng_settings_information')}

; case SettingsScreens.General: return

{lang('General')}

; case SettingsScreens.QuickReaction: return

{lang('DoubleTapSetting')}

; case SettingsScreens.Notifications: return

{lang('Notifications')}

; case SettingsScreens.DataStorage: return

{lang('DataSettings')}

; case SettingsScreens.Privacy: return

{lang('PrivacySettings')}

; case SettingsScreens.Language: return

{lang('Language')}

; case SettingsScreens.Experimental: return

{lang('lng_settings_experimental')}

; case SettingsScreens.GeneralChatBackground: return

{lang('ChatBackground')}

; case SettingsScreens.GeneralChatBackgroundColor: return

{lang('SetColor')}

; case SettingsScreens.PrivacyPhoneNumber: return

{lang('PrivacyPhone')}

; case SettingsScreens.PrivacyLastSeen: return

{lang('PrivacyLastSeen')}

; case SettingsScreens.PrivacyProfilePhoto: return

{lang('Privacy.ProfilePhoto')}

; case SettingsScreens.PrivacyForwarding: return

{lang('PrivacyForwards')}

; case SettingsScreens.PrivacyVoiceMessages: return

{lang('PrivacyVoiceMessages')}

; case SettingsScreens.PrivacyGroupChats: return

{lang('AutodownloadGroupChats')}

; case SettingsScreens.PrivacyPhoneNumberAllowedContacts: case SettingsScreens.PrivacyLastSeenAllowedContacts: case SettingsScreens.PrivacyProfilePhotoAllowedContacts: case SettingsScreens.PrivacyForwardingAllowedContacts: case SettingsScreens.PrivacyVoiceMessagesAllowedContacts: case SettingsScreens.PrivacyGroupChatsAllowedContacts: return

{lang('AlwaysShareWith')}

; case SettingsScreens.PrivacyPhoneNumberDeniedContacts: case SettingsScreens.PrivacyLastSeenDeniedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: case SettingsScreens.PrivacyForwardingDeniedContacts: case SettingsScreens.PrivacyVoiceMessagesDeniedContacts: case SettingsScreens.PrivacyGroupChatsDeniedContacts: return

{lang('NeverShareWith')}

; case SettingsScreens.ActiveSessions: return

{lang('SessionsTitle')}

; case SettingsScreens.ActiveWebsites: return

{lang('OtherWebSessions')}

; case SettingsScreens.PrivacyBlockedUsers: return

{lang('BlockedUsers')}

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

{lang('TwoStepVerification')}

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

{lang('PleaseEnterCurrentPassword')}

; case SettingsScreens.TwoFaNewPasswordConfirm: return

{lang('PleaseReEnterPassword')}

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

{lang('PasswordHint')}

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

{lang('RecoveryEmailTitle')}

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

Recovery Email Code

; case SettingsScreens.TwoFaCongratulations: return

{lang('TwoStepVerificationPasswordSet')}

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

{lang('PleaseEnterCurrentPassword')}

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

{lang('Passcode')}

; case SettingsScreens.PasscodeTurnOff: return

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

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

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

; case SettingsScreens.PasscodeChangePasscodeConfirm: return

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

; case SettingsScreens.Folders: return

{lang('Filters')}

; case SettingsScreens.FoldersCreateFolder: return

{lang('FilterNew')}

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

{lang('FilterEdit')}

{editedFolderId && ( {lang('Delete')} )}
); case SettingsScreens.FoldersIncludedChats: case SettingsScreens.FoldersIncludedChatsFromChatList: case SettingsScreens.FoldersExcludedChats: case SettingsScreens.FoldersExcludedChatsFromChatList: return (
{(currentScreen === SettingsScreens.FoldersIncludedChats || currentScreen === SettingsScreens.FoldersIncludedChatsFromChatList) ? (

{lang('FilterInclude')}

) : (

{lang('FilterExclude')}

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

{lang('SETTINGS')}

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