示例#1
0
        public SettingsRequirementViewModel GetSettingsRequirement()
        {
            if (this.EnableDisablePatreonBenefitToggleSwitch.IsChecked.GetValueOrDefault() && this.PatreonBenefitComboBox.SelectedIndex < 0)
            {
                return(null);
            }

            SettingsRequirementViewModel settings = new SettingsRequirementViewModel();

            if (ChannelSession.Settings.DeleteChatCommandsWhenRun)
            {
                settings.DontDeleteChatCommandWhenRun = this.DeleteChatCommandWhenRunToggleSwitch.IsChecked.GetValueOrDefault();
            }
            else
            {
                settings.DeleteChatCommandWhenRun = this.DeleteChatCommandWhenRunToggleSwitch.IsChecked.GetValueOrDefault();
            }

            if (this.EnableDisablePatreonBenefitToggleSwitch.IsChecked.GetValueOrDefault())
            {
                PatreonBenefit benefit = (PatreonBenefit)this.PatreonBenefitComboBox.SelectedItem;
                settings.PatreonBenefitIDRequirement = benefit.ID;
            }

            settings.ShowOnChatMenu = this.ShowOnChatMenuToggleSwitch.IsChecked.GetValueOrDefault();

            return(settings);
        }
示例#2
0
        public override Task <Result> Validate(CommandParametersModel parameters)
        {
            if (!parameters.User.HasPermissionsTo(this.Role))
            {
                if (!string.IsNullOrEmpty(this.PatreonBenefitID) && ChannelSession.Services.Patreon.IsConnected)
                {
                    PatreonBenefit benefit = ChannelSession.Services.Patreon.Campaign.GetBenefit(this.PatreonBenefitID);
                    if (benefit != null)
                    {
                        PatreonTier tier = parameters.User.PatreonTier;
                        if (tier != null && tier.BenefitIDs.Contains(benefit.ID))
                        {
                            return(Task.FromResult(new Result()));
                        }
                    }
                }

                return(Task.FromResult(this.CreateErrorMessage(parameters)));
            }

            if (this.Role == UserRoleEnum.Subscriber && !parameters.User.ExceedsPermissions(this.Role))
            {
                if (parameters.User.SubscribeTier < this.SubscriberTier)
                {
                    return(Task.FromResult(this.CreateErrorMessage(parameters)));
                }
            }

            return(Task.FromResult(new Result()));
        }
        public override async Task <bool> Validate(UserViewModel user)
        {
            if (!user.HasPermissionsTo(this.Role))
            {
                if (!string.IsNullOrEmpty(this.PatreonBenefitID) && ChannelSession.Services.Patreon.IsConnected)
                {
                    PatreonBenefit benefit = ChannelSession.Services.Patreon.Campaign.GetBenefit(this.PatreonBenefitID);
                    if (benefit != null)
                    {
                        PatreonTier tier = user.PatreonTier;
                        if (tier != null && tier.BenefitIDs.Contains(benefit.ID))
                        {
                            return(true);
                        }
                    }
                }
                await this.SendErrorMessage();

                return(false);
            }

            if (this.Role == UserRoleEnum.Subscriber && !user.ExceedsPermissions(this.Role))
            {
                if (user.SubscribeTier < this.SubscriberTier)
                {
                    await this.SendErrorMessage();

                    return(false);
                }
            }
            return(true);
        }
示例#4
0
 public bool DoesMeetRequirement(UserViewModel user)
 {
     if (!string.IsNullOrEmpty(this.PatreonBenefitIDRequirement) && !user.HasPermissionsTo(MixerRoleEnum.Mod))
     {
         PatreonBenefit benefit = ChannelSession.Services.Patreon.Campaign.GetBenefit(this.PatreonBenefitIDRequirement);
         if (benefit != null)
         {
             PatreonTier tier = user.PatreonTier;
             return(tier != null && tier.BenefitIDs.Contains(benefit.ID));
         }
     }
     return(true);
 }
示例#5
0
 public RoleRequirementViewModel(RoleRequirementModel requirement)
 {
     this.SelectedRole   = requirement.Role;
     this.SubscriberTier = requirement.SubscriberTier;
     if (this.IsPatreonConnected && !string.IsNullOrEmpty(requirement.PatreonBenefitID))
     {
         this.SelectedPatreonBenefit = this.PatreonBenefits.FirstOrDefault(b => b.ID.Equals(requirement.PatreonBenefitID));
         if (this.SelectedPatreonBenefit == null)
         {
             this.SelectedPatreonBenefit = RoleRequirementViewModel.NonePatreonBenefit;
         }
     }
 }
示例#6
0
 public async Task SendSettingsNotMetWhisper(UserViewModel user)
 {
     if (!string.IsNullOrEmpty(this.PatreonBenefitIDRequirement))
     {
         PatreonBenefit benefit = ChannelSession.Services.Patreon.Campaign.GetBenefit(this.PatreonBenefitIDRequirement);
         if (benefit != null)
         {
             if (ChannelSession.Chat != null)
             {
                 await ChannelSession.Chat.Whisper(user.UserName, string.Format("You must have the {0} Patreon Benefit to do this", benefit.Title));
             }
         }
     }
 }
示例#7
0
        public async Task <PatreonCampaign> GetCampaign()
        {
            PatreonCampaign campaign = null;

            try
            {
                JObject jobj = await this.GetAsync <JObject>("campaigns?include=tiers,benefits,tiers.benefits&fields%5Bcampaign%5D=created_at,creation_name,patron_count,published_at&fields%5Btier%5D=amount_cents,description,created_at,patron_count,title,image_url,published,published_at&fields%5Bbenefit%5D=title,benefit_type,rule_type,created_at,is_deleted,is_published");

                if (jobj != null && jobj.ContainsKey("data"))
                {
                    JArray  dataArray = (JArray)jobj["data"];
                    JObject data      = (JObject)dataArray.First;
                    if (data != null && data.ContainsKey("attributes"))
                    {
                        JObject attributes = (JObject)data["attributes"];
                        campaign    = attributes.ToObject <PatreonCampaign>();
                        campaign.ID = data["id"].ToString();
                    }

                    if (campaign != null && jobj.ContainsKey("included"))
                    {
                        JArray includedArray = (JArray)jobj["included"];
                        foreach (JObject included in includedArray)
                        {
                            if (included.ContainsKey("id") && int.TryParse(included["id"].ToString(), out int id) && id > 0)
                            {
                                if (included.ContainsKey("attributes"))
                                {
                                    JObject attributes = (JObject)included["attributes"];
                                    if (included.ContainsKey("type") && included["type"].ToString().Equals("tier"))
                                    {
                                        PatreonTier tier = attributes.ToObject <PatreonTier>();
                                        tier.ID = id.ToString();
                                        campaign.Tiers[tier.ID] = tier;

                                        if (included.ContainsKey("relationships"))
                                        {
                                            JObject relationships = (JObject)included["relationships"];
                                            if (relationships.ContainsKey("benefits"))
                                            {
                                                JObject benefits = (JObject)relationships["benefits"];
                                                if (benefits.ContainsKey("data"))
                                                {
                                                    JArray benefitsDataArray = (JArray)benefits["data"];
                                                    foreach (JObject benefitData in benefitsDataArray)
                                                    {
                                                        tier.BenefitIDs.Add(benefitData["id"].ToString());
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    else if (included.ContainsKey("type") && included["type"].ToString().Equals("benefit"))
                                    {
                                        PatreonBenefit benefit = attributes.ToObject <PatreonBenefit>();
                                        benefit.ID = id.ToString();
                                        campaign.Benefits[benefit.ID] = benefit;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MixItUp.Base.Util.Logger.Log(ex);
                return(null);
            }
            return(campaign);
        }