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); }
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); }
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); }
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; } } }
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)); } } } }
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); }