public UserInventoryEditorControl(UserInventoryViewModel inventory, UserInventoryDataViewModel inventoryData) { this.inventory = inventory; this.inventoryData = inventoryData; InitializeComponent(); this.Loaded += UserInventoryEditorControl_Loaded; this.DataContext = this.inventory; }
private async Task RefreshData() { this.DataContext = null; await this.user.RefreshDetails(force : true); this.CurrencyRankStackPanel.Children.Clear(); foreach (UserCurrencyViewModel currency in ChannelSession.Settings.Currencies.Values.ToList()) { UserCurrencyDataViewModel currencyData = this.user.Data.GetCurrency(currency); this.CurrencyRankStackPanel.Children.Add(new UserCurrencyIndividualEditorControl(currencyData)); } this.InventoryStackPanel.Children.Clear(); foreach (UserInventoryViewModel inventory in ChannelSession.Settings.Inventories.Values.ToList()) { UserInventoryDataViewModel inventoryData = this.user.Data.GetInventory(inventory); this.InventoryStackPanel.Children.Add(new UserInventoryEditorControl(inventory, inventoryData)); } this.UserOnlyChatCommandsListView.Visibility = Visibility.Collapsed; this.userOnlyCommands.Clear(); if (this.user.Data.CustomCommands.Count > 0) { this.UserOnlyChatCommandsListView.Visibility = Visibility.Visible; foreach (ChatCommand command in this.user.Data.CustomCommands) { this.userOnlyCommands.Add(command); } } if (this.user.Data.EntranceCommand != null) { this.NewEntranceCommandButton.Visibility = Visibility.Collapsed; this.ExistingEntranceCommandButtons.Visibility = Visibility.Visible; this.ExistingEntranceCommandButtons.DataContext = this.user.Data.EntranceCommand; } else { this.NewEntranceCommandButton.Visibility = Visibility.Visible; this.ExistingEntranceCommandButtons.Visibility = Visibility.Collapsed; } if (ChannelSession.Services.Patreon != null) { this.PatreonUserComboBox.IsEnabled = true; this.PatreonUserComboBox.ItemsSource = ChannelSession.Services.Patreon.CampaignMembers; this.PatreonUserComboBox.SelectedItem = this.user.PatreonUser; } this.DataContext = this.user; }
public UserCurrencyIndividualEditorControl(UserInventoryItemViewModel inventoryItem, UserInventoryDataViewModel inventoryData) : this() { this.inventoryItem = inventoryItem; this.inventoryData = inventoryData; }
private async Task HandleUserSpecialIdentifiers(UserViewModel user, string identifierHeader) { if (user != null && this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader)) { await user.RefreshDetails(); if (ChannelSession.Settings.UserData.ContainsKey(user.ID)) { UserDataViewModel userData = ChannelSession.Settings.UserData[user.ID]; foreach (UserCurrencyViewModel currency in ChannelSession.Settings.Currencies.Values.OrderByDescending(c => c.UserAmountSpecialIdentifier)) { UserCurrencyDataViewModel currencyData = userData.GetCurrency(currency); UserRankViewModel rank = currencyData.GetRank(); UserRankViewModel nextRank = currencyData.GetNextRank(); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserRankNextNameSpecialIdentifier, nextRank.Name); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserAmountNextSpecialIdentifier, nextRank.MinimumPoints.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserRankNameSpecialIdentifier, rank.Name); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserAmountSpecialIdentifier, currencyData.Amount.ToString()); } foreach (UserInventoryViewModel inventory in ChannelSession.Settings.Inventories.Values.OrderByDescending(c => c.UserAmountSpecialIdentifierHeader)) { if (this.ContainsSpecialIdentifier(identifierHeader + inventory.UserAmountSpecialIdentifierHeader)) { UserInventoryDataViewModel inventoryData = userData.GetInventory(inventory); List <string> allItemsList = new List <string>(); foreach (UserInventoryItemViewModel item in inventory.Items.Values.OrderByDescending(i => i.Name)) { int amount = inventoryData.GetAmount(item); if (amount > 0) { allItemsList.Add(item.Name + " x" + amount); } string itemSpecialIdentifier = identifierHeader + inventory.UserAmountSpecialIdentifierHeader + item.SpecialIdentifier; this.ReplaceSpecialIdentifier(itemSpecialIdentifier, amount.ToString()); } if (allItemsList.Count > 0) { this.ReplaceSpecialIdentifier(identifierHeader + inventory.UserAllAmountSpecialIdentifier, string.Join(", ", allItemsList.OrderBy(i => i))); } else { this.ReplaceSpecialIdentifier(identifierHeader + inventory.UserAllAmountSpecialIdentifier, "Nothing"); } } } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "time", userData.ViewingTimeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "hours", userData.ViewingHoursString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "mins", userData.ViewingMinutesString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "moderationstrikes", userData.ModerationStrikes.ToString()); } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "primaryrole", user.PrimaryRoleString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "avatar", user.AvatarLink); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "url", "https://www.mixer.com/" + user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "name", user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "id", user.ID.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "sparks", user.Sparks.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "mixerage", user.MixerAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followage", user.FollowAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "subage", user.MixerSubscribeAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "submonths", user.SubscribeMonths.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "title", user.Title); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionnext", user.FanProgression?.level?.nextLevelXp.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionrank", user.FanProgression?.level?.level.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressioncolor", user.FanProgression?.level?.color?.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionimage", user.FanProgression?.level?.LargeGIFAssetURL?.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogression", user.FanProgression?.level?.currentXp.ToString()); if (this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers") || this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game") || this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channel")) { ExpandedChannelModel channel = await ChannelSession.Connection.GetChannel(user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers", channel?.numFollowers.ToString() ?? "0"); if (channel.type != null) { this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "gameimage", channel.type.coverUrl); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game", channel.type.name.ToString()); } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channelid", channel.id.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channellive", channel.online.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channelfeatured", channel.featured.ToString()); } } }
public static InventoryAmount InventoryAmountFromUserInventoryViewModel(UserInventoryViewModel inventory, UserInventoryDataViewModel inventoryData) { return(new InventoryAmount { ID = inventory.ID, Name = inventory.Name, Items = inventoryData.Amounts.Select(kvp => new InventoryItemAmount() { Name = kvp.Key, Amount = kvp.Value }).ToList(), }); }