Started working on reworking of event system for changed channel data

This commit is contained in:
Enrico Ludwig 2024-08-27 20:02:12 +02:00
parent d0662351d7
commit c236dabb0e
3 changed files with 35 additions and 9 deletions

View File

@ -0,0 +1,16 @@
using System;
namespace BetterRaid.Events;
public class ChannelDataChangedEventArgs : EventArgs
{
public static ChannelDataChangedEventArgs FromViewerCount(int old, int now)
{
return new ChannelDataChangedEventArgs();
}
public static ChannelDataChangedEventArgs FromIsLive(bool old, bool now)
{
return new ChannelDataChangedEventArgs();
}
}

View File

@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using Avalonia.Media;
using Avalonia.Threading;
using BetterRaid.Events;
using BetterRaid.Models;
using TwitchLib.Api.Helix.Models.Raids.StartRaid;
using TwitchLib.Api.Helix.Models.Search;
@ -34,6 +35,8 @@ public class RaidButtonViewModel : ViewModelBase
public DateTime? LastRaided => MainVm?.Database?.GetLastRaided(ChannelName);
public event EventHandler<ChannelDataChangedEventArgs>? ChannelDataChanged;
public RaidButtonViewModel(string channelName)
{
ChannelName = channelName;
@ -161,6 +164,20 @@ public class RaidButtonViewModel : ViewModelBase
private void OnChannelDataChanged(object? sender, PropertyChangedEventArgs e)
{
OnPropertyChanged(nameof(Channel));
switch (e.PropertyName)
{
case "IsLive":
OnChannelDataChanged(ChannelDataChangedEventArgs.FromIsLive(false, true));
break;
case "ViewerCount":
OnChannelDataChanged(ChannelDataChangedEventArgs.FromViewerCount(0, 10));
break;
}
}
private void OnChannelDataChanged(ChannelDataChangedEventArgs args)
{
ChannelDataChanged?.Invoke(this, args);
}
}

View File

@ -69,7 +69,7 @@ public partial class MainWindow : Window
foreach (var rbvm in _raidButtonVMs)
{
rbvm.PropertyChanged -= OnRaidButtonViewModelChanged;
}
_raidButtonVMs.Clear();
@ -89,8 +89,6 @@ public partial class MainWindow : Window
MainVm = vm
};
rbvm.PropertyChanged += OnRaidButtonViewModelChanged;
_raidButtonVMs.Add(rbvm);
}
@ -100,11 +98,6 @@ public partial class MainWindow : Window
}
}
private void OnRaidButtonViewModelChanged(object? sender, PropertyChangedEventArgs e)
{
}
private void GenerateRaidGrid()
{
foreach (var child in raidGrid.Children)