public FeaturesPopup(IProtoService protoService, PremiumState state, IList <PremiumFeature> features, IDictionary <Type, Animation> animations, Stickers stickers, PremiumFeature selectedFeature)
        {
            InitializeComponent();

            _protoService = protoService;
            _animations   = animations;
            _stickers     = stickers;

            var items = features.Where(x => x is not PremiumFeatureIncreasedLimits).ToArray();

            Pager.NumberOfPages = items.Length;

            ScrollingHost.ItemsSource  = items;
            ScrollingHost.SelectedItem = selectedFeature;

            PurchaseCommand.Content = protoService.IsPremium
                ? Strings.Resources.OK
                : string.Format(Strings.Resources.SubscribeToPremium, Locale.FormatCurrency(state.MonthlyAmount, state.Currency));
        }
        internal void UpdateFeature(IProtoService protoService, PremiumFeature feature, Animation value)
        {
            var bottom = feature switch
            {
                PremiumFeatureIncreasedUploadFileSize => true,
                PremiumFeatureDisabledAds => true,
                _ => false
            };

            if (bottom)
            {
                FrameOutside.Margin = new Thickness(0, -157, 0, 0);
                FrameInside.Margin  = new Thickness(0, -157, 0, 0);

                Canvas.SetTop(FrameScreen, 0);
                Canvas.SetTop(Player, 0);

                FrameHole.Visibility = Visibility.Collapsed;
            }
            else
            {
                FrameOutside.Margin = new Thickness(0, 0, 0, 0);
                FrameInside.Margin  = new Thickness(0, 0, 0, 0);

                Canvas.SetTop(FrameScreen, 28);
                Canvas.SetTop(Player, 28);

                FrameHole.Visibility = Visibility.Visible;
            }

            var titleValue    = string.Empty;
            var subtitleValue = string.Empty;

            switch (feature)
            {
            case PremiumFeatureAdvancedChatManagement:
                titleValue    = Strings.Resources.PremiumPreviewAdvancedChatManagement;
                subtitleValue = Strings.Resources.PremiumPreviewAdvancedChatManagementDescription;
                break;

            case PremiumFeatureAnimatedProfilePhoto:
                titleValue    = Strings.Resources.PremiumPreviewAnimatedProfiles;
                subtitleValue = Strings.Resources.PremiumPreviewAnimatedProfilesDescription;
                break;

            case PremiumFeatureAppIcons:
                titleValue    = Strings.Resources.PremiumPreviewAppIcon;
                subtitleValue = Strings.Resources.PremiumPreviewAppIconDescription;
                break;

            case PremiumFeatureCustomEmoji:
                titleValue    = Strings.Resources.PremiumPreviewEmoji;
                subtitleValue = Strings.Resources.PremiumPreviewEmojiDescription;
                break;

            case PremiumFeatureDisabledAds:
                titleValue    = Strings.Resources.PremiumPreviewNoAds;
                subtitleValue = Strings.Resources.PremiumPreviewNoAdsDescription;
                break;

            case PremiumFeatureImprovedDownloadSpeed:
                titleValue    = Strings.Resources.PremiumPreviewDownloadSpeed;
                subtitleValue = Strings.Resources.PremiumPreviewDownloadSpeedDescription;
                break;

            case PremiumFeatureIncreasedUploadFileSize:
                titleValue    = Strings.Resources.PremiumPreviewUploads;
                subtitleValue = Strings.Resources.PremiumPreviewUploadsDescription;
                break;

            case PremiumFeatureProfileBadge:
                titleValue    = Strings.Resources.PremiumPreviewProfileBadge;
                subtitleValue = Strings.Resources.PremiumPreviewProfileBadgeDescription;
                break;

            case PremiumFeatureUniqueReactions:
                titleValue    = Strings.Resources.PremiumPreviewReactions;
                subtitleValue = Strings.Resources.PremiumPreviewReactionsDescription;
                break;

            case PremiumFeatureUniqueStickers:
                titleValue    = Strings.Resources.PremiumPreviewStickers;
                subtitleValue = Strings.Resources.PremiumPreviewStickersDescription;
                break;

            case PremiumFeatureVoiceRecognition:
                titleValue    = Strings.Resources.PremiumPreviewVoiceToText;
                subtitleValue = Strings.Resources.PremiumPreviewVoiceToTextDescription;
                break;
            }

            Title.Text    = titleValue;
            Subtitle.Text = subtitleValue;

            Player.Source = new RemoteVideoSource(protoService, value.AnimationValue, value.Duration);
        }