import React, { FC, memo, useCallback, useMemo, useState, } from '../../../lib/teact/teact'; import { withGlobal } from '../../../lib/teact/teactn'; import { GlobalActions } from '../../../global/types'; import { SettingsScreens } from '../../../types'; import { IS_SINGLE_COLUMN_LAYOUT } from '../../../util/environment'; import { pick } from '../../../util/iteratees'; import useLang from '../../../hooks/useLang'; 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; }; type DispatchProps = Pick; const SettingsHeader: FC = ({ currentScreen, editedFolderId, onReset, onSaveFilter, signOut, deleteChatFolder, onScreenSelect, }) => { const [isSignOutDialogOpen, setIsSignOutDialogOpen] = useState(false); const [isDeleteFolderDialogOpen, setIsDeleteFolderDialogOpen] = useState(false); const openSignOutConfirmation = useCallback(() => { setIsSignOutDialogOpen(true); }, []); const closeSignOutConfirmation = useCallback(() => { setIsSignOutDialogOpen(false); }, []); const openDeleteFolderConfirmation = useCallback(() => { setIsDeleteFolderDialogOpen(true); }, []); const closeDeleteFolderConfirmation = useCallback(() => { setIsDeleteFolderDialogOpen(false); }, []); const handleSignOutMessage = useCallback(() => { closeSignOutConfirmation(); signOut(); }, [closeSignOutConfirmation, signOut]); const handleDeleteFolderMessage = useCallback(() => { closeDeleteFolderConfirmation(); deleteChatFolder({ id: editedFolderId }); onReset(); }, [editedFolderId, closeDeleteFolderConfirmation, deleteChatFolder, onReset]); 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.Notifications: return

{lang('Notifications')}

; case SettingsScreens.Privacy: return

{lang('PrivacySettings')}

; case SettingsScreens.Language: return

{lang('Language')}

; 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.PrivacyGroupChats: return

{lang('AutodownloadGroupChats')}

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

{lang('AlwaysShareWith')}

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

{lang('NeverShareWith')}

; case SettingsScreens.PrivacyActiveSessions: return

{lang('SessionsTitle')}

; 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.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 (

{lang('SETTINGS')}

{lang('LogOutTitle')}
); } } return (
{renderHeaderContent()}
); }; export default memo(withGlobal( undefined, (setGlobal, actions): DispatchProps => pick(actions, ['signOut', 'deleteChatFolder']), )(SettingsHeader));