Exemplo n.º 1
0
 public static void ShowLimitReached(this INavigationService service, PremiumLimitType limit)
 {
     if (service is TLNavigationService serviceEx)
     {
         serviceEx.ShowLimitReached(limit);
     }
 }
Exemplo n.º 2
0
        private Task <BaseObject> GetPremiumLimitAsync(IProtoService protoService, PremiumLimitType type)
        {
            if (type is PremiumLimitTypeConnectedAccounts)
            {
                return(Task.FromResult <BaseObject>(new PremiumLimit(type, 3, 4)));
            }

            if (protoService.IsPremiumAvailable)
            {
                return(protoService.SendAsync(new GetPremiumLimit(type)));
            }
Exemplo n.º 3
0
 public async void ShowLimitReached(PremiumLimitType type)
 {
     await new LimitReachedPopup(this, _protoService, type).ShowQueuedAsync();
 }
Exemplo n.º 4
0
        private async void InitializeLimit(IProtoService protoService, PremiumLimitType type)
        {
            var limit = await GetPremiumLimitAsync(protoService, type) as PremiumLimit;

            if (limit != null)
            {
                var iconValue    = string.Empty;
                var freeValue    = string.Empty;
                var lockedValue  = string.Empty;
                var premiumValue = string.Empty;

                var animatedValue = new Uri("ms-appx:///Assets/Animations/Double.json");

                switch (type)
                {
                case PremiumLimitTypeChatFilterChosenChatCount:
                    iconValue    = Icons.ChatFilled;
                    freeValue    = Strings.Resources.LimitReachedChatInFolders;
                    lockedValue  = Strings.Resources.LimitReachedChatInFoldersLocked;
                    premiumValue = Strings.Resources.LimitReachedChatInFoldersPremium;
                    break;

                case PremiumLimitTypeChatFilterCount:
                    iconValue    = Icons.FolderFilled;
                    freeValue    = Strings.Resources.LimitReachedFolders;
                    lockedValue  = Strings.Resources.LimitReachedFoldersLocked;
                    premiumValue = Strings.Resources.LimitReachedFoldersPremium;
                    break;

                case PremiumLimitTypeCreatedPublicChatCount:
                    iconValue    = Icons.LinkFilled;
                    freeValue    = Strings.Resources.LimitReachedPublicLinks;
                    lockedValue  = Strings.Resources.LimitReachedPublicLinksLocked;
                    premiumValue = Strings.Resources.LimitReachedPublicLinksPremium;
                    break;

                case PremiumLimitTypePinnedArchivedChatCount:
                case PremiumLimitTypePinnedChatCount:
                    iconValue    = Icons.PinFilled;
                    freeValue    = Strings.Resources.LimitReachedPinDialogs;
                    lockedValue  = Strings.Resources.LimitReachedPinDialogsLocked;
                    premiumValue = Strings.Resources.LimitReachedPinDialogsPremium;
                    break;

                case PremiumLimitTypeSupergroupCount:
                    iconValue    = Icons.PeopleFilled;
                    freeValue    = Strings.Resources.LimitReachedCommunities;
                    lockedValue  = Strings.Resources.LimitReachedCommunitiesLocked;
                    premiumValue = Strings.Resources.LimitReachedCommunitiesPremium;
                    break;

                case PremiumLimitTypeConnectedAccounts:
                    iconValue    = Icons.PersonFilled;
                    freeValue    = Strings.Resources.LimitReachedAccounts;
                    lockedValue  = Strings.Resources.LimitReachedAccountsPremium;
                    premiumValue = Strings.Resources.LimitReachedAccountsPremium;

                    animatedValue = new Uri("ms-appx:///Assets/Animations/AddOne.json");
                    break;
                }

                if (protoService.IsPremium)
                {
                    TextBlockHelper.SetMarkdown(Subtitle, string.Format(premiumValue, limit.PremiumValue));

                    Icon.Text  = iconValue;
                    Limit.Text = limit.PremiumValue.ToString();
                    LimitBubble.CornerRadius        = new CornerRadius(14, 14, 0, 14);
                    LimitHeader.HorizontalAlignment = HorizontalAlignment.Right;

                    PrevArrow.Visibility = Visibility.Collapsed;

                    PrevLimit.Text = limit.DefaultValue.ToString();
                    NextLimit.Text = string.Empty;

                    PurchaseIcon.ColorReplacements = new Dictionary <int, int>
                    {
                        { 0x000000, 0xffffff }
                    };

                    PurchaseIcon.Source = animatedValue;
                    PurchaseLabel.Text  = Strings.Resources.IncreaseLimit;
                }
                else if (protoService.IsPremiumAvailable)
                {
                    TextBlockHelper.SetMarkdown(Subtitle, string.Format(freeValue, limit.DefaultValue, limit.PremiumValue));

                    Icon.Text  = iconValue;
                    Limit.Text = limit.DefaultValue.ToString();
                    LimitBubble.CornerRadius        = new CornerRadius(14, 14, 14, 14);
                    LimitHeader.HorizontalAlignment = HorizontalAlignment.Center;

                    NextArrow.Visibility = Visibility.Collapsed;

                    PrevLimit.Text = string.Empty;
                    NextLimit.Text = limit.PremiumValue.ToString();

                    PurchaseIcon.ColorReplacements = new Dictionary <int, int>
                    {
                        { 0x000000, 0xffffff }
                    };

                    PurchaseIcon.Source = animatedValue;
                    PurchaseLabel.Text  = Strings.Resources.IncreaseLimit;
                }
                else
                {
                    TextBlockHelper.SetMarkdown(Subtitle, string.Format(lockedValue, limit.DefaultValue));

                    LimitHeader.Visibility = Visibility.Collapsed;
                    LimitPanel.Visibility  = Visibility.Collapsed;

                    PurchaseCommand.Style   = App.Current.Resources["AccentButtonStyle"] as Style;
                    PurchaseIcon.Visibility = Visibility.Collapsed;
                    PurchaseLabel.Text      = Strings.Resources.OK;
                }
            }
        }
Exemplo n.º 5
0
        public LimitReachedPopup(INavigationService navigationService, IProtoService protoService, PremiumLimitType type)
        {
            _navigationService = navigationService;
            _protoService      = protoService;

            InitializeComponent();
            InitializeLimit(protoService, type);

            Title = Strings.Resources.LimitReached;
        }
Exemplo n.º 6
0
 static Task <BaseObject> CreateLimit(PremiumLimitType type, long value)
 {
     return(Task.FromResult <BaseObject>(new PremiumLimit(type, (int)value, (int)value)));
 }