import type { FC } from '../../../lib/teact/teact'; import { memo, useEffect } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../global'; import type { ApiStarsAmount, ApiTonAmount } from '../../../api/types'; import { SettingsScreens } from '../../../types'; import { FAQ_URL, PRIVACY_URL, TON_CURRENCY_CODE } from '../../../config'; import { formatStarsAmount } from '../../../global/helpers/payments'; import { selectIsGiveawayGiftsPurchaseAvailable, selectIsPremiumPurchaseBlocked, } from '../../../global/selectors'; import { convertCurrencyFromBaseUnit } from '../../../util/formatCurrency'; import useFlag from '../../../hooks/useFlag'; import useHistoryBack from '../../../hooks/useHistoryBack'; import useLang from '../../../hooks/useLang'; import useLastCallback from '../../../hooks/useLastCallback'; import Icon from '../../common/icons/Icon'; import StarIcon from '../../common/icons/StarIcon'; import ChatExtra from '../../common/profile/ChatExtra'; import ProfileInfo from '../../common/ProfileInfo'; import ConfirmDialog from '../../ui/ConfirmDialog'; import ListItem from '../../ui/ListItem'; type OwnProps = { isActive?: boolean; onReset: () => void; }; type StateProps = { sessionCount: number; currentUserId?: string; canBuyPremium?: boolean; isGiveawayAvailable?: boolean; starsBalance?: ApiStarsAmount; tonBalance?: ApiTonAmount; }; const SettingsMain: FC = ({ isActive, currentUserId, sessionCount, canBuyPremium, isGiveawayAvailable, starsBalance, tonBalance, onReset, }) => { const { loadMoreProfilePhotos, openPremiumModal, openSupportChat, openUrl, openGiftRecipientPicker, openStarsBalanceModal, openSettingsScreen, } = getActions(); const [isSupportDialogOpen, openSupportDialog, closeSupportDialog] = useFlag(false); const lang = useLang(); useEffect(() => { if (currentUserId) { loadMoreProfilePhotos({ peerId: currentUserId, isPreload: true }); } }, [currentUserId]); useHistoryBack({ isActive, onBack: onReset, }); const handleOpenSupport = useLastCallback(() => { openSupportChat(); closeSupportDialog(); }); return (
{currentUserId && ( )} {currentUserId && ( )}
openSettingsScreen({ screen: SettingsScreens.General })} > {lang('TelegramGeneralSettingsViewController')} openSettingsScreen({ screen: SettingsScreens.Performance })} > {lang('MenuAnimations')} openSettingsScreen({ screen: SettingsScreens.Notifications })} > {lang('Notifications')} openSettingsScreen({ screen: SettingsScreens.DataStorage })} > {lang('DataSettings')} openSettingsScreen({ screen: SettingsScreens.Privacy })} > {lang('PrivacySettings')} openSettingsScreen({ screen: SettingsScreens.Folders })} > {lang('Filters')} openSettingsScreen({ screen: SettingsScreens.ActiveSessions })} > {lang('SessionsTitle')} {sessionCount > 0 && ({sessionCount})} openSettingsScreen({ screen: SettingsScreens.Language })} > {lang('Language')} {lang.languageInfo.nativeName} openSettingsScreen({ screen: SettingsScreens.Stickers })} > {lang('MenuStickers')}
{canBuyPremium && ( } narrow onClick={() => openPremiumModal()} > {lang('TelegramPremium')} )} } narrow onClick={() => openStarsBalanceModal({})} > {lang('MenuStars')} {Boolean(starsBalance) && ( {formatStarsAmount(lang, starsBalance)} )} } narrow onClick={() => openStarsBalanceModal({ currency: TON_CURRENCY_CODE })} > {lang('MenuTon')} {Boolean(tonBalance) && ( {convertCurrencyFromBaseUnit(tonBalance.amount, tonBalance.currency)} )} {isGiveawayAvailable && ( openGiftRecipientPicker()} > {lang('MenuSendGift')} )}
{lang('AskAQuestion')} openUrl({ url: FAQ_URL })} > {lang('MenuTelegramFaq')} openUrl({ url: PRIVACY_URL })} > {lang('MenuPrivacyPolicy')}
); }; export default memo(withGlobal( (global): Complete => { const { currentUserId } = global; const isGiveawayAvailable = selectIsGiveawayGiftsPurchaseAvailable(global); const starsBalance = global.stars?.balance; const tonBalance = global.ton?.balance; return { sessionCount: global.activeSessions.orderedHashes.length, currentUserId, canBuyPremium: !selectIsPremiumPurchaseBlocked(global), isGiveawayAvailable, starsBalance, tonBalance, }; }, )(SettingsMain));